XML-документ в общем случае представляет собой файл с расширением XML, имеющий текстовое наполнение. Исходя из этого можно сказать, что самым простейшим редактором таких документов может служить Блокнот (Notepad), хотя существует довольно большое количество специализированных редакторов.
XML-документы по сравнению с обычными текстовыми документами имеют следующие отличительные черты:
При необходимости произвести обмен данными посредством XML-документов:
Следует отметить, что, рассматривая особенности механизмов, позволяющих работать с XML-документами из «1С:Предприятия», мы в дальнейшем не будем подробно касаться таких понятий, как пространство имен (описанное в нем пространство типов), схема XML-документа. Но необходимо отдавать себе отчет в том, что при организации обмена с произвольными информационными системами понадобится более детальная работа с ними.
Перейдем к рассмотрению структуры и общих принципов формирования XML-документов.
При рассмотрении внутреннего наполнения XML-документов в них можно выделить определенные форматирующие конструкции. По аналогии с HTML их можно назвать тегами. Под тегом будем понимать некое выражение, заключенное в угловые скобки <выражение>.
Различают открывающий тег <тег> и закрывающий тег </тег>. В отличие от языка HTML, в языке XML имена тегов не фиксированы, разработчик волен давать им собственные имена, определять у них произвольные свойства с любыми типами значений. В имени тега XML могут использоваться точки (правда, это может не поддерживаться рядом специализированных редакторов). В содержимом атрибутов, элементов пробелы и символы табуляции не игнорируются.
Перейдем от термина «тег» к терминам более правильным по отношению к XML-документу. Можно сказать, что минимальной логической единицей XML-документа является элемент. У элемента может быть определено несколько атрибутов (упрощенно атрибут можно назвать свойством элемента). У любого элемента может быть один (непосредственный) элемент-владелец (его нет только у единственного корневого элемента XML-документа) и любое количество подчиненных элементов (рис. 6.2).
Рис. 6.2. Пример иерархии элементов XML
Следует отметить, что в различной литературе используемая терминология может различаться. То, что в данной главе называется элементом, может называться узлом. В используемой нами терминологии понятие «узел» также встречается, но под ним понимается структурная часть элемента XML (такая как начало элемента, текст и т. д.).
Рассмотрим структуру элемента XML (рис. 6.3).
Рис. 6.3. Схема элемента XML
Пример, иллюстрирующий приведенную схему, приведен в листинге 6.40.
Листинг 6.40. Пример элемента XML
<Товар ИмяСправочника = «Номенклатура» Код = «14»>Ardo TL 1000 EX-1</Товар>
В данной строке определен элемент с именем Товар. В начале элемента определяются два атрибута с именами ИмяСправочника и Код (соответственно со значениями Номенклатура и 14). Между началом элемента и его концом (</Товар>) расположен текст элемента (его значение Ardo TL 1000 EX-1). Вместо текста между тегами, описывающими начало и конец элемента, может находиться описание вложенных элементов.
Также допускается следующий вариант определения элемента XML-документа (рис. 6.4).
Рис. 6.4. Схема элемента XML
Приведенная схема представляет следующий вариант описания элемента (листинг 6.41).
Листинг 6.41. Пример элемента XML
<Товар Код = «14» Наименование = «Ardo TL 1000 EX-1»/>
Данный вариант допустим, когда между открывающим и закрывающим тегом нет текста и нет вложенных элементов. Поэтому вместо <Товар></Товар> допустима конструкция <Товар/>. В приведенном описании определяются элемент с именем Товар и два атрибута с именами Код и Наименование.
Рассмотрим пример XML-документа (листинг 6.42).
Листинг 6.42. Пример XML-документа
<?xml version="1.0" encoding="UTF-8" ?>
<Корневой>
<DocumentObject.ПриходнаяНакладная>
<Ref>4c0a4c73-905d-11d8-92a4-00030d0ca645</Ref>
<DeletionMark>false</DeletionMark>
<Date>2020-01-17T14:52:43</Date>
<Number>000000001</Number>
<Posted>true</Posted>
<Контрагент>4c0a4c72-905d-11d8-92a4-00030d0ca645</Контрагент>
<Товары>
<Row>
<Номенклатура>efbfeaf4-831d-11d8-957e-00c026abdd5e</Номенклатура>
<Количество>10</Количество>
<Цена>900</Цена>
<Сумма>1000</Сумма>
</Row>
<Row>
<Номенклатура>efbfeaf6-831d-11d8-957e-00c026abdd5e</Номенклатура>
<Количество>10</Количество>
<Цена>1000</Цена>
<Сумма>10000</Сумма>
</Row>
</Товары>
</DocumentObject.ПриходнаяНакладная>
</Корневой>
В первой строке XML-документа определяется директива, указывающая на то, что данный документ с текстовым содержимым является XML-документом. Далее определяется элемент Корневой. Внутри него определяются другие элементы. Можно сказать, что в данном документе просматривается определенная древовидная структура (она показана на рис. 6.5).
Рис. 6.5. Древовидная структура XML-документа
Эта структура обеспечивается тем, что у XML-документа всегда один корневой элемент, описание одного элемента всегда находится внутри описания другого элемента (исключение составляет корневой элемент). Можно сказать, что древовидность структуры является обязательным признаком правильности оформленного XML-документа.
При рассмотрении любого XML-документа можно говорить о его синтаксической правильности и корректности.
Синтаксически правильный XML-документ, упрощенно, удовлетворяет следующим условиям: