ГОСТ Р 54878-2011/ISO/TS 20625:2002. Национальный стандарт Российской Федерации. Электронный обмен данными в управлении, торговле и на транспорте (EDIFACT). Принципы формирования файлов XML схемы (XSD) на основе инструкций по реализации EDI(FACT)
(утв. и введен в действие Приказом Росстандарта от 22.12.2011 № 1604-ст)
Примечание
Документ введен в действие с 01.09.2012.
Приказом Федерального
агентства по техническому
регулированию и метрологии
от 22 декабря 2011 г. № 1604-ст
ЭЛЕКТРОННЫЙ ОБМЕН ДАННЫМИ В УПРАВЛЕНИИ, ТОРГОВЛЕ И НА ТРАНСПОРТЕ (EDIFACT)
ПРИНЦИПЫ ФОРМИРОВАНИЯ ФАЙЛОВ XML СХЕМЫ (XSD)
НА ОСНОВЕ ИНСТРУКЦИЙ ПО РЕАЛИЗАЦИИ EDI(FACT)
Electronic data interchange for administration, commerce
and transport (EDIFACT). Rules for generation
of XML scheme files (XSD) on the basis of EDI(FACT)
implementation guidelines
ISO/TS 20625:2002
Electronic data interchange for administration, commerce
and transport (EDIFACT) — Rules for generation
of XML scheme files (XSD) on the basis of EDI(FACT)
implementation guidelines
(IDT)
ГОСТ Р 54878-2011/ISO/TS 20625:2002
Цели и принципы стандартизации в Российской Федерации установлены Федеральным законом от 27 декабря 2002 г. № 184-ФЗ «О техническом регулировании», а правила применения национальных стандартов Российской Федерации — ГОСТ Р 1.0-2004 «Стандартизация в Российской Федерации. Основные положения»
1 ПОДГОТОВЛЕН Научно-техническим центром «ИНТЕК» на основе собственного аутентичного перевода на русский язык международного документа, указанного в пункте 4
2 ВНЕСЕН Техническим комитетом по стандартизации ТК 100 «Стратегический и инновационный менеджмент»
3 УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Приказом Федерального агентства по техническому регулированию и метрологии от 22 декабря 2011 г. № 1604-ст
4 Настоящий стандарт идентичен международному документу ИСО/ТС 20625:2002 «Электронный обмен данными в управлении, торговле и на транспорте (EDIFACT). Принципы формирования файлов XML схемы (XSD) на основе инструкций по реализации EDI(FACT)» (ISO/TS 20625:2002 «Electronic data interchange for administration, commerce and transport (EDIFACT) — Rules for generation of XML scheme files (XSD) on the basis of EDI(FACT) implementation guidelines»).
При применении настоящего стандарта рекомендуется использовать вместо ссылочных международных стандартов соответствующие им национальные стандарты Российской Федерации, сведения о которых приведены в дополнительном приложении ДА
Информация об изменениях к настоящему стандарту публикуется в ежегодно издаваемом информационном указателе «Национальные стандарты», а текст изменений и поправок — в ежемесячно издаваемом информационном указателе «Национальные стандарты». В случае пересмотра (замены) или отмены настоящего стандарта соответствующее уведомление будет опубликовано в ежемесячно издаваемом информационном указателе «Национальные стандарты». Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования — на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет
В традиционных EDI-стандартах приводится синтаксис для применения контентов данных в различных видах коммерческой деятельности путем использования элементов данных, сегментов и типов сообщений. Первоначально XML-язык определял другой синтаксис, который в случае переработки программ EDI приводил к огромным дополнительным затратам, тем самым препятствуя достижению исходно поставленной задачи — привлечению к электронным бизнес-процессам мелких и средних предприятий (SME).
В настоящем стандарте описан способ применения XML-синтаксиса при использовании технологии EDI. Пользователям XML-языка при этом станет легче и удобнее применять EDI-данные, получаемые из существующих приложений.
EDIFACT-инструкции по реализации сообщений (MIGs) описывают процедуры применения стандартизированных типов EDIFACT-сообщений к бизнес-процессам, вследствие этого они являются удобным инструментом для формирования XML-схем (структур). Настоящий стандарт устанавливает процесс перевода данных.
Настоящий стандарт устанавливает принципы выбора XML-схем (структур) из EDI MIG-инструкций, обеспечивающих применение обоснованного метода представления семантических данных.
В настоящем стандарте определен способ выбора XML-данных из UN/EDIFACT MIG-инструкций. Рассматриваемые принципы применимы и к другим EDI-стандартам.
Настоящий стандарт не распространяется на описания типов документов (DTDs).
В настоящем стандарте использованы нормативные ссылки на следующие международные стандарты (для датированных ссылок следует использовать только указанное издание, для недатированных ссылок следует использовать последнее издание указанного документа):
ИСО 8601:2004 Элементы данных и форматы для обмена информацией. Обмен информацией. Представление дат и времени (ISO 8601:2004, Data elements and interchange formats. Information interchange. Representation of dates and times)
ИСО 9735-1:2002 Электронный обмен данными в управлении, торговле и на транспорте (EDIFACT). Синтаксические правила для прикладного уровня (версия 4, редакция 1). Часть 1. Синтаксические правила, общие для всех частей (ISO 9735-1:2002, Electronic data interchange for administration, commerce and transport (EDIFACT). Application level syntax rules (Syntax version number: 4, Syntax release number: 1). Part 1. Syntax rules common to all parts)
В настоящем стандарте применены следующие термины с соответствующими определениями:
3.1 базовый семантический регистр (basic semantics register; BSR).
3.2 базовая семантическая единица (basic semantic unit; BSU).
3.3 описание типа документа (document type definition; DTD).
3.4 электронный обмен данными (electronic data interchange; EDI).
3.5 электронный обмен данными в управлении, торговле и на транспорте (electronic data interchange for administration, commerce and transport; EDIFACT).
3.6 гипертекстовый язык разметки документов (hyper text mark-up language; HTML).
3.7 инструкция по реализации сообщения (message implementation guideline; MIG).
3.8 стандартный обобщенный язык описания документов (standard generalised mark-up language; SGML).
3.9 расширяемый язык описания связей (extensible link language; XLL).
3.10 расширяемый язык разметки (extensible mark-up language; XML).
3.11 расширяемое определение схемы (extensible schema definition; XSD).
3.12 расширяемый язык таблиц стилей (extensible stylesheet language; XSL).
3.13 www-консорциум (world wide web consortium; W3C).
3.14 элемент (element): Синтаксический структурный блок, содержащий данные и/или атрибуты.
3.15 имя (name): Имя в XML-языке начинается с буквы или допустимого специального символа, далее могут следовать буквы, цифры, дефисы, подчеркивания, двоеточия или точки. Имена, начинающиеся с «xml» или со строки символов, которые примыкают к (('X'|'x') ('M'|'m') ('L'|'l')), являются резервными для целей XML-стандартизации.
3.16 шаблон (template): Предварительно задаваемая эталонная структура, сравниваемая с полной структурной единицей (или с одной из ее частей), которая должна быть распознана.
3.17 тег, метка (tag): Инструкция по форматированию или семантическая пометка.
4 Стандартное содержание инструкций по реализации сообщений (MIG)
4.1 Уровень: MIG
a) Идентификационные данные MIG-инструкции.
b) Идентификационные данные служебного EDIFACT-каталога.
c) Идентификационные данные типа сообщения и при необходимости промышленных подгрупп.
4.2 Уровень: Тип сообщения
a) Структура типа сообщения (сегменты и группы сегментов) и идентификационные данные их используемых частей.
b) Состояние (стандартное или прикладное) используемых сегментов и групп сегментов.
c) Контекстно связанные имена и описания сегментов и групп сегментов.
e) Взаимосвязи между сегментами и группами сегментов.
f) Дополнительный текст, комментарии относительно уровня типа сообщения.
4.3 Уровень: Сегменты и составные элементы данных
a) Структура сегментов и составных элементов данных, а также указание используемых ими позиций.
b) Состояние (стандартное или прикладное) элементов данных и составных элементов данных.
c) Взаимосвязи между элементами данных и составными элементами данных в одном типе сообщений.
d) Контекстно связанные имена и описания.
f) Дополнительный текст, комментарии.
4.4 Уровень: Элемент данных
a) Характеристики EDI-элементов данных (тип, длина) и ограничения на их применение, основанные на MIG-инструкциях и контекстно связанном исполнении.
b) Контекстно связанные имена и описания элементов данных и при необходимости индивидуальные теги и описания, например, отбираемые из хранилищ данных типа ISO-BSR.
d) Дополнительный текст, комментарии.
g) Четко задаваемые пользователем EDIFACT-коды или перечни ISO/UN-кодов.
h) Четко задаваемые пользователем коды.
i) Произвольно задаваемые пользователем EDIFACT-коды или перечни ISO/UN-кодов.
j) Произвольно задаваемые пользователем коды, не содержащиеся в каталоге EDIFACT-кодов.
k) Принципы, которым должны отвечать значения элементов данных.
l) Преобразование в поля в программах и неструктурированных файлах соответственно.
5 Требования к принципам логического вывода схем
a) MIG-техническая информация, перечисленная в разделе 4, при необходимости должна иметь возможность быть встроенной в схемы (структуры).
b) Структура MIG-инструкции более низкого уровня должна быть легко доступной (XML- и традиционные EDI-инструкции должны быть сопоставимыми по структуре).
c) Сформированные XML-сообщения должны иметь минимально возможную длину.
d) Существование варианта, определенного с помощью настоящего стандарта как обязательного, при котором семантические данные могут представляться в XML-виде.
e) Разработчик MIG-инструкций решает, какие данные важны и какие структуры значимы для его конкретного приложения. Именно он должен определить, какие структурные элементы должны объединяться в схемы.
6 Принципы формирования XML-схем, отбираемых из EDI MIG-инструкций
Примечание - Область имен 'din' берется исключительно в справочных целях и поэтому может либо пропускаться, либо вместо нее можно использовать любую другую подходящую область имен.
6.1 Принцип 1: Наименование тега
6.1.1 Вариант 1
Имена XML-структуры должны формироваться из EDI-тегов, которые будут префиксами, зависящими от уровня структуры (группы сегментов, сегмента, составного элемента данных или самого элемента данных), т.е.:
Суффикс является дополнительным элементом и может формироваться с использованием различных семантических интерпретаций EDI-элементов.
Если XML-схемный файл формируется из EDIFACT MIG-инструкции, то необходимо указывать лишь префикс «D_». Поскольку в других EDI-стандартах должны использоваться иные префиксы, которые будут идентифицировать составные элементы данных и просто элементы данных путем применения цифровых тегов, то префиксы должны быть обязательными.
Второе представление тегов группы сегментов можно использовать в том случае, когда базовый EDI-стандарт не дает каких-либо конкретных групп сегментов или же всякий раз, когда желательно представление сегментов ряда операций. В последнем случае формирование вложения групп сегментов необходимо задавать как последовательность сегментов операций.
Рекомендации W3C XML предполагают использование «тегов, не требующих пояснений». EDI[FACT]-теги отвечают этим требованиям в большей степени, чем теги, записанные на естественном языке, поскольку для EDI-специалистов они представляют устоявшийся общепонятный смешанный язык из элементов романских, греческого и восточных языков.
<xsd:element name =«M_ORDERS»> xsd:complexType xsd:sequence <xsd:element ref=«din:D_1004»/> <xsd:element ref=«din:D_2380»/> <xsd:element ref=«din:D_2380_2»/> <xsd:element ref=«din:G_SG2»/> <xsd:element ref=«din:G_SG2_2»/> <xsd:element ref=«din:D_6345» minOccurs=«0» maxOccurs=«5»> <xsd:element ref=«din:G_SG25» minOccurs=«1» maxOccurs=«10»> <xsd:element ref=«din:D_5004_2»/> </xsd:sequence>
</xsd:complexType>
</xsd:element>
6.1.2 Вариант 2
При необходимости «разговорные» теги могут формироваться из подходящего комментария. В этом случае EDI-источник для соответствующего элемента должен документироваться с помощью соответствующего атрибута (см. также 6.9) или любого другого средства документирования.
<xsd:element name =«M_ORDERS»> xsd:complexType xsd:sequence
<xsd:element ref="din:Order_number"/><br>
<xsd:element ref="din:Order_date"/>
<xsd:element ref="din:Delivery_date"/>
<xsd:element ref="din:Buyer"/><br>
<xsd:element ref="din:Seller"/>
<xsd:element ref="din:Currency" minOccurs="0" maxOccurs="5"/>
<xsd:element ref="din:Line_item_details" minOccurs="1"
maxOccurs="10"/>
<xsd:element ref="din:Total_order_value"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
...
<xsd:element name ="Name">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base ="string1..10">
<xsd:attribute name="EDIPath" type="xsd:string"
fixed="ORDERS.SG2.NAD.C080.3036(0120:040:01)"/>
<!- - The attribute EDIPath contains the reference to the original EDI
standard - ->
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
6.2 Принцип 2: Структура
6.2.1 Одни и те же EDI-теги или имена должны формировать сгруппированные элементы (см. также принцип, описанный в 6.10).
6.2.2 Если желательно разграничивать различные семантические элементы одного и того же контейнера данных, то для них необходимо использовать различные теги путем добавления суффикса к EDI-тегу или присваивать им различные имена.
6.2.3 Схема может содержать дополнительные «сшитые» между собой элементы для групп сообщений или их обмена (сопоставимые с UN/EDIFACT UNG-UNE и UNB-UNZ).
6.2.4 Любое использование EDI-контейнера данных (типа сообщения, группы сегментов, сегментов и т.п.) может представляться как независимый XML-элемент. Существующая EDI-структура является источником для XML-структуры, поэтому XML-схема должна обладать структурой, сопоставимой со структурой EDI MIG. Набор обобщенных XML-элементов не должен превышать набор EDI-элементов.
Примечание - Способ, с помощью которого автор описывает MIG-инструкцию, должен отвечать требованиям соответствующего бизнес-процесса, поэтому и схема должна соответствующим образом структурироваться. Если, например, MIG-инструкция содержит «дату документа» и «запрашиваемую дату поставки» в двух различных экземплярах DTM-сегмента, то соответственно должны формироваться и раздельные XML-элементы. Кроме того, если они документируются в одном и том же экземпляре DTM-сегмента, то будет формироваться только один XML-элемент.
Несколько поясняющих примеров для 6.2.1 и 6.2.2:
Вариант 1: Инструкция содержит два DTM-сегмента (см. рисунок 1).
DTM (#1), Status M, Occurrence 1, Qualifier in DE 2005: 4, Name: Order date
DTM (#2), Status M, Occurrence 1, Qualifier in DE 2005: 2, Name: Requested delivery date
Рисунок 1 — Диаграмма сообщения для инструкции, содержащей два DTM-сегмента
Установленный по умолчанию переход в XML-схему в соответствии с 6.2.1 таков:
<xsd:element name =«S_DTM»> xsd:complexType xsd:sequence <xsd:element ref=«din:D_2005»/> <xsd:element ref=«din:D_2380»/> </xsd:sequence> </xsd:complexType> <xsd:element name =«D_2005» type =«din:D_2005»> xsd:annotation xsd:documentationType of date</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name =«D_2380» type =«xsd:decimal»> xsd:annotation xsd:documentationDate/Time/Period</xsd:documentation> </xsd:annotation> </xsd:element>
Примечание - Элемент D_2005 принадлежит к перечислимому типу данных и содержит две положительные величины '2' и '4'.
В другом варианте применение принципа 6.2.2 дает следующий результат:
<xsd:element name =«D_2380» type =«xsd:decimal»> xsd:annotation xsd:documentationOrder date</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name =«D_2380_2» type =«xsd:decimal»> xsd:annotation xsd:documentationDelivery date</xsd:documentation> </xsd:annotation> </xsd:element>
<xsd:element name =«Order_date» type =«xsd:decimal»/> <xsd:element name =«Delivery_date» type =«xsd:decimal»/>
Вариант 2: Инструкция с неявно документированной датой, использующая только один DTM-сегмент (см. рисунок 2).
Рисунок 2 — Диаграмма сообщения для инструкции, содержащей только один DTM-сегмент
Преобразование в XML-схему аналогично преобразованию, применяемому по умолчанию в соответствии с принципом 6.2.1, т.е.:
<xsd:element name =«S_DTM»> xsd:complexType xsd:sequence <xsd:element ref=«din:D_2005»/> <xsd:element ref=«din:D_2380»/> </xsd:sequence> </xsd:complexType> <xsd:element name =«D_2005» type =«din:D_2005»> xsd:annotation xsd:documentationType of date</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name =«D_2380» type =«xsd:decimal»> xsd:annotation xsd:documentationOrder date</xsd:documentation> </xsd:annotation> </xsd:element>
Поясняющий пример для 6.2.3:
<xsd:schema xmlns:xsd=«http://www.w3.org/2001/XMLSchema»> <xsd:element name =«S_UNB»> xsd:complexType xsd:sequence <xsd:element ref=«D_0004» minOccurs=«0» maxOccurs=«1»/> <xsd:element ref=«D_0010» minOccurs=«0» maxOccurs=«1»/> <xsd:element ref=«D_0017» minOccurs=«0» maxOccurs=«1»/> <xsd:element ref=«D_0020» minOccurs=«0» maxOccurs=«1»/> <xsd:element ref=«M_ORDERS» minOccurs=«1» maxOccurs=«unbounded»/> </xsd:sequence> ...
6.3 Принцип 3: Оптимизация структуры
Если главный интерес представляют одноуровневые XML-структуры, то применение нижеследующих принципов будет приводить к получению оптимизированных результатов, однако для их интеграции в существующие системы необходимо соблюдать минимальные требования к структуре данных, устанавливаемые применяемой EDI-системой.
6.3.1 EDIFACT-сегмент, который содержит несколько элементов с коммерческой информацией, обладает обобщающей функцией. Если же этот сегмент содержит только один элемент с коммерческой информацией, то он этой функцией не обладает и при преобразовании в XSD-схему данный уровень сегмента может выпадать.
6.3.2 Элементы основного стандарта, не используемые в MIG-инструкции, будут исключаться.
6.3.3 Постоянные префиксы или коды не переходят в XML-структуру (для определенного элемента данных только один код будет документироваться в MIG-инструкции). Соответствующие элементы данных не должны переходить в XML-структуру.
Ниже приведено несколько примеров.
<xsd:element name =«S_DTM»> xsd:complexType xsd:sequence
<xsd:element ref="din:C_C507"/>
</xsd:sequence>
</xsd:complexType><br>
</xsd:element>
<xsd:element name ="C_C507">
<xsd:complexType><br>
<xsd:sequence>
<xsd:element ref="din:D_2005"/>
<xsd:element ref="din:D_2380"/>
<xsd:element ref="din:D_2379"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name ="D_2379" fixed ="102"/>
<xsd:element name ="D_2005" fixed ="4"/>
<xsd:element name ="D_2380" type ="xsd:decimal">
<xsd:annotation>
<xsd:documentation>Order date</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name =«D_2380» type =«xsd:decimal»> xsd:annotation xsd:documentationOrder date</xsd:documentation> </xsd:annotation> </xsd:element>
Уровни сегментов и составных элементов данных не требуются, поскольку они содержат только постоянные префиксы и поэтому исключаются.
6.4 Принцип 4: Состояние
EDI-состояние и прикладной статус в MIG-инструкции будут объединены в XML-состоянии (с поддержанием больших ограничений).
Состояние «обязательное» будет представляться с помощью минимально повторяющегося индекса «1», а состояние «условное» — с помощью минимально повторяющегося индекса «0». Состояние задается атрибутом minOccurs.
6.5 Принцип 5: Максимальное число экземпляров
Число экземпляров MIG-инструкции формирует число XML-экземпляров. Это значение будет задаваться с помощью XSD-атрибута maxOccurs.
| Группа сегментов | <xsd:element ref=«din:G_SG25» minOccurs=«1» maxOccurs=«10»/> |
|---|---|
| Сегмент | <xsd:element ref=«din:S_LIN» minOccurs=«1» maxOccurs=«1»/> |
При использовании версии 4 EDIFACT-синтаксиса (см. ИСО 9735-1) и соответствующих каталогов этот принцип применим и к составным элементам данных, и к элементам данных.
6.6 Принцип 6: Форматы элементов данных
6.6.1 Обозначения «an» и «a» относятся к формату представления данных «строка», а обозначение «n» — к формату представления данных «десятичный». Для длин буквенно-символьных и цифровых элементов данных, как это определено в MIG-инструкции, будет формироваться соответствующий атрибут simpleTypes.
6.6.2 Форматы представления даты могут передаваться в XML-типы данных «date», «timeInstant» и «time». В этом случае необходимо использовать преобразование форматов, имеющих следующее представление в XML:
| date (дата): | 1999-05-31 (согласно ИСО 8601) |
|---|---|
| time (время): | 13:20:00 |
| timeInstant (момент времени): | 1999-05-31T13:20:00 |
<xsd:simpleType name=«string1..70»> <xsd:restriction base=«xsd:string»> <xsd:minLength value=«1»/> <xsd:maxLength value=«70»/> </xsd:restriction> </xsd:simpleType>
6.7 Принцип 7: Перечни кодов и задаваемые пользователем коды
6.7.1 Кодированные элементы данных должны определяться как данные комплексного типа. Если в MIG-инструкции задокументированы только специальные коды элементов данных, то именно эти коды станут допустимыми для приложений и будут передаваться в XML-структуру.
6.7.2 Если в MIG-инструкции для элементов данных коды не предусмотрены, то допускается наличие перечня всех имеющихся кодов, который будет передаваться в XML-структуру.
6.7.3 Перечни многократно используемых кодов могут предоставляться с помощью внешних файлов.
6.7.4 Наименования кодов будут дополнительно сохраняться в виде аннотаций к ним.
6.7.5 Согласно принципу 3 (см. 6.3) постоянные префиксы или коды не должны передаваться в XML-структуру (только один определенный элемент данных документируется в MIG-инструкции). Соответствующие элементы данных не должны предусматриваться в XML-структуре, однако в случае острой необходимости в использовании какого-либо элемента данных его необходимо включать в XML-структуру (например, вид валюты, соответствующий элементу данных 6345 в сегменте MOA).
(1) <xsd:element name =«D_6345» type =«D_6345»/> <xsd:simpleType name=«D_6345»> <xsd:restriction base=«xsd:string»> <xsd:enumeration value=«DEM»> xsd:annotation xsd:documentationDeutsche Mark</xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value=«EUR»> xsd:annotation xsd:documentationEuro</xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value=«GBP»> xsd:annotation xsd:documentationPfund Sterling</xsd:documentation> </xsd:annotation> </xsd:enumeration> </xsd:restriction> </xsd:simpleType>
(2) <xsd:simpleType name=«D_6347»> <xsd:restriction base=«xsd:string»> <xsd:enumeration value=«1»/> <xsd:enumeration value=«2»/> <xsd:enumeration value=«3»/> <xsd:enumeration value=«4»/> <xsd:enumeration value=«5»/> <xsd:enumeration value=«6»/> <xsd:enumeration value=«7»/> ... etc. listing of the complete code list </xsd:simple Type>
(3)
<xsd:schema targetNamespace=«http://www.din.de/ example/orders»
xmlns:din=«http://www.din.de/ example/orders»
xmlns:xsd=«http://www.w3.org/2000/10/XMLSchema»>
<xsd:schema targetNamespace=«http://www.din.de/example/orders» xmlns:din=«http//www.din.de/example/orders » xmlns:xsd=«http://www.w3.org/2000/10/XMLSchema»> <xsd:simpleType name=«CL_6411»> <xsd:restriction base=«xsd:string»> <xsd:enumeration value=«ACR»/> <xsd:enumeration value=«AMH»/> ......
(4) <xsd:simpleType name=«CL_6411»> <xsd:restriction base=«xsd:string „> <xsd:enumeration value=“TNE»> xsd:annotation xsd:documentationTonne (1000 kg) *</xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value=«KGM»> xsd:annotation xsd:documentationKilogram *</xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value=«GRM»> xsd:annotation xsd:documentationGram *</xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value=«DZN»> xsd:annotation xsd:documentationDozen</xsd:documentation> </xsd:annotation> </xsd:enumeration> </xsd:restriction> </xsd:simpleType>
(5) <xsd:element name =«D_6345» type =«din:D_6345»/> <xsd:simpleType name=«D_6345»> <xsd:restriction base=«xsd:string»> <xsd:enumeration value=«DEM»> xsd:annotation xsd:documentationDeutsche Mark</xsd:documentation> </xsd:annotation> </xsd:enumeration> </xsd:restriction> </xsd:simpleType>
6.8 Принцип 8: Имена EDI-объектов
6.8.1 Стандартизованные или присваиваемые пользователем имена групп сегментов, сегментов, составных элементов данных и элементов данных могут предусматриваться в схеме как атрибут «annotation». В качестве атрибута для любого XML-элемента допускается использовать только одно EDI-имя.
6.8.2 Если ED-объект имеет стандартизованное или присвоенное пользователем имя, сохраняется только последнее.
Примечание - Последнее утверждение относится к имени объекта, которое может находиться по присвоенному пользователем имени, BSU или другим образом в MIG-инструкциях. При этом XML-файл будет оставаться незаполненным, а логическое преобразование — легко реализуемым с помощью синтаксического анализатора.
(1) <xsd:element name =«S_DTM»> xsd:annotation xsd:documentationDate/Time/Period</xsd:documentation> </xsd:annotation> xsd:complexType xsd:sequence <xsd:element ref=«din:D_2005»/> ...
(2) <xsd:element name =«S_DTM»> xsd:annotation xsd:documentationOrder or delivery date </xsd:documentation> </xsd:annotation> xsd:complexType xsd:sequence <xsd:element ref=«din:D_2005»/> ...
6.9 Принцип 9: Размещение данных
6.9.1 Поскольку MIG-инструкция содержит подробное описание размещения данных, то в качестве атрибутов могут формироваться «точки привязки», которые будут позволять применять XML-формат обмена данными к EDI-подсистемам.
6.9.2 С помощью атрибута EDISource предусмотрен EDI[FACT]-источник. Это обозначение атрибута сочетает в себе функциональное назначение применяемого документирования и основную информацию относительно версии каталога, например EDIFACT-каталога.
При этом применимы следующие правила:
- путь указывается в форме «segmentgroup.segment.compositedataelement.dataelement» или «segmentgroup.segment.dataelement»;
- группа сегментов может оказаться многочисленной для указания уровней EDI[FACT]-структуры;
- при наличии нескольких семантических вариантов для групп сегментов квалификационный сегмент, его префикс и соответствующие значения в префиксе должны записываться в квадратных скобках.
В конце порядкового номера сегмента, приведенного в исходном типе EDIFACT-сообщения, необходимо также добавлять порядковый номер элемента данных (составного или простого) в соответствующий сегмент после двоеточия и при необходимости — порядковый номер компонента в составном элементе данных.
Например, запись вида (0120:020:02) должна читаться следующим образом: «порядковый номер в стандарте»: «порядковый номер составного элемента данных или элемента данных»:«при необходимости — порядковый номер компонента в составном элементе данных».
(1) <xsd:element name =«D_3433»> xsd:annotation xsd:documentationBIC of buyer's bank</xsd:documentation> </xsd:annotation> xsd:complexType xsd:simpleContent <xsd:extension base =«xsd:decimal> <xsd:attribute name=»Mapping_anchor» type=«xsd:string» use=«fixed»value=«BIC-BB»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element>
(2) <xsd:element name =«D_3433»> xsd:annotation xsd:documentationBIC of buyer's bank</xsd:documentation> </xsd:annotation> xsd:complexType xsd:simpleContent <xsd:extension base =«xsd:decimal»> <xsd:attribute name=«EDIPath» type=«xsd:string» use=«fixed» value=«SG2[NAD.3035=BY].FII.C088.3433(0140:030:01)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element>
6.10 Принцип 10: Группирование контейнеров данных с одинаковыми именами
При наличии сценариев реализации с использованием различных типов сообщений и при желании пользователя сгруппировать контейнеры данных с одинаковыми именами и уникальным образом описать их в сценарии, применимы следующие принципы:
6.10.1 Структура
Сгруппированные контейнеры данных должны содержать по крайней мере все те субэлементы, которые используются и задокументированы в MIG-инструкции (инструкциях). Последовательность этих элементов должна быть совместимой с последовательностью, задаваемой EDI-стандартом.
6.10.2 Состояние
В сгруппированном контейнере данных состояние субэлемента должно устанавливаться как свободное (опционное), если этот субэлемент уже был использован как добавочный в указанном контейнере данных в рамках всего сценария сообщений.
Пример — ORDERS DTM 2379 состояние: R, IFTMIN DTM 2379 состояние: O \rightarrow XML состояние: O
6.10.3 Формат
Формат должен определяться в соответствии с широко используемым форматом, указанным в MIG-инструкции (инструкциях).
Пример — ORDERS DTM 2380 формат: n8, IFTMIN DTM 2380 формат: an..35 \rightarrow XML формат: строка 1 ..35
6.10.4 Перечень кодов
Для каждого кодированного элемента данных необходимо формировать сгруппированный перечень кодов, содержащий все коды, применимые согласно MIG-инструкции (инструкциям).
Пример — ORDERS DTM 2380 перечень кодов: 102;103, IFTMIN DTM 2380 перечень кодов: 103;203 \rightarrow XML перечень кодов: 102;103;203
ПРИМЕР ПРЕОБРАЗОВАНИЯ ДАННЫХ ИЗ EDIFACT В XML
Примечание - Приведенные в данном приложении примеры основаны на использовании тегов, выраженных на немецком языке, однако не исключено и использование для них и других языков. Состояние, обозначаемое буквой R, означает «требуемое», а состояние, обозначаемое буквой O, означает «свободное, опционное». Оба эти состояния имеют тот же смысл, что и состояние, обозначаемое буквами M («обязательное») и C («условное»). Состояние, обозначаемое буквой N, означает, что оно «не используется».
A.1 Структура для преобразования данных, основанная на EDIFACT
Основой для формирования XML-структуры является применение в EDIFACT сообщения типа ORDERS (Заказ на покупку) со следующими особенностями:
Таблица сегментов для EDIFACT-сообщений типа ORDERS
A.1.2.2 Диаграмма, иллюстрирующая структуру сообщения
| Сегмент: | UNH | Порядковый N: 1 | Уровень: | 0 | Заголовок сообщения |
| Состояние: M | Макс. экз.: | 1 | |||
| Имя: Заголовок сообщения | |||||
| Описание сегмента: | |||||
Примечание - Это заголовок сегмента сообщения.
Пример - UNH+1+ORDERS:D:93A:UN'.
| Сегмент: | BGM | Порядковый N: 2 | Уровень: | 0 | Начало сообщения |
| Состояние: M | Макс. экз.: | 1 | |||
| Имя: Тип документа и его номер | |||||
| Описание сегмента: | |||||
| Сегмент: | DTM | Порядковый N: 3 | Уровень: | 1 | Дата/Время/Продолжительность |
| Состояние: M | Макс. экз.: | 1 | |||
| Имя: Дата заказа | |||||
| Описание сегмента: | |||||
| Сегмент: | DTM | Порядковый N: 4 | Уровень: | 1 | Дата/Время/Продолжительность |
| Состояние: M | Макс. экз.: | 1 | |||
| Имя: Дата поставки | |||||
| Описание сегмента: | |||||
Примечание - Данный сегмент должен использоваться для передачи запрашиваемой даты поставки.
Примечание - Данный сегмент должен использоваться для передачи сведений о банке покупателя и номере его счета.
Пример - NAD+SE+++KAKAO GMBH+FRUCHTSTRASSE 1+SAHNEBERG++98765'.
| Группа: | SG7 | Состояние: O | Макс. экз.: | 1 | Валюта |
| Сегмент: | CUX | Порядковый N: 12 | Уровень: | 1 | Валюты |
| Состояние: M | Макс. экз.: | 1 | |||
| Имя: Валюта заказа | |||||
| Описание сегмента: | |||||
| Группа: | SG25 | Состояние: R | Макс. экз.: | 1 | Строки позиций |
| Сегмент: | LIN | Порядковый N: 13 | Уровень: | 1 | Строка позиции |
| Состояние: M | Макс. экз.: | 1 | |||
| Имя: Номер изделия поставщика | |||||
| Описание сегмента: | |||||
Примечание - Строки позиций изделия в заказе состоят из одного или нескольких повторов групп сегментов, начинающихся с сегмента LIN. Каждый сегмент LIN относится только к одному изделию.
| Группа: | SG25 | Состояние: R | Макс. экз.: | 10 | Строки позиций |
| Сегмент: | IMD | Порядковый N: 14 | Уровень: | 2 | Описание изделия |
| Состояние: O | Макс. экз.: | 1 | |||
| Имя: Краткое описание изделия | |||||
| Описание сегмента: | |||||
| Группа: | SG25 | Состояние: R | Макс. экз.: | 10 | Строки позиций |
| Сегмент: | QTY | Порядковый N: 15 | Уровень: | 2 | Количество изделий |
| Состояние: O | Макс. экз.: | 1 | |||
| Имя: Заказываемое количество изделий | |||||
| Описание сегмента: | |||||
| Группа: | SG25 | Состояние: R | Макс. экз.: | 10 | Строки позиций |
| Сегмент: | MOA | Порядковый N: 16 | Уровень: | 2 | Денежная сумма |
| Состояние: O | Макс. экз.: | 1 | |||
| Имя: Строка позиции денежной суммы | |||||
| Описание сегмента: | |||||
Пример - PRI+AAB:1400::CAT::TNE'.
| Сегмент: | UNS | Порядковый N: 18 | Уровень: | 0 | Секционный контроль |
| Состояние: M | Макс. экз.: | 1 | |||
| Имя: Секционный контроль | |||||
| Описание сегмента: | |||||
| EDIFACT | Применение | ||||
| Тег | Имя | Формат | Состояние | Пример | Использование/Комментарии |
| 0081 | Идентификационные данные секции | M a1 | M | +S' | s = Детальное/суммарное секционное разделение |
| Сегмент: | MOA | Порядковый N: 19 | Уровень: | 0 | Секционный контроль |
| Состояние: R | Макс. экз.: | 1 | Денежная сумма | ||
| Имя: Общая сумма | |||||
| Описание сегмента: | |||||
| Сегмент: | UNT | Порядковый N: 20 | Уровень: | 0 | Заключительная часть сообщения |
| Состояние: M | Макс. экз.: | 1 | |||
| Имя: Заключительная часть сообщения | |||||
| Описание сегмента: | |||||
A.2.1 XML-схема с EDI-тегами и областью имен
Примечание - Область имен 'din' в примерах данного подраздела указана лишь для иллюстративных целей и может быть либо исключена, либо заменена на любую другую подходящую область имен.
<!- — automatically generated by GEFEG EDIFIX — -> <!- - http://www.gefeg.com - -> <xsd:schema xmlns:xsd=«http://www.w3.org/2001/XMLSchema» xmlns:din=«http://www.din.de/examples/orders» targetNamespace=«http://www.din.de/examples/orders»> <xsd:element name =«M_ORDERS»> xsd:complexType xsd:sequence <xsd:element ref=«din:D_1004»/> <xsd:element ref=«din:S_DTM» minOccurs=«1» maxOccurs=«2»/> <xsd:element ref=«din:G_SG2» minOccurs=«1» maxOccurs=«2»/> <!- — Alternative could be «G_NAD» — -> <xsd:element ref=«din:D_6345» minOccurs=«0» maxOccurs=«1»/> <xsd:element ref=«din:G_SG25» minOccurs=«1» maxOccurs=«10»/> <!- — Alternative could be «G_LIN» — -> <xsd:element ref=«din:D_5004_2»/> </xsd:sequence> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS»/> </xsd:complexType> </xsd:element> <xsd:element name =«S_DTM»> xsd:complexType xsd:sequence <xsd:element ref=«din:D_2005»/> <xsd:element ref=«din:D_2380»/> </xsd:sequence> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.DTM(0030)»/> </xsd:complexType> </xsd:element> <xsd:element name =«G_SG2»> xsd:complexType xsd:sequence <xsd:element ref=«din:D_3035»/> <xsd:element ref=«din:D_3036»/> <xsd:element ref=«din:D_3042» minOccurs=«0» maxOccurs=«1»/> <xsd:element ref=«din:D_3164» minOccurs=«0» maxOccurs=«1»/> <xsd:element ref=«din:D_3251» minOccurs=«0» maxOccurs=«1»/> <xsd:element ref=«din:S_FII» minOccurs=«0» maxOccurs=«1»/> <xsd:element ref=«din:D_1154» minOccurs=«0» maxOccurs=«1»/> <xsd:element ref=«din:D_3413» minOccurs=«0» maxOccurs=«1»/> <xsd:element ref=«din:S_COM» minOccurs=«0» maxOccurs=«2»/> </xsd:sequence> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG2(0110)»/> </xsd:complexType> </xsd:element> <xsd:element name =«G_SG25»> xsd:complexType xsd:sequence <xsd:element ref=«din:D_1082» minOccurs=«0» maxOccurs=«1»/> <xsd:element ref=«din:D_7140»/> <xsd:element ref=«din:D_7008» minOccurs=«0» maxOccurs=«1»/> <xsd:element ref=«din:D_7008_2» minOccurs=«0» maxOccurs=«1»/> <xsd:element ref=«din:D_6060» minOccurs=«0» maxOccurs=«1»/> <xsd:element ref=«din:D_6411» minOccurs=«0» maxOccurs=«1»/> <xsd:element ref=«din:D_5004» minOccurs=«0» maxOccurs=«1»/> <xsd:element ref=«din:D_5118» minOccurs=«0» maxOccurs=«1»/> </xsd:sequence> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG25(0930)»/> </xsd:complexType> </xsd:element> <xsd:element name =«S_FII»> xsd:complexType <xsd.sequence> <xsd:element ref=«din:D_3194»/> <xsd:element ref=«din:D_3433»/> <xsd:element ref=«din:D_3432» minOccurs=«0» maxOccurs=«1»/> </xsd:sequence> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG2.FII(0140)»/> </xsd:complexType> </xsd:element> <xsd:element name =«S_COM»> xsd:complexType xsd:sequence <xsd:element ref=«din:D_3148»/> <xsd:element ref=«din:D_3155»/> </xsd:sequence> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG2.SG5.COM(0230)»/> </xsd:complexType> </xsd:element> <xsd:element name =«D_1004»> xsd:complexType xsd:simpleContent <xsd:extension base =«din:string1..8»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.BGM.1004(0020:020)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«D_6345»> xsd:complexType xsd:simpleContent <xsd:extension base =«din:D_6345»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG7.CUX.C504.6345(0250:010:02)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«D_5004_2»> xsd:complexType xsd:simpleContent <xsd:extension base =«din:decimal1..12»> <xsd:attributename=«EDIPath» type=«xsd:string» fixed=«ORDERS.MOA.C516.5004(2010:010:02)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«D_2005»> xsd:complexType xsd:simpleContent <xsd:extension base =«din:D_2005»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.DTM.C507.2005(0030:010:01)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«D_2380»> xsd:complexType xsd:simpleContent <xsd:extension base =«din:decimal8»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.DTM.C507.2380(0030:010:02)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«D_3035»> xsd:complexType xsd:simpleContent <xsd:extension base =«din:D_3035»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG2.NAD.3035(0120:010)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«D_3036»> xsd:complexType xsd:simpleContent <xsd:extension base =«din:string1..10»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG2.NAD.C080.3036(0120:040:01)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«D_3042»> xsd:complexType xsd:simpleContent <xsd:extension base =«din:string1..35»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG2.NAD.C059.3042(0120:050:01)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«D_3164»> xsd:complexType xsd:simpleContent <xsd:extension base =«din:string1..35»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG2.NAD.3164(0120:060)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«D_3251»> xsd:complexType xsd:simpleContent <xsd:extension base =«din:decimal5»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG2.NAD.3251(0120:080)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«D_1154»> xsd:complexType xsd:simpleContent <xsd:extension base =«din:string1..35»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG2.SG3.RFF.C506.1154(0160:010:02)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«D_3413»> xsd:complexType xsd:simpleContent <xsd:extension base =«din:string1..15»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG2.SG5.CTA.C056.3413(0220:020:01)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«D_3194»> xsd:complexType xsd:simpleContent <xsd:extension base =«din:decimal10»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG2.FII.C078.3194(0140:020:01)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«D_3433»> xsd:complexType xsd:simpleContent <xsd:extension base =«din:decimal8»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG2.FII.C088.3433(0140:030:01)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«D_3432»> xsd:complexType xsd:simpleContent <xsd:extension base =«din:string1..70»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG2.FII.C088.3432(0140:030:07)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«D_3148»> xsd:complexType xsd:simpleContent <xsd:extension base =«din:string1..12»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG2.SG5.COM.C076.3148(0230:010:01)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«D_3155»> xsd:complexType xsd:simpleContent <xsd:extension base =«din:D_3155»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG2.SG5.COM.C076.3155(0230:010:02)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«D_1082»> xsd:complexType xsd:simpleContent <xsd:extension base =«din:decimal1..5»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG25.LIN.1082(0940:010)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«D_7140»> xsd:complexType xsd:simpleContent <xsd:extension base =«din:string1..10»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG25.LIN.C212.7140(0940:030:01)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«D_7008»> xsd:complexType xsd:simpleContent <xsd:extension base =«din:string1..20»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG25.IMD.C273.7008(0960:030:04)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«D_7008_2»> xsd:complexType xsd:simpleContent <xsd:extension base =«din:string1..20»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG25.IMD.C273.7008(0960:030:05)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«D_6060»> xsd:complexType xsd:simpleContent <xsd:extension base =«din:decimal1..5»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG25.QTY.C186.6060(0970:010:02)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«D_6411»> xsd:complexType xsd:simpleContent <xsd:extension base =«din:D_6411»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG25.QTY.C186.6411(0970:010:03)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«D_5004»> xsd:complexType xsd:simpleContent <xsd:extension base =«din:decimal1..18»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG25.MOA.C516.5004(0980:010:02)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«D_5118»> xsd:complexType xsd:simpleContent <xsd:extension base =«din:decimal1..12»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG25.SG27.PRI.C509.5118(1150:010:02)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:simpleType name=«string1..8»> <xsd:restriction base=«xsd:string»> <xsd:whiteSpace value=«preserve»/> <xsd:minLength value=«1»/> <xsd:maxLength value=«8»/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name=«D_2005»> <xsd:restriction base=«xsd:string»> <xsd:enumeration value=«4»/> <xsd:enumeration value=«2»/> <xsd:whiteSpace value=«preserve»/> <xsd:minLength value=«1»/> <xsd:maxLength value=«3»/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name=«decimal8»> <xsd:restriction base=«xsd:decimal»> <xsd:totalDigits value=«8»/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name=«D_3035»> <xsd:restriction base=«xsd:string»> <xsd:enumeration value=«BY»/> <xsd:enumeration value=«SE»/> <xsd:whiteSpace value=«preserve»/> <xsd:minLength value=«1»/> <xsd:maxLength value=«3»/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name=«string1..10»> <xsd:restriction base=«xsd:string»> <xsd:whiteSpace value=«preserve»/> <xsd:minLength value=«1»/> <xsd:maxLength value=«10»/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name=«string1..35»> <xsd:restriction base=«xsd:string»> <xsd:whiteSpace value=«preserve»/> <xsd:minLength value=«1»/> <xsd:maxLength value=«35»/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name=«decimal5»> <xsd:restriction base=«xsd:decimal»> <xsd:totalDigits value=«5»/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name=«decimal10»> <xsd:restriction base=«xsd:decimal»> <xsd:totalDigits value=«10»/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name=«string1..70»> <xsd:restriction base=«xsd:string»> <xsd:whiteSpace value=«preserve»/> <xsd:minLength value=«1»/> <xsd:maxLength value=«70»/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name=«string1..15»> <xsd:restriction base=«xsd:string»> <xsd:whiteSpace value=«preserve»/> <xsd:minLength value=«1»/> <xsd:maxLength value=«15»/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name=«string1..12»> <xsd:restriction base=«xsd:string»> <xsd:whiteSpace value=«preserve»/> <xsd:minLength value=«1»/> <xsd:maxLength value=«12»/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name=«D_3155»> <xsd:restriction base=«xsd:string»> <xsd:enumeration value=«TE»/> <xsd:enumeration value=«FX»/> <xsd:whiteSpace value=«preserve»/> <xsd:minLength value=«1»/> <xsd:maxLength value=«3»/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name=«D_6345»> <xsd:restriction base=«xsd:string»> <xsd:enumeration value=«DEM»/> <xsd:enumeration value=«GBP»/> <xsd:whiteSpace value=«preserve»/> <xsd:minLength value=«1»/> <xsd:maxLength value=«3»/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name=«decimal1..5»> <xsd:restriction base=«xsd:decimal»> <xsd:totalDigits value=«5»/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name=«string1..20»> <xsd:restriction base=«xsd:string»> <xsd:whiteSpace value=«preserve»/> <xsd:minLength value=«1»/> <xsd:maxLength value=«20»/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name=«D_6411»> <xsd:restriction base=«xsd:string»> <xsd:enumeration value=«TNE»/> <xsd:enumeration value=«KGM»/> <xsd:enumeration value=«GRM»/> <xsd:enumeration value=«LBR»/> <xsd:enumeration value=«LTR»/> <xsd:enumeration value=«DZN»/> <xsd:whiteSpace value=«preserve»/> <xsd:minLength value=«1»/> <xsd:maxLength value=«3»/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name=«decimal1..18»> <xsd:restriction base=«xsd:decimal»> <xsd:totalDigits value=«18»/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name=«decimal1..12»> <xsd:restriction base=«xsd:decimal»> <xsd:totalDigits value=«12»/> </xsd:restriction> </xsd:simpleType> </xsd:schema>
Пример XML-сообщения для вышеописанной схемы:
<!- — automatically generated by GEFEG EDIFIX — -> <!- - http://www.gefeg.com - -> <din:M_ORDERS xmlns:din=«http://www.din.de/examples/orders» xmlns:xsi=«http://www.w3.org/2001/XMLSchema-instance» xsi:schemaLocation=«http://www.din.de/examples/orders order1.xsd»> din:D_10041-96</din:D_1004> din:S_DTM din:D_20054</din:D_2005> din:D_238019960101</din:D_2380> </din:S_DTM> din:G_SG2 din:D_3035BY</din:D_3035> din:D_3036BONBON AG</din:D_3036> din:D_3042SIRUPSTRASSE 15</din:D_3042> din:D_3164ZUCKERSTADT</din:D_3164> din:D_325155555</din:D_3251 > din:S_FII din:D_31941236547890</din:D_3194> din:D_343310090045</din:D_3433> din:D_3432SBANK</din:D_3432> </din:S_FII> din:D_1154DE998887</din:D_1154> din:D_3413BART SIMPSON</din:D_3413> din:S_COM din:D_314805368-22347</din:D_3148> din:D_3155TE</din:D_3155> </din:S_COM> </din:G_SG2> din:D_6345EUR</din:D_6345> din:G_SG25 din:D_10821</din:D_1082> din:D_71402001</din:D_7140> din:D_7008SCHOKGLADENMASSE</din:D_7008> din:D_60602</din:D_6060> din:D_6411TNE</din:D_6411> din:D_50042800</din:D_5004> din:D_51181400</din:D_5118> </din:G_SG25> din:D_5004_22890</din:D_5004_2> </din:M_ORDERS>
A.2.2 Альтернативная XML-схема с «разговорными» тегами
<!- — automatically generated by GEFEG EDIFIX — -> <!- - http://www.gefeg.com - -> <xsd:schema xmlns:xsd=«http://www.w3.org/2001/XMLSchema»> <xsd:element name =«Order»> xsd:complexType xsd:sequence <xsd:element ref=«OrderNumber»/> <xsd:element ref=«OrderDates» minOccurs=«1» maxOccurs=«2»/> <xsd:element ref=«OrderParties» minOccurs=«1» maxOccurs=«2»/> <xsd:element ref=«OrderCurreny» minOccurs=«0» maxOccurs=«1»/> <xsd:element ref=«LineItems» minOccurs=«1» maxOccurs=«10»/> <xsd:element ref=«TotalOrderValue»/> </xsd:sequence> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS»/> </xsd:complexType> </xsd:element> <xsd:element name =«OrderDates»> xsd:complexType xsd:sequence <xsd:element ref=«DateQualifier»/> <xsd:element ref=«Date»/> </xsd:sequence> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.DTM(0030)»/> </xsd:complexType> </xsd:element> <xsd:element name =«OrderParties»> xsd:complexType xsd:sequence <xsd:element ref=«PartyQualifier»/> <xsd:element ref=«Name»/> <xsd:element ref=«Street» minOccurs=«0» maxOccurs=«1»/> <xsd:element ref=«City» minOccurs=«0» maxOccurs=«1»/> <xsd:element ref=«PostCode» minOccurs=«0» maxOccurs=«1»/> <xsd:element ref=«AccountInformation» minOccurs=«0» maxOccurs=«1»/> <xsd:element ref=«VATNumber» minOccurs=«0» maxOccurs=«1»/> <xsd:element ref=«ContactName» minOccurs=«0» maxOccurs=«1»/> <xsd:element ref=«Communication» minOccurs=«0» maxOccurs=«2»/> </xsd:sequence> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG2(0110)»/> </xsd:complexType> </xsd:element> <xsd:element name =«LineItems»> xsd:complexType xsd:sequence <xsd:element ref=«LineItemNumber» minOccurs=«0» maxOccurs=«1»/> <xsd:element ref=«SuppliersArticleNumber»/> <xsd:element ref=«ItemTextLine1» minOccurs=«0» maxOccurs=«1»/> <xsd:element ref=«ItemTextLine2» minOccurs=«0» maxOccurs=«1»/> <xsd:element ref=«QuantityOrdered» minOccurs=«0» maxOccurs=«1»/> <xsd:element ref=«MeasureUnit» minOccurs=«0» maxOccurs=«1»/> <xsd:element ref=«LineItemAmount» minOccurs=«0» maxOccurs=«1»/> <xsd:element ref=«UnitPrice» minOccurs=«0» maxOccurs=«1»/> </xsd:sequence> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG25(0930)»/> </xsd:complexType> </xsd:element> <xsd:element name =«AccountInformation»> xsd:complexType xsd:sequence <xsd:element ref=«AccountNumber»/> <xsd:element ref=«BIC»/> <xsd:element ref=«BankName» minOccurs=«0» maxOccurs=«1»/> </xsd:sequence> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG2.FII(0140)»/> </xsd:complexType> </xsd:element> <xsd:element name =«Communication»> xsd:complexType xsd:sequence <xsd:element ref=«CommunicationNumber»/> <xsd:element ref=«CommunicationChannel»/> </xsd:sequence> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG2.SG5.COM(0230)»/> </xsd:complexType> </xsd:element> <xsd:element name =«OrderNumber»> xsd:complexType xsd:simpleContent <xsd:extension base =«string1..8»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.BGM.1004(0020:020)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«OrderCurreny»> xsd:complexType xsd:simpleContent <xsd:extension base =«OrderCurreny»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG7.CUX.C504.6345(0250:010:02)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«TotalOrderValue»> xsd:complexType xsd:simpleContent <xsd:extension base =«decimal1..12»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.MOA.C516.5004(2010:010:02)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«DateQualifier»> xsd:complexType xsd:simpleContent <xsd:extension base =«DateQualifier»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.DTM.0507.2005(0030:010:01)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«Date»> xsd:complexType xsd:simpleContent <xsd:extension base =«decimal8»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.DTM.C507.2380(0030:010:02)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«PartyQualifier»> xsd:complexType xsd:simpleContent <xsd:extension base =«PartyQualifier»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG2.NAD.3035(0120:010)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«Name»> xsd:complexType xsd:simpleContent <xsd:extension base =«string1..10»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG2.NAD.C080.3036(0120:040:01)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«Street»> xsd:complexType xsd:simpleContent <xsd:extension base =«string1..35»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG2.NAD.C059.3042(0120:050:01)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«City»> xsd:complexType xsd:simpleContent <xsd:extension base =«string1..35»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG2.NAD.3164(0120:060)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«PostCode»> xsd:complexType xsd:simpleContent <xsd:extension base =«decimal5»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG2.NAD.3251(0120:080)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«VATNumber»> xsd:complexType xsd:simpleContent <xsd:extension base =«string1..35»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG2.SG3.RFF.C506.1154(0160:010:02)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«ContactName»> xsd:complexType xsd:simpleContent <xsd:extension base =«string1..15»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG2.SG5.CTA.C056.3413(0220:020:01)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«AccountNumber»> xsd:complexType xsd:simpleContent <xsd:extension base =«decimal10»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG2.FII.C078.3194(0140:020:01)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«BIC»> xsd:complexType xsd:simpleContent <xsd:extension base =«decimal8»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG2.FII.C088.3433(0140:030:01)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«BankName»> xsd:complexType xsd:simpleContent <xsd:extension base =«string1..70»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG2.FII.C088.3432(0140:030:07)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«CommunicationNumber»> xsd:complexType xsd:simpleContent <xsd:extension base =«string1..12»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG2.SG5.COM.C076.3148(0230:010:01)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«CommunicationChannel»> xsd:complexType xsd:simpleContent <xsd:extension base =«CommunicationChannel»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG2.SG5.COM.C076.3155(0230:010:02)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«LineItemNumber»> xsd:complexType xsd:simpleContent <xsd:extension base =«decimal1..5»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG25.LIN.1082(0940:010)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«SuppliersArticleNumber»> xsd:complexType xsd:simpleContent <xsd:extension base =«string1..10»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG25.LIN.C212.7140(0940:030:01)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«ItemTextLine1»> xsd:complexType xsd:simpleContent <xsd:extension base =«string1..20»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG25.IMD.C273.7008(0960:030:04)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«ItemTextLine2»> xsd:complexType xsd:simpleContent <xsd:extension base =«string1..20»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG25.IMD.C273.7008(0960:030:05)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«QuantityOrdered»> xsd:complexType xsd:simpleContent <xsd:extension base =«decimal1..5»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG25.QTY.C186.6060(0970:010:02)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«MeasureUnit»> xsd:complexType xsd:simpleContent <xsd:extension base =«MeasureUnit»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG25.QTY.C186.6411(0970:010:03)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«LineItemAmount»> xsd:complexType xsd:simpleContent <xsd:extension base =«decimal1..18»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG25.MOA.C516.5004(0980:010:02)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name =«UnitPrice»> xsd:complexType xsd:simpleContent <xsd:extension base =«decimal1..12»> <xsd:attribute name=«EDIPath» type=«xsd:string» fixed=«ORDERS.SG25.SG27.PRI.C509.5118(1150:010:02)»/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:simpleType name=«string1..8»> <xsd:restriction base=«xsd:string»> <xsd:whiteSpace value=«preserve»/> <xsd:minLength value=«1»/> <xsd:maxLength value=«8»/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name=«DateQualifier»> <xsd:restriction base=«xsd:string»> <xsd:enumeration value=«4»/> <xsd:enumeration value=«2»/> <xsd:whiteSpace value=«preserve»/> <xsd:minLength value=«1»/> <xsd:maxLength value=«3»/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name=«decimal8»> <xsd:restriction base=«xsd:decimal»> <xsd:totalDigits value=«8»/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name=«PartyQualifier»> <xsd:restriction base=«xsd:string»> <xsd:enumeration value=«BY»/> <xsd:enumeration value=«SE»/> <xsd:whiteSpace value=«preserve»/> <xsd:minLength value=«1»/> <xsd:maxLength value=«3»/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name=«string1..10»> <xsd:restriction base=«xsd:string»> <xsd:whiteSpace value=«preserve»/> <xsd:minLength value=«1»/> <xsd:maxLength value=«10»/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name=«string1..35»> <xsd:restriction base=«xsd:string»> <xsd:whiteSpace value=«preserve»/> <xsd:minLength value=«1»/> <xsd:maxLength value=«35»/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name=«decimal5»> <xsd:restriction base=«xsd:decimal»> <xsd:totalDigits value=«5»/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name=«decimal10»> <xsd:restriction base=«xsd:decimal»> <xsd:totalDigits value=«10»/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name=«string1..70»> <xsd:restriction base=«xsd:string»> <xsd:whiteSpace value=«preserve»/> <xsd:minLength value=«1»/> <xsd:maxLength value=«70»/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name=«string1..15»> <xsd:restriction base=«xsd:string»> <xsd:whiteSpace value=«preserve»/> <xsd:minLength value=«1»/> <xsd:maxLength value=«15»/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name=«string1..12»> <xsd:restriction base=«xsd:string»> <xsd:whiteSpace value=«preserve»/> <xsd:minLength value=«1»/> <xsd:maxLength value=«12»/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name=«CommunicationChannel»> <xsd:restriction base=«xsd:string»> <xsd:enumeration value=«TE»/> <xsd:enumeration value=«FX»/> <xsd:whiteSpace value=«preserve»/> <xsd:minLength value=«1»/> <xsd:maxLength value=«3»/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name=«decimal1..5»> <xsd:restriction base=«xsd:decimal»> <xsd:totalDigits value=«5»/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name=«string1..20»> <xsd:restriction base=«xsd:string»> <xsd:whiteSpace value=«preserve»/> <xsd:minLength value=«1»/> <xsd:maxLength value=«20»/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name=«MeasureUnit»> <xsd:restriction base=«xsd:string»> <xsd:enumeration value=«TNE»/> <xsd:enumeration value=«KGM»/> <xsd:enumeration value=«GRM»/> <xsd:enumeration value=«LBR»/> <xsd:enumeration value=«LTR»/> <xsd:enumeration value=«DZN»/> <xsd:whiteSpace value=«preserve»/> <xsd:minLength value=«1»/> <xsd:maxLength value=«3»/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name=«decimal1..18»> <xsd:restriction base=«xsd:decimal»> <xsd:totalDigits value=«18»/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name=«decimal1..12»> <xsd:restriction base=«xsd:decimal»> <xsd:totalDigits value=«12»/> </xsd:restriction> </xsd:simpleType> </xsd:schema>
Пример XML-сообщения для вышеописанной схемы:
<!- — automatically generated by GEFEG EDIFIX — ->
<!- - http://www.gefeg.com - ->
1236547890
(справочное)
НАЦИОНАЛЬНЫМ СТАНДАРТАМ РОССИЙСКОЙ ФЕДЕРАЦИИ
| Обозначение ссылочного международного стандарта | Степень соответствия | Обозначение и наименование соответствующего национального стандарта |
| ИСО 8601:2004 | - | <*> |
| ИСО 9735-1:2002 | IDT | ГОСТ Р ИСО 9735-1-2012 «Электронный обмен данными в управлении, торговле и на транспорте (EDIFACT). Синтаксические правила для прикладного уровня (версия 4, редакция 1). Часть 1. Синтаксические правила, общие для всех частей» |
| <*> Соответствующий национальный стандарт отсутствует (в разработке). До его утверждения рекомендуется использовать перевод на русский язык данного международного стандарта. Перевод данного международного стандарта находится в Федеральном информационном фонде технических регламентов и стандартов. Примечание — В настоящей таблице использовано следующее условное обозначение степени соответствия стандартов: - IDT — идентичные стандарты. | ||
| УДК 658.6/.9:002.006.354 | ОКС 35.240.60 |
| Ключевые слова: электронный обмен данными, EDIFACT, XML-файл, XML-схема | |


