Примеры EXTENDED-XER кодирования с использованием команд кодирования XER
В.1 Введение
В.1.1 Это приложение содержит обучающую информацию и примеры применения команд кодирования XER.
Примечание - Все примеры АСН.1 в этом приложении предполагают использование среды AUTOMATIC TAGS.
В.1.2 Обычно команды кодирования требуется назначать спецификации АСН.1 только в том случае, когда разработчику требуется соответствие фактической формы XML кодирования форме, определенной другими спецификациями или приемлемой для других инструментов XML. В противном случае, может быть использована только АСН.1 (с кодированием BASIC-XER или CXER).
В.1.3 Если АСН.1 используется как нотация определения схемы, то дополнительное использование команд кодирования будет в общем случае обеспечивать более компактное XML кодирование, чем использование только АСН.1, но результаты кодирования будут представлять собой гораздо более длинные тексты, чем при использовании АСН.1 с Правилами Уплотненного Кодирования (PER).
Примечание - Примеры (а также идентификаторы и использованные имена типов), предназначены для иллюстрации особенностей EXTENDED-XER и, в общем, не представляют собой реальных спецификаций.
В.1.4 Команды кодирования XER делятся на две большие категории.
В.1.5 В первую категорию попадают команды кодирования, которые, обычно, полезны при разработке формы документа XML. Они, как правило, допустимы даже при отсутствии DEFAULTS GLOBAL MODIFIED-ENCODINGS. Двумя наиболее полезными из них являются ATTRIBUTE и LIST, и в п.В.2 представлены простые примеры их использования.
В.1.6 Во вторую категорию попадают команды кодирования, которые предназначены для поддержки отображения из W3C XML Schema, специфицированного в ИСО/МЭК 8825-5. Они обычно требуют наличия DEFAULTS GLOBAL MODIFIED-ENCODINGS в разделе управления кодированием, но это не показано в примерах. В этих примерах предполагается, что любой тип ссылки, начинающийся с "XSD.", будет импортирован из приложения А ИСО/МЭК 8825-5. В пункте В.3 приводятся примеры их использования. Эти примеры не являются полными модулями АСН.1 и полными XML-документами: модуль заголовков, как правило, опущен, а также предполагается, что любой XML атрибут, начинающийся с "asn1:", будет управляющим атрибутом, использующим пространство имен asn1 для управляющего атрибута, когда предполагается, что префикс "asn1" уже декларирован. (На практике, если источником результата кодирования является схема W3C XML Schema, более вероятно использование префикса "xsi" с пространством имен XSI).
В.1.7 Почти во всех случаях команды кодирования, снабженные префиксами, используются для ясности, хотя в реальной спецификации большая краткость (и более четкое отделение определения абстрактного синтаксиса от проблем кодировки) будет достигнута за счет использования Раздела Управления Кодированием.
В.2 Простые примеры
В.2.1 Бейсбольная карточка:
BBCard::= SEQUENCE { | ||
name [ATTRIBUTE] IA5String, | ||
team [ATTRIBUTE] IA5String, | ||
age INTEGER, | ||
position IA5String, | ||
handedness ENUMERATED { | ||
left-handed, | ||
right-handed, | ||
ambidextrous }, | ||
batting-average REAL} |
Игнорируя команду кодирования (BASIC-XER), мы получим:
<BBCard> | ||
<name>Jorge Posada</name> | ||
<team>New York Yankees</team> | ||
<age>29</age> | ||
<position>C</position> | ||
<handedness><right-handed/></handedness> | ||
<batting-average>0.277</batting-average> | ||
</BBCard> |
Результат кодирования EXTENDED-XER (с MODIFIED-ENCODINGS) того же значения будет:
<BBCard name = Jorge Posada team = New York Yankees> | ||
<age>29</age> | ||
<position>C</position> | ||
<handedness>right-handed</handedness> | ||
<batting-average>0.277</batting-average> | ||
</BBCard> |
B.2.2 Сотрудник
Employee::= [NAME AS UNCAPITALIZED] SEQUENCE { | ||
id [ATTRIBUTE] INTEGER(0..MAX), | ||
recruited XSD.Date, | ||
salaries [LIST] SEQUENCE | ||
OF salary REAL} |