Примеры кодирования
Настоящее приложение иллюстрирует применение правил XML кодирования, а также содержит XML разметку представления записи (гипотетической) данных о персонале, которая определяется с использованием АСН.1.
А.1 АСН.1 описание структуры записи
Ниже представлена структура гипотетической кадровой записи данных с использованием АСН.1, определенной в ИСО/МЭК 8824-1 и идентичной описанной в ИСО/МЭК 8825-1 (приложение А):
PersonnelRecord :: = [APPLICATION 0] IMPLICIT SET { | ||||||||
name | Name, | |||||||
title | [0] VisibleString, | |||||||
number | EmployeeNumber, | |||||||
dateOfHire | [1] Date, | |||||||
nameOfSpouse | [2] Name, | |||||||
children | [3] IMPLICIT | |||||||
SEQUENCE OF Childlnformation DEFAULT {}} | ||||||||
Childlnformation :: = SET | ||||||||
{ name | Name, | |||||||
dateOfBirth | [0] Date} | |||||||
Name :: = [APPLICATION 1] IMPLICIT SEQUENCE | ||||||||
{ givenName | VisibleString, | |||||||
initial | VisibleString, | |||||||
familyName | VisibleString} | |||||||
EmployeeNumber :: = [APPLICATION 2] IMPLICIT INTEGER | ||||||||
Date :: = [APPLICATION 3] IMPLICIT VisibleString - YYYYMMDD |
Примечание - Теги используются только для сравнения с примером предыдущей версии ИСО/МЭК 8824-1 и не влияют на XML кодирование.
А.2 АСН.1 описание значений записи
Ниже представлены значения кадровой записи данных "John Smith's" с использованием основной нотации значений АСН.1:
{ name | {givenName "John", initial "P", familyName "Smith"}, | |||||||
title | "Director", | |||||||
number | 51, | |||||||
dateOfHire | "19710917", | |||||||
nameOfSpouse {givenName "Mary", initial "T", familyName "Smith"}, | ||||||||
children | ||||||||
{{name {givenName "Ralph", initial "T", familyName "Smith"}, | ||||||||
dateOfBirth "19571111"}, | ||||||||
{ name {givenName "Susan", initial "B", familyName "Jones"}, | ||||||||
dateOfBirth "19590717" }}} |
A.3 Базовое XML представление значения записи
Представление значения записи, приведенной выше (после применения базовых правил XML кодирования), предполагает пустой пролог.
Длина этого кодирования в BASIC-XER имеет 653 октета без всех разделителей. Для сравнения: та же запись, кодированная с UNALIGNED вариантом PER (см. ИСО/МЭК 8825-1), имеет 84 октета, с ALIGNED вариантом PER - 94 октета, с BER (см. ИСО/МЭК 8825-2), используя форму определенной длины, - не менее чем 136 октетов и с BER, используя форму неопределенной длины, - не менее чем 161 октет.
<PersonnelRecord> | ||||||||
<name> | ||||||||
<givenName>John</givenName> | ||||||||
<initial>P</initial> | ||||||||
<familyName>Smith</familyName> | ||||||||
</name> | ||||||||
<title>Director</title> | ||||||||
<number>51 </number> | ||||||||
<dateOfHire>19710917</dateOfHire> | ||||||||
<nameOfSpouse> | ||||||||
<givenName>Mary</givenName> | ||||||||
<initial>T</initial> | ||||||||
</nameOfSpouse> | ||||||||
<children> | ||||||||
<Childlnformation> | ||||||||
<name> | ||||||||
<givenName>Ralph</givenName> | ||||||||
<initial>T</initial> | ||||||||
<familyName>Smith</familyName> | ||||||||
</name> | ||||||||
<dateOfBirth>19571111</dateOfBirth> | ||||||||
</Childlnformation> | ||||||||
<Childlnformation> | ||||||||
<name> | ||||||||
<givenName>Susan</givenName> | ||||||||
<initial>B</initial> | ||||||||
<fam8ilyName>Jones</familyName> | ||||||||
</name> | ||||||||
<dateOfBirth>19590717</dateOfBirth> | ||||||||
</Childlnformation> | ||||||||
</children> | ||||||||
</PersonnelRecord> |
A.4 Каноническое XML представление значения этой записи
Ниже представлено значение записи, приведенной выше (после применения канонических правил XML кодирования):
<PersonnelRecord><name><givenName>John</givenName><initial>P</initial><familyName<Smith</familyName> </name><number>51</number><title>Director</title><dateOfHire>19710917</dateOfHire><nameOfSpouse><given Name>Mary</givenName><initial>T</initial><familyName>Smith</familyName></nameOfSpouse><children><Childl- nformation><name><givenName>Ralph</givenName><initial>T</initial><familyName>Smith</familyName></name> <dateOfBirth>19571111</dateOfBirth></Childlnformation><Childlnformation><name><givenName>Susan</givenName> <initial>B</initial><familyName>Jones</familyName></name><dateOfBirth>19590717</dateOfBirth></Childlnformation> </children></PersonnelRecord> |