3.Структура XML-документа 3.1.Состав XML-документа 3.1.1.Описание тэгов документа XML-документ состоит из строк, содержащих тэги и атрибуты, а также их значения.
Реквизиты XML-документа могут быть тэгами или атрибутами.
Тэг является составной частью XML-документа и обычно представляет собой некоторую законченную смысловую единицу. Тэг может содержать один или несколько вложенных тэгов и/или атрибутов.
Атрибут представляет собой именованный параметр тэга определенного типа, задающий его параметры.
Весь XML-документ содержится в корневом тэге . Для декодировки XML-документа необходимо использовать кодировку, указанную в атрибуте тэга– encoding. Например, encoding=”windows-1251” - русская.
Тэг HEADER В таблице 1 приведены атрибуты тэга HEADER.
Здесь и далее в заголовке таблицы:
К – обозначение обязательности заполнения атрибута главным администратором доходов. Он же далее именуется отправителем XML-документа.
С – обозначение обязательности заполнения атрибута Министерством финансов Российской Федерации. Оно же далее именуется получателем XML-документа Возможные обозначения в столбцах «К» и «С»:
«X» – значение не заполняется, но может использоваться при обработке
«+» - значение обязательно для заполнения
«-» - значение необязательно для заполнения При формировании XML-документа ему присваивается глобальный уникальный идентификатор (Global Unique IDentifier = GUID). GUID формируется на основе текущего системного времени, информации о серийных номерах аппаратного обеспечения компьютера, на котором формируется XML-документ и представляет собой цифробуквенную последовательность.
Таблица 1 – Атрибуты тэга HEADER Атрибут
| К
| С
| Наименование атрибута
| Тип данных
| Значение по умолчанию
| NAME
| X
| +
| Имя XML-документа
| STRING(200)
|
| SEND_DATE
| X
| +
| Дата формирования XML-документа
| DATETIME
|
| FORM_CODE
| X
| +
| Код формы
| STRING(3)
|
| SENDER_RUK
| +
| X
| Отправитель XML-документа. ФИО лица, ответственного за предоставленные данные - руководителя
| STRING(200)
|
| SENDER_ISP
| +
| X
| Отправитель XML-документа. ФИО лица, заполнившего предоставленные данные - исполнителя
| STRING(200)
|
| SENDER_CONTACT_DATA
| +
| X
| Данные для связи с исполнителем отправителя
| STRING(300)
|
| GUID
| X
| +
| GUID XML-документа
| STRING(20)
|
| PROGRAM_NAME
| +
| X
| Наименование программы отправителя, с помощью которой был заполнен XML-документ
| STRING(200)
|
| PROGRAM_VERSION
| +
| X
| Версия программы отправителя, с помощью которой был заполнен XML-документ
| STRING(200)
|
| COMMENT
| -
| X
| Произвольный комментарий получателя xml-документа отправителя к информации
| STRING(1000)
|
| REVISION
| +
| X
| Номер версии XML-документа
| NUMERIC(1)
|
| CRC
| +
| X
| Контрольное число
| STRING(100)
|
|
Тэг HEADER может включать 0..n тэгов .
Тэг ATTR Тэг содержит служебную информацию для загрузки. В таблице 2 приведены атрибуты тэга ATTR.
Таблица 2 – Атрибуты тэга ATTR Атрибут
| К
| С
| Наименование атрибута
| Тип данных
| Значение по умолчанию
| ID
| X
| +
| Идентификатор атрибута XML-документа для служебной информации
| NUMERIC(35)
|
| NAME
| X
| +
| Наименование атрибута XML-документа для служебной информации
| STRING(200)
|
| Тэг BODY Данный тэг включает в себя:
… - информация о фиксированных атрибутах XML-документа. Атрибут может быть простым (одно значение), так и многозначным (табличное представление, как в данных).
… - информация о графах XML-документа.
… - информация о строках XML-документа.
… - информация верхней левой ячейке таблицы XML-документа.
… - информация о данных XML-документа.
… - информация о правилах, используемых в XML-документе.
… - информация о справочниках, используемых в XML-документе.
Тэг FIXED_ATTRS Тэг содержит информацию о фиксированных атрибутах XML-документа. Тэг FIXED_ATTRS может включать 0..n тэгов
Тэг ATTR Тэг содержит информацию о фиксированном атрибуте XML-документа. В таблице 3 приведены атрибуты тэга ATTR.
Таблица 3 – Атрибуты тэга ATTR Атрибут
| К
| С
| Наименование атрибута
| Тип данных
| Значение по умолчанию
| ID
| X
| +
| Идентификатор атрибута
| NUMERIC(35)
|
| NAME
| X
| +
| Название атрибута
| STRING(200)
|
| DATATYPE
| X
| +
| Тип данных (перечень типов см. в пункте 3.1.2)
| STRING(20)
|
| IS_EDITABLE
| X
| -
| Флаг доступности для редактирования
| BOOLEAN
| TRUE
| RULE_ID
| X
| -
| Идентификатор правила, применяемого к значению
| NUMERIC(35)
| Не заполняется
| IS_DATA
| X
| -
| Признак того, что атрибут является многозначным (т.е. таблицей). Если атрибут является таблицей, то он содержит тэг <data> data>.
| BOOLEAN
| FALSE
| Тэг COLS Тэг содержит описание граф XML-документа. В таблице 4 приведены атрибуты тэга COLS. Таблица 4 – Атрибуты тэга COLS Атрибут
| К
| С
| Наименование атрибута
| Тип данных
| Значение по умолчанию
| HAS_CODE
| X
| -
| Признак наличия кодов граф
| BOOLEAN
| FALSE
|
Тэг COLS может включать 1..n тэгов .
Тэг COL Тэг содержит описание графы XML-документа. Значение тэга содержит наименование графы в рамках XML-документа. В таблице 5 приведены атрибуты тэга COL. Таблица 5 – Атрибуты тэга COL Атрибут
| К
| С
| Наименование атрибута
| Тип данных
| Значение по умолчанию
| ID
| +
| +
| Идентификатор графы
| NUMERIC(35)
|
| ORDER
| +
| +
| Порядковый номер графы
| NUMERIC(35)
|
| VISIBLE
| -
| -
| Признак видимости графы
| BOOLEAN
| TRUE
| IS_USER
| +
| -
| Признак добавления строки главным администратором доходов
| BOOLEAN
| FALSE
| IS_EDITABLE
| -
| -
| Признак возможности редактирования строки главным администратором доходов
| BOOLEAN
| TRUE
| DATATYPE
| -
| -
| Тип данных (перечень типов см. в пункте 3.1.2)
| STRING(20)
| NUMERIC (35,10)
| CODE
| -
| -
| Код графы (используется, когда HAS_CODE = TRUE у тэга COLS)
| STRING(100)
| Не заполняется
| COLUMNS_TO_MERGE
| -
| -
| Количество граф, с которыми будет объединяться данная графа (объединяются только наименования, используется только когда HAS_CODE = TRUE у тэга COLS)
| BOOLEAN
| Не заполняется
| CAN_ADD_CHILD
| X
| -
| Флаг возможности вставки дочерних граф
| BOOLEAN
| FALSE
|
Иерархия граф должна организовываться следующим образом:
и т.д.
Тэг ROWS Тэг содержит описание строк XML-документа. Значение тэга содержит заголовок для графы с наименованиями строк. В таблице 6 приведены атрибуты тэга ROWS. Таблица 6 – Атрибуты тэга ROWS Атрибут
| К
| С
| Наименование атрибута
| Тип данных
| Значение по умолчанию
| SHOW_HEADER
| X
| -
| Признак отображения наименования заголовков граф для строк
| BOOLEAN
| TRUE
| HAS_CODE
| X
| -
| Признак наличия кодов строк
| BOOLEAN
| FALSE
| CODE_TEXT
| X
| -
| Заголовок для графы с кодами строк
| STRING(300)
| Не заполняется
|
Тэг ROWS может включать 1..n тэгов .
Тэг ROW Тэг содержит описание строки XML-документа. Значение тэга – наименование строки в рамках XML-документа. В таблице 7 приведены атрибуты тэга ROW.
Таблица 7 – Атрибуты тэга ROW Код атрибута
| К
| С
| Наименование атрибута
| Тип данных
| Значение по умолчанию
| ID
| +
| +
| Идентификатор строки
| NUMERIC(35)
|
| ORDER
| +
| +
| Порядковый номер строки
| NUMERIC(35)
|
| VISIBLE
| -
| -
| Признак видимости строки
| BOOLEAN
| TRUE
| IS_USER
| +
| -
| Признак добавления строки главным администратором доходов
| BOOLEAN
| FALSE
| IS_EDITABLE
| -
| -
| Признак возможности редактирования строки главным администратором доходов
| BOOLEAN
| TRUE
| DATATYPE
| -
| -
| Тип данных (перечень типов см. в пункте 3.1.2)
| STRING(20)
| NUMERIC (35,10)
| CODE
| -
| -
| Код строки (и спользуется только когда HAS_CODE = TRUE у тэга ROWS)
| STRING(100)
| Не заполняется
| ROWS_TO_MERGE
| -
| -
| Количество строк, с которыми будет объединяться данная строка (объединяются только наименования, используется только когда HAS_CODE = TRUE у тэга ROWS)
| NUMERIC(35)
| Не заполняется
| CAN_ADD_CHILD
| X
| -
| Флаг возможности вставки дочерних строк
| BOOLEAN
| FALSE
|
Иерархия строк должна организовываться следующим образом:
< ROW - родительский>
< ROW - дочерний>
и т.д.
ROW>
ROW>
Тэг CORNER Тэг содержит текст для отображения в верхней левой ячейке таблицы, не является обязательным.
Тэг DATA Тэг содержит информацию о самих данных XML-документа. В таблице 8 приведены атрибуты тэга DATA. Таблица 8 – Атрибуты тэга DATA Код атрибута
| К
| С
| Наименование атрибута
| Тип данных
| Значение по умолчанию
| DATATYPE
| -
| -
| Тип данных (перечень типов см. в пункте 3.1.2)
| STRING(20)
| NUMERIC (35,10)
|
Тэг DATA может включать 0..n количество тэгов .
Тэг EL Тэг хранит значение элемента данных XML-документа. В таблице 9 приведены атрибуты тэга EL. Таблица 9 – Атрибуты тэга EL Код атрибута
| К
| С
| Наименование атрибута
| Тип данных
| Значение по умолчанию
| COL
| +
| +
| Идентификатор графы
| NUMERIC(35)
|
| ROW
| +
| +
| Идентификатор строки
| NUMERIC(35)
|
| IS_EDITABLE
| -
| -
| Возможность редактирования ячейки
| BOOLEAN
| TRUE
| RULE_ID
| -
| -
| Идентификатор правила применяемого к значению
| NUMERIC(35)
| Пустая строка
| DATATYPE
| -
| -
| Тип данных (перечень типов см. в пункте 3.1.2)
| STRING(20)
| NUMERIC (35,10)
| Тэг RULES Тэг содержит информацию о правилах, применяемых в XML-документе, не является обязательным. Тэг RULES может включать 0..n тэгов .
Тэг RULE Тэг хранит информацию об одном правиле, применяемом в XML-документе. Значение тэга - содержание правила (описание типов правил см. в пункте 3.1.3). В таблице 10 приведены атрибуты тэга RULE. Таблица 10 – Атрибуты тэга RULE Код атрибута
| К
| С
| Наименование атрибута
| Тип данных
| Значение по умолчанию
| ID
| X
| +
| Идентификатор правила
| NUMERIC(35)
|
| TYPE
| X
| -
| Тип правила (перечень типов см. в пункте 3.1.2)
| STRING(40)
| ARITHMETIC
| NAME
| X
| -
| Имя правила
| STRING(200)
| Не заполняется
| SPR_ID
| X
| -
| Идентификатор справочника, на основе которого выполняется правило
| NUMERIC(35)
| Не заполняется
| Тэг SPRS Тэг содержит информацию о справочниках, применяемых в XML-документе. не является обязательным. Тэг SPRS может включать 0..n тэгов .
Тэг SPR Тэг хранит информацию об одном справочнике, применяемом в XML-документе. Значение тэга содержит имя справочника. В таблице 11 приведены атрибуты тэга SPR. Таблица 11 – Атрибуты тэга SPR Код атрибута
| К
| С
| Наименование атрибута
| Тип данных
| Значение по умолчанию
| ID
| X
| +
| Идентификатор справочника
| NUMERIC (35)
|
|
Тэг SPRS может включать 0..n тэгов .
Тэг EL
Тэг хранит информацию об одном элементе справочника. Значение тэга содержит наименование элемента. В таблице 12 приведены атрибуты тэга EL. Таблица 12 – Атрибуты тэга EL Код атрибута
| К
| С
| Наименование атрибута
| Тип данных
| Значение по умолчанию
| ID
| X
| +
| Идентификатор элемента, который подставляется вместо наименования
| NUMERIC (35)
|
| ORDER
| X
| -
| Порядок элемента
| NUMERIC (35)
| Не заполняется
|
Иерархия элементов справочника должна организовываться следующим образом:
< EL - родительский>
< EL - дочерний>
и т.д.
EL >
EL >
3.1.2.Описание типов данных, используемых в XML-документе В XML-документе допустимы следующие типы данных:
STRING – строковые данные. Например, STRING(100) строка длиной не более 100 символов.
NUMERIC – числовые данные. Например, NUMERIC (35,10), число с 25 знаками до запятой и с 10 знаками после запятой.
DATETIME – тип данных дата/время в формате ДД.ММ.ГГГГ ЧЧ:ММ:СС. Время может отсутствовать. Например, 23.02.2010 18:00:00.
BOOLEAN – логический тип данных. Например, 0 = FALSE, 1 = TRUE. При описании атрибутов DATATYPE, IS_USER, IS_EDITABLE, имеет значение, в каком тэге описан атрибут. При этом устанавливается следующий приоритет установки значения (в порядке возрастания):
1)
2)
3)
4)
3.1.3.Описание типов правил, использующихся в XML-документе Правила бывают следующих типов:
1) ARITHMETIC – над ячейками таблицы xml-документа (строками, графами, фиксированными атрибутами) производится арифметическая проверка, при этом адреса ячеек для правила задаются в виде
ROW_ИдентификаторСтроки:COL_ИдентификаторГрафы
или
ATTR_ИдентификаторФиксированногоАтрибута
из Тэг а FIXED_ATTRS, например,
ROW_20:COL_2 = ROW_2:COL_2 + ROW_3:COL_2+ATTR_5.
При этом любую из частей ROW или COL можно опустить, что будет значить, что правило применяется в целом для строки или графы.
В правиле также могут использоваться следующие переменные:
- THIS_SUM – значение конкретной ячейки, к которой применяется правило. При применении этой переменной к тэгам ROW, COL и т.д. правило применяется к каждой ячейке по очереди.
- CHILD_SUM – сумма дочерних элементов строки/графы, например, CHILD_SUM(ROW_0) – сумма дочерних элементов строки 0. Может употребляться только в правилах связанных с тэгами ROW или COL (ROWS или COLS), поэтому суммой дочерних элементов считается сумма значений строк/граф, являющихся дочерними по отношению к строке/графе, к которой применяется правило. Если переменная используется для иных тэгов, то правило в целом должно игнорироваться.
Операнды и результат должны быть типа NUMERIC. 2) REFERENTIAL – значение для тэга, подчиняющегося правилу (те тэги в которых есть атрибут RULE_ID), берется из справочника, который указывается в атрибуте правила SPR_ID тэга RULE. При этом отображаться должны наименования элементов, а записываться в качестве значений идентификаторы элементов справочника.
Значение должно входить в список идентификаторов справочника указанного в правиле. 3) LOGIC – логические правила.
Включают в себя операции логического типа >=, <=, <>(!=), >, <, or, and и открывающие/закрывающие скобки.
В правиле могут использоваться следующие переменные:
- THIS_SUM – значение конкретной ячейки, к которой применяется правило. При применении этой переменной к тэгам ROW, COL и т.д. правило применяется к каждой ячейке по очереди.
- CHILD_SUM – сумма дочерних элементов строки/графы. Может употребляться только в правилах связанных с тэгами ROW или COL (ROWS или COLS), поэтому суммой дочерних элементов считается сумма значений строк/граф, являющихся дочерними по отношению к строке/графе, к которой применяется правило. Если переменная используется для иных тэгов, то правило в целом должно игнорироваться. Данные правила должны проверяться по запросу пользователя.
Результатом проверки правила должно являться логическое выражение TRUE или FALSE. Ссылки на ячейки данных и атрибуты имеют такой же синтаксис, как и в правилах типа ARITHMETIC.
Сравниваемые операнды должны иметь сопоставимые типы.
3.1.4.Правила формирования XML-документа Если атрибут в тэге отсутствует, то при необходимости использования его значения используется значение по умолчанию.
Если значение по умолчанию не задано, то используются следующие правила:
текстовые данные – пустая строка;
числовые данные – 0;
логический тип – FALSE;
дата/время – 31.12.1899 00:00:00.
Под содержанием тэга понимается его значение, если не указано иное.
|
|