I. Коротко об XML¶
XML ( англ. eXtensible Markup Language) — расширяемый язык разметки, предназначенный для хранения и передачи данных.
Простейший XML-документ выглядит следующим образом:
Первая строка — это XML декларация. Здесь определяется версия XML (1.0) и кодировка файла. На следующей строке описывается корневой элемент документа <book> (открывающий тег). Следующие 4 строки описывают дочерние элементы корневого элемента ( title , author , year , price ). Последняя строка определяет конец корневого элемента </book> (закрывающий тег).
Документ XML состоит из элементов (elements). Элемент начинается открывающим тегом (start-tag) в угловых скобках, затем идет содержимое (content) элемента, после него записывается закрывающий тег (end-teg) в угловых скобках.
Информация, заключенная между тегами, называется содержимым или значением элемента: <author>Erik T. Ray</author> . Т.е. элемент author принимает значение Erik T. Ray . Элементы могут вообще не принимать значения.
Элементы могут содержать атрибуты, так, например, открывающий тег <title lang="en"> имеет атрибут lang , который принимает значение en . Значения атрибутов заключаются в кавычки (двойные или ординарные).
Некоторые элементы, не содержащие значений, допустимо записывать без закрывающего тега. В таком случае символ / ставится в конце открывающего тега:
Структура XML¶
XML документ должен содержать корневой элемент. Этот элемент является «родительским» для всех других элементов.
Все элементы в XML документе формируют иерархическое дерево. Это дерево начинается с корневого элемента и разветвляется на более низкие уровни элементов.
Все элементы могут иметь подэлементы (дочерние элементы):
Правила синтаксиса (Валидность)¶
Структура XML документа должна соответствовать определенным правилам. XML документ отвечающий этим правилам называется валидным (англ. Valid — правильный) или синтаксически верным. Соответственно, если документ не отвечает правилам, он является невалидным .
Основные правила синтаксиса XML:
- Теги XML регистрозависимы — теги XML являются регистрозависимыми. Так, тег <Letter> не то же самое, что тег <letter> .
Открывающий и закрывающий теги должны определяться в одном регистре:
- XML элементы должны соблюдать корректную вложенность:
- У XML документа должен быть корневой элемент — XML документ должен содержать один элемент, который будет родительским для всех других элементов. Он называется корневым элементом.
- Значения XML атрибутов должны заключаться в кавычки:
Сущности¶
Некоторые символы в XML имеют особые значения и являются служебными. Если вы поместите, например, символ < внутри XML элемента, то будет сгенерирована ошибка, так как парсер интерпретирует его, как начало нового элемента.
В примере ниже будет сгенерирована ошибка, так как в значении "ООО<Мосавтогруз>" атрибута НаимОрг содержатся символы < и > .
Также ошибка будет сгенерирована и в слудющем примере, если название организации взять в обычные кавычки (английские двойные):
Чтобы ошибки не возникали, нужно заменить символ < на его сущность. В XML существует 5 предопределенных сущностей:
| Сущность | Символ | Значение |
|---|---|---|
| < | < | меньше, чем |
| > | > | больше, чем |
| & | & | амперсанд |
| ' | ‘ | апостроф |
| " | " | кавычки |
Только символы < и & строго запрещены в XML. Символ > допустим, но лучше его всегда заменять на сущность.
Таким образом, корректными будут следующие формы записей:
В последнем примере английские двойные кавычки заменены на французские кавычки («ёлочки»), которые не являются служебными символами.
Поиск информации в XML файлах (XPath)¶
XPath ( англ. XML Path Language) — язык запросов к элементам XML-документа. XPath расширяет возможности работы с XML.
XML имеет древовидную структуру. В документе всегда имеется корневой элемент (инструкция <?xml version=”1.0”?> к дереву отношения не имеет). У элемента дерева всегда существуют потомки и предки, кроме корневого элемента, у которого предков нет, а также тупиковых элементов (листьев дерева), у которых нет потомков. Каждый элемент дерева находится на определенном уровне вложенности (далее — «уровень»). У элементов на одном уровне бывают предыдущие и следующие элементы.
Это очень похоже на организацию каталогов в файловой системе, и строки XPath, фактически, — пути к «файлам» — элементам. Рассмотрим пример списка книг:
XPath запрос /bookstore/book/price вернет следующий результат:
Сокращенная форма этого запроса выглядит так: //price .
С помощью XPath запросов можно искать информацию по атрибутам. Например, можно найти информацию о книге на итальянском языке: //title[@lang="it"] вернет <title lang="it">Everyday Italian</title> .
Чтобы получить больше информации, необходимо модифицировать запрос //book[title[@lang="it"]] вернет:
В приведенной ниже таблице представлены некоторые выражения XPath и результат их работы:
| Выражение XPath | Результат |
|---|---|
| /bookstore/book[1] | Выбирает первый элемент book , который является потомком элемента bookstore |
| /bookstore/book[position()<3] | Выбирает первые два элемента book , которые являются потомками элемента bookstore |
| //title[@lang] | Выбирает все элементы title с атрибутом lang |
| //title[@lang=’en’] | Выбирает все элементы title с атрибутом lang , который имеет значение en |
| /bookstore/book[price>35.00] | Выбирает все элементы book , которые являются потомками элемента bookstore и которые содержать элемент price со значением больше 35.00 |
| /bookstore/book[price>35.00]/title | Выбирает все элементы title элементов book элементов bookstore , которые содержать элемент price со значением больше 35.00 |
Кодировки¶
И еще один важный момент, который стоит рассмотреть — кодировки. Существует множество кодировок, о них подробнее можно прочитать в статье Набор символов.
Самыми распространенными кириллическими кодировками являются Windows-1251 и UTF-8 . Последняя является одним из стандартов, но большая часть ФНС отчетности имеет кодировку Windows-1251 .
В XML файле кодировка объявляется в декларации:
Часто можно столкнуться с ситуацией, когда текстовый редаткор некорректно распознает кодировку и отображает кракозябры. В такой случае, необходимо выбрать кодировку вручную, для этого выполните:
| Программа | Кодировка |
|---|---|
| Notepad++ | «Документ → Кодировка» |
| Geany | «Документ → Установить кодировку» |
| Firefox | «Вид → Кодировка» |
| Chrome | «Настройка → Дополнительные инструменты → Кодировка» |
В большинстве случаев при работе с русскоязычными файлами помогает переключение кодировки на Windows-1251 или UTF-8 . Если все равно не удается прочитать содержимое XML документа, стоит открыть его в Mozilla Firefox, он отлично распознает кодировки.
Если ничего не помогает, вполне возможно, что файл был поврежден.
XSD схема¶
XML Schema — язык описания структуры XML-документа, его также называют XSD. Как большинство языков описания XML, XML Schema была задумана для определения правил, которым должен подчиняться документ. Но, в отличие от других языков, XML Schema была разработана так, чтобы её можно было использовать в создании программного обеспечения для обработки документов XML.
После проверки документа на соответствие XML Schema читающая программа может создать модель данных документа, которая включает:
- словарь (названия элементов и атрибутов);
- модель содержания (отношения между элементами и атрибутами и их структура);
- типы данных.
Каждый элемент в этой модели ассоциируется с определённым типом данных, позволяя строить в памяти объект, соответствующий структуре XML-документа. Языкам объектно-ориентированного программирования гораздо легче иметь дело с таким объектом, чем с текстовым файлом.
Приложение 1. Технические требования к формированию описания формата и структуры электронного вида документа
1. Описание формата и структуры электронного вида документа приводится с указанием имен, идентификаторов, версий, полного структурированного перечня реквизитов с определением типа данных и множественности для каждого реквизита.
2. Описание формата и структуры электронного вида документа должно содержать в своем составе следующие сведения:
общие сведения о структуре документа;
сведения об импортируемых пространствах имен;
описание реквизитного состава документа;
сведения о базовых и простых типах данных, используемых в структуре документа.
3. Общие сведения о структуре документа приводятся в табличной форме согласно следующему образцу:
Идентификатор пространства имен
Корневой элемент XML-документа
Имя файла XML-схемы
тестовый документ по уплате таможенных пошлин, налогов, специальных, антидемпинговых, компенсационных пошлин
Идентификатор пространства имен
Корневой элемент XML-документа
Имя файла XML-схемы
4. Сведения об импортируемых пространствах имен приводятся в табличной форме согласно следующему образцу:
Идентификатор пространства имен
Идентификатор пространства имен
5. Описание реквизитного состава документа приводится в табличном виде с учетом уровней иерархии вплоть до простых (атомарных) реквизитов и атрибутов. При оформлении строк таблицы с реквизитным составом структуры документа боковик имеет смещенную вправо линейку для обозначения следующего уровня древовидной структуры. В боковике указывается порядковый номер и имя реквизита структуры документа.
В таблице формируются следующие поля (графы):
«имя реквизита» — иерархический номер реквизита (для атрибутов используются буквы русского алфавита), устоявшееся или официальное словесное обозначение реквизита, имя конструкции UML (для реквизитов с указанием префикса пространства имен);
«описание реквизита» — текст, поясняющий прикладной смысл реквизита;
«идентификатор» — идентификатор элемента данных в модели данных, соответствующего реквизиту;
«тип данных» — идентификатор типа данных в модели данных, соответствующего реквизиту;
«мн.» — множественность реквизитов (обязательность (опциональность) и количество возможных повторений реквизита).
Структура электронного документа
Документом называется структурированная совокупность информации, предназначенной для восприятия человеком, которая может быть цельным объектом обмена между пользователями и/или информационными системами.
Электронным документом называется документ, зафиксированный на машинном носителе и содержащий идентифицированную информацию, подлинность которой удостоверена электронной цифровой подписью.
Появление термина «электронный документ» связано с интенсивным применением информационных технологий на предприятиях и в организациях и формированием на машинных носителях разнообразной информации: научно-технической, производственной, управленческой и др.
В силу незнания нормативных документов, определяющих статус электронного документа, этим термином часто пользуются при создании электронных копий отчетов, писем, платежных поручений, квитанций, других видов текстовой информации, а также баз данных на машинных носителях.
Согласно Закону РБ от 10.01.2000 № 357-З «Об электронном документе» электронный документ – информация, зафиксированная на машинном носителе и соответствующая требованиям, установленным настоящим Законом.
Машинный носитель – магнитный диск, магнитная лента, лазерный диск и иные материальные носители, используемые для записи и хранения информации с помощью электронно-вычислительной техники.
Основные требования, предъявляемые к электронному документу
Электронный документ должен соответствовать следующим требованиям:
§ создаваться, обрабатываться, передаваться и храниться с помощью программных и технических средств;
§ иметь структуру, установленную Законом РБ от 10.01.2000 № 357-З «Об электронном документе», и содержать реквизиты, позволяющие ее идентифицировать;
§ быть представленным в форме, понятной для восприятия человеком.
Структура электронного документа
Электронный документ состоит из двух неотъемлемых частей – общей и особенной.
Общая часть электронного документа состоит из информации, составляющей содержание документа. Информация об адресате относится к общей части.
Особенная часть электронного документа состоит из одной или нескольких электронных цифровых подписей.
Электронная цифровая подпись (ЭЦП) – набор символов, вырабатываемый средствами электронной цифровой подписи и являющийся неотъемлемой частью электронного документа.
ЭЦП используется физическими и юридическими лицами в качестве аналога собственноручной подписи для придания электронному документу юридической силы, равной юридической силе документа на бумажном носителе, подписанного собственноручно правомочным лицом и скрепленного печатью.
Средства электронной цифровой подписи – программные и технические средства, обеспечивающие выработку и проверку электронной цифровой подписи и имеющие сертификат соответствия или удостоверение о признании сертификата, выданного в Национальной системе сертификации Республики Беларусь.
Для формирования ЭЦП используются средства криптографической защиты информации (СКЗИ), использующие так называемые асимметричные алгоритмы, в которых применяются открытый и личный ключи каждого пользователя.
Личный ключ подписи – набор символов, принадлежащий конкретному лицу и используемый при выработке электронной цифровой подписи.
Открытый ключ проверки подписи – набор символов, доступный для всех заинтересованных лиц и используемый при проверке электронной цифровой подписи.
Карточка открытого ключа проверки подписи – документ на бумажном носителе, содержащий значение открытого ключа проверки подписи и подтверждающий его принадлежность какому-либо физическому или юридическому лицу.
Личный ключ пользователя хранится на машинном носителе в недоступном другим лицам месте, открытый ключ передается всем участникам обмена информацией.
Электронный документ может использоваться во всех сферах деятельности, где применяются программные и технические средства, необходимые для создания, обработки, хранения, передачи и приема информации. С помощью электронных документов могут совершаться сделки (заключаться договоры), производиться расчеты, осуществляться переписка и передача документов и иной информации.
Электронные документы могут пересылаться с помощью любых средств связи, включая информационные системы и сети, если это не противоречит законодательству Республики Беларусь и международным договорам Республики Беларусь.
Электронный документ имеет формы внутреннего и внешнего представления.
Формой внутреннего представления электронного документа является запись информации, составляющей электронный документ, на машинном носителе.
Формой внешнего представления электронного документа является воспроизведение электронного документа на экране дисплея, на бумажном либо ином отделимом от машинного носителя материальном объекте в доступном для визуального обозрения виде (без дополнительных технических приспособлений) и форме, понятной для восприятия человеком.
Закон РБ «Об электронном документе» определяет основные понятия, связанные с юридической силой оригинала и копией электронного документа.
Оригинал электронного документа существует только на машинном носителе. Все экземпляры электронного документа, зафиксированные на машинном носителе и идентичные один другому, являются оригиналами и имеют одинаковую юридическую силу.
В случае, когда одним лицом создаются документ на бумажном носителе и электронный документ, идентичные по содержанию, оба документа признаются самостоятельными документами. В этом случае документ на бумажном носителе не является копией электронного документа.
Копии электронного документа создаются путем удостоверения в установленном законодательством порядке формы внешнего представления электронного документа на бумажном носителе. Копии электронного документа на бумажном носителе должны содержать указание на то, что они являются копиями соответствующего электронного документа.
Удостоверение формы внешнего представления электронного документа на бумажном носителе может осуществляться:
— нотариусом или иным лицом, имеющим право совершать нотариальные действия;
— индивидуальным предпринимателем или юридическим лицом, имеющими в соответствии с законодательством Республики Беларусь право на осуществление такой деятельности.
Воспроизведение электронного документа на ином, кроме бумажного, отделимом от машинного носителя материальном объекте либо его копия на бумажном носителе, надлежащим образом не удостоверенная, не имеют юридической силы копии электронного документа.
Электронный документ на машинном носителе приравнивается к документу на бумажном носителе и имеет одинаковую с ним юридическую силу.
Если законодательством Республики Беларусь требуется, чтобы документ был оформлен письменно либо представлен в письменном виде или письменной форме, то электронный документ считается соответствующим этим требованиям.
Оригиналы электронных документов и их копии на бумажных носителях имеют одинаковую юридическую силу.
Основные вопросы придания юридического статуса электронным документам, а также защиты электронных документов регулируются следующими законодательными актами и нормативными документами Республики Беларусь:
Законом РБ от 10.01.2000 № 357-З «Об электронном документе», который устанавливает юридический статус электронного документа в качестве официального документа, требования к его оформлению, а также права, обязанности и ответственность участников правоотношений, возникающих в сфере обращения электронных документов;
СТБ 1221-2000, который устанавливает единые требования к порядку создания, оперативного обращения и архивного хранения официальных электронных документов независимо от способов обмена, обработки информации и области применения;
СТБ РБ 1176.1-99 «Информационная технология. Защита информации. Процедура хэширования»;
СТБ РБ 1176.2-99 «Информационная технология. Защита информации. Процедуры выработки и проверки электронной цифровой подписи»;
РД РБ 07040.12-3-2004 «Банковские технологии. Технология электронной цифровой подписи. Термины и определения»;
РД РБ 07040.1204-2004 «Банковские технологии. Формат карточки открытого ключа»;
РД РБ 07040.1206-2004 «Банковские технологии. Формат сертификатов открытых ключей и списков отозванных сертификатов» и др.
Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:
Обзор существующих способов описания структуры электронного документа
Как было сказано ранее, одним из свойств электронного документа является структурность, то есть электронные документы, как и многие другие объекты, должны иметь свою структуру. Под данным понятием «структура электронного документа» принято понимать порядок расположения показателей и данных в документе, а также наличие взаимосвязанных элементов, обеспечивающих целостность и эффективность его использования. Однако не всегда получается так, что данные в документе находятся «в порядке», поэтому электронные документы принято подразделять по степени структурированности на:
- - Неструктурированные — текстовые документы, которые или не имеют определенной модели данных, или не организованны определенным способом в соответствии с моделью [17]. К таким документам относятся письма, журнальные статьи, договоры.
- - Слабоструктурированные — документы с гибкой формой, для которых определены некоторые правила и форматы, но в самом общем виде (приказы, распоряжения, служебные записки, счета-фактуры).
- - Структурированные — электронные документы, использующие методы вложенного кодирования, например разметку, для того, чтобы присвоить всему документу и его частям различные структурные значения в соответствии со схемой [18]. Примерами структурированных документов являются заявления, обращения, жалобы, анкеты.
Основной целью большинства пользователей электронных документов на данный момент является превращение неструктурированных данных, хранящихся в документе, в структурированную информацию. Наиболее яркими примерами средств структурирования данных в документах являются такие форматы электронных документов как HTML, SGML и XML:
- - Наиболее развитым является формат гипертекстового языка описания документов Hypertext Markup Language (HTML). Был предназначен для разметки научных документов и их последующего совместного использования сотрудниками разных институтов.
- - Стандартный обобщенный язык разметки Standard Generalized Markup Language (SGML). Представляет собой метаязык, то есть средство формального описания прикладных языков разметки, предназначенных для кодирования структурированных документов.
- - Формат eXtensible Markup Language (XML) представляет собой свод общих синтаксических правил. Целью создания было обеспечение совместимости при передачи структурированных данных между разными системами обработки информации, особенно при передачи таких данных через Интернет.
Рассмотренные средства структурирования документов непосредственно взаимосвязаны друг с другом, так как первоначально язык HTML был всего лишь одним из приложений универсального стандартизированного языка разметки SGML. Другими словами, HTML — набор предписаний SGML, по которым информация подготавливается для WWW. XML, в свою очередь, также имеет отношение к SGML, а именно является его упрощенным подмножеством (см. рис. 1.1):

Рисунок 1.1. Взаимосвязь языков разметки (SGML, HTML, XML)
Далее, для более полного понимания существующих способов описания структуры электронного документа, необходимо рассмотреть данные форматы подробнее.