Skip to content

CustomizerScript ru

Leksiqq edited this page Apr 5, 2024 · 14 revisions

Структура скрипта кастомизации

Кастомизация осуществляется с помощью скрипта, представляющего собой XML-схему специальной структуры.

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="script"
    targetNamespace="http://leksi.net/EDIFACT/script"
    elementFormDefault="qualified"
    xmlns="http://leksi.net/EDIFACT/script"
    xmlns:eu="http://leksi.net/EDIFACT/utility"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
  <xs:import namespace="http://leksi.net/EDIFACT/utility"/>

  <xs:annotation>
    <xs:appinfo eu:name="messageIdentifier">IFCSUM:D:97B:UN</xs:appinfo>
    <xs:appinfo eu:name="suffix">.2</xs:appinfo>
  </xs:annotation>
...
</xs:schema>

Приведённые выше элементы являются обязательными для каждого скрипта. Элемент аннотации <xs:appinfo eu:name="messageIdentifier">...</xs:appinfo> указывает на идентификатор сообщения, которое подвергается кастомизации и записывается точно в том виде, как в сегменте UNH в EDIFACT формате:

UNA:+.?*'
UNB+UNOZ:1::3+003702011539:30+BTS:30+201027:1155+10122823639495'
UNH+114327495+IFCSUM:D:97B:UN'
BGM+712+SF-01987041+22'
DTM+137:202010271135:203'

Элемент аннотации <xs:appinfo eu:name="suffix">...</xs:appinfo> задаёт суффикс для кастомизированной схемы. Для приведённого выше примера файл кастомизированной схемы получит имя IFCSUM.2.xsd и будет расположен в том же каталоге, что и стандартный файл IFCSUM.xsd.

Редактирование элементов данных

После аннотации с описанием самого скрипта следуют инструкции редактирования элементов данных.

<xs:complexType name="{ИМЯ_ЭЛЕМЕНТА_ДАННЫХ}">
  <xs:simpleContent>
    <xs:restriction base="eu:D" [eu:action="clearEnumerations"]>
      {СОДЕРЖИМОЕ: обычное содержимое элемента xs:restriction}
    </xs:restriction>
  </xs:simpleContent>
</xs:complexType>

Указанное выше СОДЕРЖИМОЕ заменяет соответствующее содержимое в определении исходного типа, кроме элементов xs:enumeration: для замены следует использовать в элементе xs:restriction атрибут eu:action="clearEnumerations". В противном случае элементы xs:enumeration добавляются.

Редактирование дерева сегментов и групп сегментов

Далее следуют инструкции редактирования дерева сегментов и групп сегментов.

<xs:element name="{ИМЯ_СЕГМЕНТА_ИЛИ_ГРУППЫ}" [eu:action="remove" | eu:action="removeUntilNext"]/>

или

<xs:element name="{ИМЯ_ГРУППЫ}">
  <xs:conplexType>
    <xs:sequence>
      <xs:element name="{ИМЯ_СЕГМЕНТА_ИЛИ_ГРУППЫ}" [eu:action="remove" | eu:action="removeUntilNext"]/>
      ...
    </xs:sequence>
  </xs:conplexType>
</xs:element>

Первый вариант относится к сегментам, не входящим в группы и любым группам, которые удаляются целиком. Второй - для удаления сегментов из группы. Атрибут eu:action="remove" указывает, что содержащий его элемент будет удалён, а атрибут eu:action="removeUntilNext" означает, что будут удалены содержащий его и все последующие элементы до следующего, исключая его, либо до конца содержимого, если содержащий элемент последний в последовательности.

Ниже приведены ссылки на скрипт и визуализации стандартной и кастомизированной схем.

Обзор | В начало страницы

Clone this wiki locally