4 Приказом Федерального агентства по техническому регулированию и метрологии от 11 июня 2014 г. N 565-ст межгосударственный стандарт ГОСТ ISO/IEC 24824-1-2013 введен в действие в качестве национального стандарта Российской Федерации с 1 сентября 2015 г.
5 Настоящий стандарт идентичен международному стандарту ISO/IEC 24824-1:2007 Information technology - Generic applications of ASN.1: Fast infoset. Part 1 (Информационные технологии. Общие правила применения ASN.1. Быстрые команды. Часть 1).
Перевод с английского языка (en).
Сведения о соответствии межгосударственных стандартов ссылочным международным стандартам приведены в дополнительном приложении ДА.
Степень соответствия - идентичная (IDT)
6 ВВЕДЕН ВПЕРВЫЕ
Информация об изменениях к настоящему стандарту публикуется в ежегодном информационном указателе "Национальные стандарты", а текст изменений и поправок - в ежемесячном информационном указателе "Национальные стандарты". В случае пересмотра (замены) или отмены настоящего стандарта соответствующее уведомление будет опубликовано в ежемесячном информационном указателе "Национальные стандарты". Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования - на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет
В настоящем стандарте определен тип ASN.1 (по ISO/IEC 8824-1), абстрактные значения которого представляют экземпляры инфо-набора W3C XML. Также определены двоичные кодирования для указанных значений с использованием нотации контроля кодирования ASN.1 (по ISO/IEC 8825-3).
Примечание - Данные кодирования называют документами быстрого инфо-набора.
В настоящем стандарте также определены методы:
- минимизирующие размер документов быстрого инфо-набора;
- максимизирующие скорость создания и обработки документов быстрого инфо-набора;
- позволяющие (создателю документа быстрого инфо-набора) определять дополнительные обрабатываемые данные.
Первые два метода основываются на использовании словарных таблиц. Набор словарных таблиц и характер их записей полностью определены в настоящем стандарте, но их представление в памяти компьютера не входит в область применения настоящего стандарта.
Обеспечение передачи или хранения, а также формальная нотация для отображения или определения словарных таблиц, которые должны использоваться в качестве внешних словарей, также не входят в область применения настоящего стандарта.
Третий метод заключается в предоставлении дополнительных обрабатываемых данных и URI, которые идентифицируют форму и семантику этих данных. Спецификация конкретных форм дополнительных обрабатываемых данных и их использование не входят в область применения настоящего стандарта.
URI могут быть использованы для идентификации окончательных словарей, которые, в свою очередь, могут быть использованы как часть какого-либо нового исходного словаря или составлять его целиком, однако присвоение конкретных URI конкретным окончательным словарям не входит в область применения настоящего стандарта.
В настоящем стандарте определены встроенные алфавиты с ограниченной областью распространения, описаны добавление к словарным таблицам дополнительных алфавитов с ограниченной областью распространения путем нумерации и использование этих словарных таблиц для эффективного кодирования строк символов.
В настоящем стандарте определены встроенные алгоритмы кодирования для оптимального кодирования определенных строк символов и описано добавление к словарным таблицам дополнительных алгоритмов кодирования, идентифицированных URI, но определение этих дополнительных алгоритмов и связанных с ними URI не входит в область применения настоящего стандарта.
Кроме того, в настоящем стандарте определен медиатип многоцелевых расширений интернет-почты (MIME), который идентифицирует документ быстрого инфо-набора.
Для применения настоящего стандарта необходимы следующие ссылочные документы. Для датированных ссылок применяют только указанное издание ссылочного документа, для недатированных ссылок применяют последнее издание ссылочного документа (включая все его изменения).
- ITU-T Recommendation X.667 (2004) | ISO/IEC 9834-8:2005 <1> Information technology - Open Systems Interconnection - Procedures for the operation of OSI Registration Authorities: Generation and registration of Universally Unique Identifiers (UUIDs) and their use as ASN.1 Object Identifier components (Рекомендация МСЭ-Т X.667 (2004) | ISO/IEC 9834-8:2005 Информационные технологии. Взаимосвязь открытых систем. Процедуры для работы регистрационных органов в системе OSI. Часть 8. Создание и регистрация универсально уникальных идентификаторов и их использование в качестве компонентов идентификаторов объектов ASN.1)
--------------------------------
<1> Отменен. Действует ISO/IEC 9834-8:2014.
- ITU-T Recommendation X.680 (2002) | ISO/IEC 8824-1:2002 <2> Information technology - Abstract Syntax Notation One (ASN.1): Specification of basic notation (Рекомендация МСЭ-Т X.680 (2002) | ISO/IEC 8824-1:2002 Информационные технологии. Нотация абстрактного синтаксиса версии 1 (ASN.1). Часть 1. Спецификация базовой нотации)
--------------------------------
<2> Отменен. Действует ISO/IEC 8824-1:2008.
- ITU-T Recommendation X.681 (2002) | ISO/IEC 8824-2:2002 <3> Information technology - Abstract Syntax Notation One (ASN.1): Information object specification (Рекомендация МСЭ-Т X.681 (2002) | ISO/IEC 8824-2:2002 Информационные технологии. Нотация абстрактного синтаксиса версии 1 (ASN.1). Часть 2. Спецификация информационных объектов)
--------------------------------
<3> Отменен. Действует ISO/IEC 8824-2:2008.
- ITU-T Recommendation X.682 (2002) | ISO/IEC 8824-3:2002 <4> Information technology - Abstract Syntax Notation One (ASN.1): Constraint specification (Рекомендация МСЭ-Т X.682 (2002) | ISO/IEC 8824-3:2002 Информационные технологии. Нотация абстрактного синтаксиса версии 1 (ASN.1). Часть 3. Спецификация ограничений)
--------------------------------
<4> Отменен. Действует ISO/IEC 8824-3:2008.
- ITU-T Recommendation X.683 (2002) | ISO/IEC 8824-4:2002 <5> Information technology - Abstract Syntax Notation One (ASN.1): Parameterization of ASN.1 specifications (Рекомендация МСЭ-Т X.683 (2002) | ISO/IEC 8824-4:2002 Информационные технологии. Нотация абстрактного синтаксиса версии 1 (ASN.1). Часть 4. Спецификация для параметризации ASN.1)
--------------------------------
<5> Отменен. Действует ISO/IEC 8824-4:2008.
- ITU-T Recommendation X.690 (2002) | ISO/IEC 8825-1:2002 <6> Information technology - ASN.1 encoding rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER), and Distinguished Encoding Rules (DER) [Рекомендация МСЭ-Т X.690 (2002) | ISO/IEC 8825-1:2002 Информационные технологии. Правила кодирования ASN.1. Часть 1. Спецификация основных (BER), канонических (CER) и различительных правил кодирования (DER)]
--------------------------------
<6> Отменен. Действует ISO/IEC 8825-1:2008.
- ITU-T Recommendation X.691 (2002) | ISO/IEC 8825-2:2002 <7> Information technology - ASN.1 encoding rules: Specification of Packed Encoding Rules (PER) [Рекомендация МСЭ-Т X.691 (2002) | ISO/IEC 8825-2:2002 Информационные технологии. Правила кодирования ASN.1. Часть 2. Спецификация правил уплотненного кодирования (PER)]
--------------------------------
<7> Отменен. Действует ISO/IEC 8825-2:2008.
- ITU-T Recommendation X.692 (2002) | ISO/IEC 8825-3:2002 <8> Information technology - ASN.1 encoding rules: Specification of Encoding Control Notation (ECN) [Рекомендация МСЭ-Т X.692 (2002) | ISO/IEC 8825-3:2002 Информационные технологии. Правила кодирования ASN.1. Часть 3. Спецификация нотации контроля кодирования (ECN)]
--------------------------------
<8> Отменен. Действует ISO/IEC 8825-3:2008.
- ITU-T Recommendation X.693 (2001) | ISO/IEC 8825-4:2002 <9> Information technology - ASN.1 encoding rules: XML Encoding Rules (XER) [Рекомендация МСЭ-Т X.693 (2001) | ISO/IEC 8825-4:2002 Информационные технологии. Правила кодирования ASN.1. Часть 4. Правила кодирования XML (XER)]
--------------------------------
<9> Отменен. Действует ISO/IEC 8825-4:2008.
Примечание - Приведен полный перечень рекомендаций и международных стандартов по ASN.1, так как все они могут быть применены в конкретных случаях использования настоящего стандарта. Если в тексте настоящего стандарта нет прямых ссылок на какой-либо документ, то в приведенном списке данный документ помечен символом
- ISO 8601:2004, Data elements and interchange formats - Information interchange - Representation of dates and times (ISO 8601:2004 Элементы данных и форматы для обмена информацией. Обмен информацией. Представление дат и времени)
- ISO/IEC 10646:2003 <1> Information technology - Universal Multiple-Octet Coded Character Set (UCS) [ISO/IEC 10646:2003 Информационные технологии. Универсальный многооктетный набор кодированных символов (UCS)]
--------------------------------
<1> Отменен. Действует ISO/IEC 10646:2014.
- The Unicode Standard, Version 4.0, The Unicode Consortium (Reading, MA, Addison-Wesley) (Стандарт Юникод, версия 4.0, Консорциум Юникода)
Примечание 1 - Графические символы (и их кодирования), определенные в стандарте Юникод, идентичны тем, которые определены в ISO/IEC 10646-1, а стандарт Юникод включен в перечень потому, что в нем определены имена управляющих символов и аббревиатура UTF-16BE.
- W3C XML 1.0:2004, Extensible Markup Language (XML) 1.0 (Third Edition), W3C Recommendation, Copyright
- W3C XML 1.1:2004, Extensible Markup Language (XML) 1.1, W3C Recommendation, Copyright
Примечание 2 - В перечень включены ссылки как на W3C XML 1.0, так и на W3C XML 1.1, поскольку ни один из них не является подмножеством другого. Данные ссылки использованы только в 3.4.10.
- W3C XML Information Set:2004, XML Information Set (Second Edition), W3C Recommendation, Copyright
- W3C XML Namespaces 1.0:1999, Namespaces in XML, W3C Recommendation, Copyright
- W3C XML Namespaces 1.1:2004, Namespaces in XML 1.1, W3C Recommendation, Copyright
Примечание 3 - В перечень включены ссылки как на пространства имен W3C XML 1.0, так и на пространства имен W3C XML 1.1, поскольку ни одно из них не является подмножеством другого. Данные ссылки использованы только в 3.4.10.
- IETF RFC 2045 (1996), Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies (IETF RFC 2045 (1996). Многоцелевые расширения интернет-почты (MIME). Часть 1. Формат текста интернет-сообщения)
- IETF RFC 2396 (1998), Uniform Resource Identifiers (URI): Generic Syntax (IETF RFC 2396 (1998). Универсальный код ресурса (URI): Основной синтаксис)
- IEEE 754-1985 <1> IEEE Standard for Binary Floating-Point Arithmetic (IEEE 754-1985. Стандарт формата представления чисел с плавающей точкой)
--------------------------------
<1> Отменен. Действует IEEE 754-2008.
В настоящем стандарте применены следующие термины по международным стандартам:
В настоящем стандарте применены следующие термины по ISO/IEC 8824-1:
a) тип choice;
b) тип sequence;
c) тип sequence-of.
В настоящем стандарте применены следующие термины по ISO/IEC 8825-3:
a) модуль определения кодирования (EDM);
b) модуль связи кодирования (ELM).
В настоящем стандарте применен следующий термин по ISO/IEC 10646:
a) основная многоязычная плоскость.
В настоящем стандарте применены следующие термины с соответствующими определениями:
3.4.1 Base64: Метод кодирования, представляющий значение строки октетов в виде строки символов, в которой использован алфавит с ограниченной областью распространения из 65 символов (см. 10.3 и IETF RFC 2045).
3.4.2 строка символов (character string): Строка абстрактных символов по ISO/IEC 10646, не подразумевающая какого-либо способа кодирования.
3.4.3 алгоритм кодирования (encoding algorithm): Точная спецификация того, как эффективно закодировать в виде октетов строку символов с заданными характеристиками.
Примечание - Примером алгоритма кодирования является кодирование строки вида "-32176" в виде двоичного целого дополнения в двух октетах. Двухоктетное кодирование следует сопроводить индексом словарной таблицы, идентифицирующим этот алгоритм кодирования.
3.4.4 внешний словарь (external vocabulary): Набор словарных таблиц, указанный URI (см. 7.2.14).
3.4.5 документ быстрого инфо-набора (fast infoset document): Инфо-набор XML, представленный в соответствии с требованиями настоящего стандарта.
3.4.6 окончательный словарь (final vocabulary): Содержимое словарных таблиц по окончании создания или обработки документа быстрого инфо-набора.
3.4.7 информационный элемент (information item): Каждый из типов элементов, составляющих инфо-набор XML.
3.4.8 исходный словарь (initial vocabulary): Набор словарных таблиц, установленный информацией о заголовке документа быстрого инфо-набора, который (опционально) ссылается на внешний словарь и (опционально) предоставляет дополнительные записи таблицы.
3.4.9 идентификатор имени (name surrogate): Набор из трех индексов словарной таблицы (первые два являются опциональными), который используют для представления квалифицированного имени (см. 3.4.11).
3.4.10 корректно сформированный в отношении пространств имен документ XML (namespace-well-formed XML document): Документ W3C XML 1.0, сформированный корректно в соответствии с пространством имен W3C XML 1.0, либо документ W3C XML 1.1, сформированный корректно в соответствии с пространством имен W3C XML 1.1.
3.4.11 квалифицированное имя (qualified name): Набор, состоящий из свойств [prefix], [namespace name] и [local name] информационного элемента element или информационного элемента attribute.
3.4.12 алфавит с ограниченной областью распространения (restricted alphabet): Упорядоченный набор отдельных символов по ISO/IEC 10646, который позволяет компактно кодировать любую строку символов, полностью состоящую из символов данного набора.
3.4.13 индекс словарной таблицы (vocabulary table index): Положительное целое значение, идентифицирующее запись в словарной таблице.
3.4.14 словарные таблицы (vocabulary tables): Набор концептуальных таблиц (обычно, но необязательно, создаваемых динамически), связанный с документом быстрого инфо-набора, который содержит строки символов или другую информацию и поддерживает использование обычно малых положительных целых значений (индексов словарных таблиц) для идентификации записей в таблицах.
Примечание - Примерами словарных таблиц являются таблицы, содержащие строки символов, которые являются свойством [local name] информационных элементов attribute или element, или строки символов, соответствующие последовательностям информационных элементов character, которые являются членами свойства [children] информационных элементов element.
3.4.15 декларация XML (XML declaration): Кодирование windows-1251 заданной строки символов (см. 12.3), которое может быть включено в начало документа быстрого инфо-набора для идентификации данного кодирования как документа быстрого инфо-набора и для того, чтобы отличить его от документов W3C XML 1.0 и документов W3C XML 1.1.
3.4.16 инфо-набор XML (XML infoset): Абстрактное множество данных, описывающее информацию в корректно сформированном в отношении пространств имен документе XML, как определено в инфо-наборе W3C XML.
3.4.17 пробел XML (XML whitespace): Один или несколько следующих символов Unicode: HORIZONTAL TABULATION (9), LINE FEED (10), CARRIAGE RETURN (13) или SPACE (32).
Примечание - Эти символы соответствуют символам "S" (пробелы) как в W3C XML 1.0, так и в W3C XML 1.1 (см. W3C XML 1.0, п. 2.3 и W3C XML 1.1, п. 2.3). Символы NEXT LINE (133) и LINE SEPARATOR (8232), которые могут встретиться в корректно сформированных в отношении пространств имен документах W3C XML 1.1 (см. W3C XML 1.1, п. 2.11), преобразуются в символы LINE FEED при обработке конца строки (см. W3C XML 1.1, п. 2.11). Когда эти символы встречаются в инфо-наборе XML, созданном из корректно сформированного в отношении пространств имен документа W3C XML 1.1, они не являются пробелами XML.
В настоящем стандарте применены следующие сокращения:
ASN.1 - Abstract Syntax Notation One (абстрактная синтаксическая нотация версии 1);
ECN - Encoding Control Notation (нотация контроля кодирования);
MIME - Multipurpose Internet Mail Extensions (многоцелевые расширения интернет-почты);
UBL - Universal Business Language (универсальный бизнес-язык);
URI - Uniform Resource Identifier (унифицированный идентификатор ресурса);
windows-1251 - Universal Transformation Function 8-bit (универсальная функция преобразования, 8 бит, по ISO/IEC 10646, Приложение D);
UTF-16BE - Universal Transformation Function 16-bit Big Endian (универсальная функция преобразования, 16 бит, по Unicode, п. 2.6);
UUID - Universally Unique Identifier (универсальный уникальный идентификатор);
XML - eXtensible Markup Language (расширяемый язык разметки).
5.1 Для формального определения типов данных, кодирования которых являются документами быстрого инфо-набора, в настоящем стандарте используют нотацию ASN.1 по ISO/IEC 8824-1.
Примечание - В разделе 12 определено применение ISO/IEC 8825-3 к определению типов ASN.1, обеспечивающее кодирование документа быстрого инфо-набора на уровне битов.
5.2 В настоящем стандарте полужирный шрифт Courier New используется для нотации ASN.1, а полужирный шрифт Arial - для синтаксиса W3C XML и имен информационных элементов инфо-набора XML.
5.3 Имена свойств информационных элементов пишут полужирным шрифтом Arial и заключают в квадратные скобки (например, [children]).
5.4 Имена категорий строк символов (см. 8.4.2) и категорий уточненных имен пишут ПРОПИСНЫМИ БУКВАМИ.
5.5 В настоящем стандарте позиции битов внутри октета специфицируют с использованием терминов "первый бит", "второй бит" и т.д. до "восьмого бита", где первый бит является самым старшим битом октета, а восьмой бит - самым младшим.
6.1 Словарные таблицы представляют собой концептуальные таблицы, отображающие индекс словарной таблицы в ее запись.
Примечание - В настоящем стандарте не определяется представление словарных таблиц в памяти компьютера и средства, с помощью которых реализация отображает индекс словарной таблицы в ее запись.
6.2 Содержимое словарных таблиц определяет создатель документа быстрого инфо-набора из инфо-набора XML.
6.3 В самом общем случае заголовок документа быстрого инфо-набора может ссылаться на набор словарных таблиц (внешний словарь) с последующей спецификацией дополнений к этим словарным таблицам с целью формирования исходного словаря для данного документа быстрого инфо-набора. В ходе создания и обработки документа быстрого инфо-набора происходят последующие добавления к словарным таблицам, в результате чего они увеличиваются, образуя окончательные словарные таблицы для данного документа.
6.4 В ходе создания и обработки документа быстрого инфо-набора некоторые словарные таблицы увеличиваются от исходного словаря до окончательного, и поэтому имена таких словарных таблиц содержат слово "динамическая". Методы удаления записей из каких-либо таблиц отсутствуют.
6.5 Индексы словарных таблиц присваивают неявно. Первая запись в любой словарной таблице имеет индекс словарной таблицы, равный единице, а каждая последующая запись в данной таблице имеет в качестве значения индекса словарной таблицы следующее по порядку целое значение. Когда в настоящем стандарте специфицировано, что в словарную таблицу должно быть что-либо добавлено, то подразумевается, что должен быть присвоен следующий доступный индекс словарной таблицы.
Примечание - Значения индексов словарных таблиц начинаются с единицы, а не с нуля потому, что значение ноль (когда оно допустимо) имеет специальный смысл "пустая строка символов" в поле, которое в противном случае может содержать индекс словарной таблицы.
6.6 Для поддержки такого неявного присвоения индексов словарных таблиц определен концептуальный порядок обработки компонентов (на любую глубину) документа быстрого инфо-набора (см. 8.1).
Примечание - Указанный порядок совпадает с порядком кодирования компонентов в документе быстрого инфо-набора. Это не обязательно подразумевает, что семантика документа обрабатывается в том же порядке. Данный порядок определен только для того, чтобы создатель и обработчик документа быстрого инфо-набора присваивали любой заданной записи словарной таблицы один и тот же индекс словарной таблицы.
6.7 Словарные таблицы применяют для разных целей (см. раздел 8), их основной функцией является обеспечение использования индексов словарных таблиц вместо записей словарных таблиц, когда эти индексы меньше по размеру (и, возможно, будут быстрее обработаны), чем записи. Некоторые встроенные записи для некоторых словарных таблиц определены в разделе 9. Эти записи всегда неявно присутствуют в указанных словарных таблицах и имеют значения индексов словарных таблиц, определенные в разделе 9.
6.8 Для некоторых категорий строк символов создатель документа быстрого инфо-набора имеет возможность выбора: добавлять или нет строку в словарную таблицу в зависимости от предполагаемого (или известного) числа появлений данной строки символов в инфо-наборе XML.
6.9 Точная форма и смысл записей словарных таблиц определены в разделе 8; в большинстве случаев записи представляют собой строки символов переменной длины, часто короткие, но потенциально длиной до 232 октет.
6.10 Соответствующий требованиям создатель документа быстрого инфо-набора должен осуществлять все добавления в словарные таблицы так, как определено в 7.13.7, 7.14.6, 7.14.7 и 7.16.7. Тем самым гарантируется, что число записей в каждой словарной таблице никогда не превысит 220.
Примечание - Запись словарной таблицы может быть идентична одной или нескольким другим записям словарной таблицы. Это позволяет эффективно создавать документы быстрого инфо-набора. Однако дубликаты записей снижают эффективность передачи. Дубликаты записей не влияют на обработчика документа быстрого инфо-набора.
6.11 Соответствующий требованиям обработчик документа быстрого инфо-набора должен осуществлять все добавления в словарные таблицы так, как определено в 7.13.8, 7.14.11 <1> и 7.16.8. Тем самым гарантируется, что указанные в 6.10 ограничения не будут нарушены.
--------------------------------
<1> Ссылка в ISO/IEC 24824-1:2007 дана ошибочно, пункт 7.14.11 в оригинале отсутствует.
7.1.1 В настоящем стандарте определен набор типов ASN.1, поддерживающих представление инфо-набора XML. Корневым типом данного набора является тип Document.
7.1.2 Для содержимого инфо-наборов XML установлены некоторые ограничения и сделаны некоторые упрощения в представлении (см. раздел 11) для того, чтобы повысить удобство использования данной спецификации и эффективность создаваемых с ее помощью кодирований.
Примечание - Инфо-набор XML, не соответствующий установленным ограничениям, не может быть представлен в виде документа быстрого инфо-набора или корректно сформированного в отношении пространств имен документа XML.
7.1.3 В настоящем стандарте для каждого вида информационных элементов, специфицированного в инфо-наборе W3C XML, приведено определение соответствующего типа ASN.1. Это определение типа всегда является последовательностью с компонентами, соответствующими свойствам информационного элемента.
7.1.4 Некоторые свойства информационных элементов не включены в определения типов ASN.1 (см. 11.4).
7.1.5 В некоторых случаях значение свойства, не включенного в определения типов ASN.1, может быть выведено из значений других свойств того же самого информационного элемента или других информационных элементов, включенных в определения типов ASN.1. В таких случаях опущение этого свойства упрощает представление без потерь информации. Однако существуют случаи, когда значение невключенного свойства не может быть выведено из значений других свойств. Во всех подобных случаях опущение такого свойства является упрощением, не ограничивающим полезность данной спецификации для большинства случаев ее практического применения.
7.1.6 В разделе 12 определено кодирование типа Document.
где значением one-meg является:
one-meg INTEGER ::= 1048576 -- Два в степени 20
Тип NonEmptyOctetString:
NonEmptyOctetString ::= OCTET STRING (SIZE(1..four-gig))
где значением four-gig является:
four-gig INTEGER ::= 4294967296 -- Два в степени 32
Тип URI:
URI ::= NonEmptyOctetString
7.2.2 Типы EncodedCharacterString, NameSurrogate, Notation, UnparsedEntity, NonIdentifyingStringOrIndex, Element, ProcessingInstruction, Comment и DocumentTypeDeclaration определены в 7.17, 7.15, 7.11, 7.10, 7.14, 7.3, 7.5, 7.8 и 7.9 соответственно.
7.2.3 Тип URI должен быть URI по IETF RFC 2396.
7.2.4 Компонент restricted-alphabets в initial-vocabulary (при его наличии) должен содержать одну или несколько строк символов, каждая из которых, в свою очередь, содержит символы алфавита с ограниченной областью распространения. Каждая строка символов должна содержать как минимум два символа, и все символы в строке символов должны быть различными.
Примечание - Использование алфавита с ограниченной областью распространения для оптимизации кодирования строк символов определено в 7.17.6.
7.2.5 Компонент encoding-algorithms в initial-vocabulary (при его наличии) должен содержать один или несколько URI, каждый из которых идентифицирует алгоритм кодирования.
Примечание - В настоящем стандарте определены встроенные алгоритмы кодирования (см. раздел 10) с определенными индексами словарных таблиц; определение дополнительных алгоритмов кодирования, связанных с ними индексов словарных таблиц и способов определения таких алгоритмов не входит в область применения настоящего стандарта. Информация, необходимая для определения алгоритма кодирования, специфицирована в 8.3.3.
7.2.6 Тип Document представляет информационный элемент document инфо-набора XML. Так как все остальные информационные элементы в инфо-наборе XML являются свойствами либо этого информационного элемента, либо элементов, являющихся дочерними элементами или потомками (произвольной глубины) данного, то каждый информационный элемент Document полностью представляет инфо-набор XML.
Примечание - Каждый информационный элемент Document без ссылки на внешний словарь (см. 7.2.13) также определяет окончательный словарь, который может быть использован как внешний словарь какого-либо другого документа быстрого инфо-набора.
7.2.7 Компонент additional-data (при его наличии) должен содержать один или несколько компонентов additional-datum для обеспечения возможности дополнительных методов обработки документа быстрого инфо-набора.
Примечания
1 Примером являются данные, которые предоставляют обработчику документа быстрого инфо-набора доступ к частям документа быстрого инфо-набора без необходимости обрабатывать весь документ. Форма таких данных не стандартизирована.
2 Количество компонентов additional-datum ограничено 220 компонентами (см. 7.2.1).
7.2.8 Каждый компонент additional-datum должен состоять из:
a) компонента id (значение типа URI); URI должен ссылаться на спецификацию, определяющую форму и семантику компонента data.
Примечание - Форма additional-datum может быть задана как абстрактный тип в сочетании с правилом кодирования или иным пригодным способом;
b) компонента data, являющегося строкой октетов, которая содержит дополнительные данные обработки.
7.2.9 Использование компонента additional-data подчиняется следующим условиям:
a) компонент additional-datum может быть проигнорирован обработчиком документа быстрого инфо-набора, если URI не распознан или дополнительная обработка рассматривается как не относящаяся к деятельности обработчика документа быстрого инфо-набора;
b) обработчик документа быстрого инфо-набора, игнорирующий все компоненты additional-datum, тем не менее способен создать инфо-набор XML, эквивалентный инфо-набору XML, использованному для создания документа быстрого инфо-набора.
7.2.10 Могут присутствовать несколько компонентов additional-datum с одним и тем же URI, и они должны быть обработаны в соответствии со спецификацией, связанной с URI.
7.2.11 Компонент initial-vocabulary предоставляет данные, которые (совместно с некоторыми встроенными записями таблиц) полностью определяют первоначальное содержимое таблицы алфавитов с ограниченной областью распространения (см. 8.2), таблицы алгоритмов кодирования (см. 8.3), динамических таблиц строк (см. 8.4) и динамических таблиц имен (см. 8.5) данного документа быстрого инфо-набора (исходный словарь документа быстрого инфо-набора). Исходный словарь состоит из следующих данных:
a) упорядоченного набора алфавитов с ограниченной областью распространения (см. 8.2.2), содержащего как минимум встроенные алфавиты с ограниченной областью распространения (см. раздел 9);
b) упорядоченного набора алгоритмов кодирования (см. 8.3.2), содержащего как минимум встроенные алгоритмы кодирования (см. раздел 10);
c) восьми независимых упорядоченных наборов строк символов, соответствующих восьми категориям строк символов, определенным в настоящем стандарте (см. 8.4.2); каждый из наборов содержит ноль или более строк символов одной категории;
d) двух независимых упорядоченных наборов идентификаторов имен (см. 8.5.2), соответствующих двум категориям квалифицированных имен, определенным в настоящем стандарте (см. 8.5.4); каждый из наборов содержит ноль или более идентификаторов имен одной категории.
Примечание - Исходный словарь не может быть полностью пустым, так как он всегда содержит (как минимум) встроенные алфавиты с ограниченной областью распространения и встроенные алгоритмы кодирования. Однако для документов быстрого инфо-набора не является необычной ситуация, когда исходный словарь содержит только эти данные, так как решение (создателя документа быстрого инфо-набора) о том, как использовать компонент initial-vocabulary, зависит от реализации, и в некоторых реализациях может быть выбрано динамическое добавление записей во все словарные таблицы (внутри тела документа быстрого инфо-набора).
7.2.12 Исходный словарь документа быстрого инфо-набора должен быть определен следующим образом:
a) если компонент initial-vocabulary отсутствует, то исходный словарь должен состоять только из встроенных записей таблиц, определенных в 7.2.21, 7.2.22 и в разделах 9 и 10;
b) если компонент initial-vocabulary присутствует, а компонент external-vocabulary отсутствует, то исходный словарь должен состоять из встроенных записей таблиц, определенных в 7.2.21, 7.2.22 и в разделах 9 и 10, с дополнительными записями таблиц (при их наличии), определенными в 7.2.16;
c) если компоненты initial-vocabulary и external-vocabulary присутствуют, то исходный словарь должен состоять из окончательного словаря, идентифицированного компонентом external-vocabulary, как определено в 7.2.13 и 7.2.14, с дополнительными записями таблиц (при их наличии), определенными в 7.2.16.
7.2.13 Компонент external-vocabulary идентифицирует окончательный словарь, используя один из определенных в 7.2.14 способов. Тип URI (см. 7.2.1) определяет окончательный словарь, который будет использован как внешний словарь одним из трех способов (см. 7.2.14).
Примечание - В настоящем стандарте не определены никакие внешние словари и URI, которые ссылаются на внешние словари. Такие внешние словари и URI могут быть определены как уполномоченные, имеющие возможность выделять URI, и могут быть согласованы в частном порядке или стандартизированы.
a) как окончательный словарь документа быстрого инфо-набора, который не должен сам ссылаться на внешний словарь.
Примечания
1 Хранится локально окончательный словарь или только документ быстрого инфо-набора, а окончательный словарь создается динамически в ходе обработки - зависит от конкретной реализации.
2 Ограничение, состоящее в том, что окончательный словарь документа быстрого инфо-набора со ссылкой на внешний словарь не может быть использован в качестве внешнего словаря, установлено для того, чтобы упростить реализацию и избежать циклических ссылок;
b) как корректно сформированный в отношении пространств имен документ XML, который концептуально обрабатывается следующим образом:
1) должен быть определен инфо-набор XML данного корректно сформированного в отношении пространств имен документа XML;
2) должен быть создан документ быстрого инфо-набора для этого инфо-набора XML, как определено в настоящем стандарте, но он не должен содержать компонент initial-vocabulary, компонент add-to-table типа NonIdentifyingStringOrIndex (см. 7.14) всегда должен быть равен TRUE, и ни в одной из таблиц строк не должны присутствовать кратные идентичные строки символов;
3) окончательный словарь этого документа быстрого инфо-набора становится внешним словарем.
Примечание - Хранится локально окончательный словарь или только документ быстрого инфо-набора, а окончательный словарь создается динамически в ходе обработки - зависит от конкретной реализации;
c) как набор словарных таблиц, специфицированных с использованием какого-либо другого, достаточно точного способа или текста, который должен включать в себя встроенные записи таблиц разделов 9 и 10 (с индексами словарных таблиц, определенными в указанных разделах).
Примечания
1 Спецификация нотации для определения словарных таблиц не входит в область применения настоящего стандарта.
2 Требование включать встроенные записи словарных таблиц при использовании этого способа гарантирует, что все словарные таблицы содержат встроенные записи таблиц.
7.2.15 Для внешнего словаря, определенного в соответствии с 7.2.14, всем записям таблиц, содержащим строки и имена, за исключением таблиц PREFIX и NAMESPACE NAME, должны быть присвоены последовательные индексы, начиная с 1. Записям таблиц PREFIX и NAMESPACE NAME должны быть присвоены последовательные индексы, начиная с 2. Всем алфавитам с ограниченной областью распространения, за исключением встроенных, должны быть присвоены последовательные индексы, начиная с 16. Всем алгоритмам кодирования, за исключением встроенных, должны быть присвоены последовательные индексы, начиная с 32.
7.2.16 Каждый компонент типа NonEmptyOctetString, EncodedCharacterString или NameSurrogate (при его наличии), который присутствует в любом из оставшихся компонентов initial-vocabulary, должен быть добавлен по порядку (см. 8.1) в словарную таблицу.
Таблица 1
Соответствие идентификаторов компонентов словарным таблицам
7.2.17 Значение типа NonEmptyOctetString должно содержать кодирование windows-1251 (см. ISO/IEC 10646, Приложение D) строки символов.
7.2.18 Таблицы алфавитов с ограниченной областью распространения и алгоритмов кодирования в исходном словаре должны содержать не более 256 записей. Все остальные таблицы должны содержать не более 220 записей.
Примечание - Ограничение на количество записей должно гарантировать общие верхние границы индексов таблиц. Данное ограничение действует и тогда, когда записи таблицы добавляют динамически (см. 7.13.7, 7.14.6, 7.14.7 и 7.16.7). Данные ограничения не препятствуют кодированию любого инфо-набора XML как документа быстрого инфо-набора.
7.2.19 Встроенные алфавиты с ограниченной областью распространения имеют индексы словарных таблиц в диапазоне от 1 до 2 (см. раздел 9). Индексы словарных таблиц алфавитов с ограниченной областью распространения в компоненте restricted-alphabets в initial-vocabulary (при его наличии) должны присваиваться следующим образом:
a) если внешний словарь отсутствует или внешний словарь содержит только встроенные алфавиты с ограниченной областью распространения, то индексы присваивают, начиная с 16;
b) в противном случае индексы присваивают, начиная с единицы плюс наибольший индекс алфавита с ограниченной областью распространения во внешнем словаре.
Примечание - Это означает, что индексы словарных таблиц от 3 до 15 не используют. Эти значения зарезервированы для последующих версий настоящего стандарта.
7.2.20 Встроенные алгоритмы кодирования имеют индексы словарных таблиц в диапазоне от 1 до 10 (см. раздел 10). Индексы словарных таблиц алгоритмов кодирования в компоненте encoding-algorithms в initial-vocabulary (при его наличии) должны присваиваться следующим образом:
a) если внешний словарь отсутствует или внешний словарь содержит только встроенные алгоритмы кодирования, то индексы присваивают, начиная с 32;
b) в противном случае индексы присваивают, начиная с единицы плюс наибольший индекс алгоритма кодирования во внешнем словаре.
Примечание - Это означает, что индексы словарных таблиц от 11 до 31 не используют. Эти значения зарезервированы для последующих версий настоящего стандарта.
7.2.21 Таблица PREFIX должна содержать встроенную запись префикса "xml", которой присвоен индекс 1. Индексы словарных таблиц префиксов в компоненте prefixes в initial-vocabulary (при его наличии) должны присваиваться следующим образом:
a) если внешний словарь отсутствует или внешний словарь содержит только встроенную запись префикса, то индексы присваивают, начиная с 2;
b) в противном случае индексы присваивают, начиная с единицы плюс наибольший индекс префикса во внешнем словаре.
/template/go.php?url=https://www.w3.org/XML/1998/namespace
Данной записи должен быть присвоен индекс 1.
7.2.23 Индексы словарных таблиц имен пространств имен в компоненте namespace-names в initial-vocabulary (при его наличии) должны присваиваться следующим образом:
a) если внешний словарь отсутствует или внешний словарь содержит только встроенную запись имени пространства имен, то индексы присваивают, начиная с 2;
b) в противном случае индексы присваивают, начиная с единицы плюс наибольший индекс имени пространства имен во внешнем словаре.
7.2.24 Компонент notations представляет свойство [notations] информационного элемента document. Типом данного компонента является sequence-of (последовательность-из), хотя свойство [notations] определено в инфо-наборе W3C XML как неупорядоченный набор (информационных элементов notation).
Примечание - Здесь и далее используют тип sequence-of (последовательность-из), а не set-of (набор-из), так как последний не удовлетворяет потребности в строгом упорядочении всех компонентов документа быстрого инфо-набора (см. 8.1).
7.2.25 Компонент unparsed-entities представляет свойство [unparsed entities] информационного элемента document. Типом данного компонента является sequence-of (последовательность-из), хотя свойство [unparsed entities] и определено в инфо-наборе W3C XML как неупорядоченный набор (информационных элементов unparsed entity).
7.2.26 Компонент character-encoding-scheme представляет свойство [character encoding scheme] информационного элемента document. Типом данного компонента является NonEmptyOctetString, и значение должно содержать кодирование windows-1251 (см. ISO/IEC 10646, Приложение D) свойства [character encoding scheme]. Отсутствие этого компонента в абстрактном значении типа Document указывает на то, что свойство [character encoding scheme] имеет значение "windows-1251".
Примечание - Поддержка свойства [character encoding scheme] позволяет преобразовывать документы XML в документы быстрого инфо-набора и обратно без изменения схемы кодирования символов. Создатель документа быстрого инфо-набора из документа XML может закодировать свойство [character encoding scheme], полученное из декларации кодирования документа XML (см. W3C XML 1.0, п. 4.3.1 и W3C XML 1.1, п. 4.3.1). Обработчик документа быстрого инфо-набора может использовать компонент character-encoding-scheme (при его наличии), если хочет воспроизвести оригинальное кодирование.
7.2.27 Компонент standalone представляет свойство [standalone] информационного элемента document. Абстрактное значение TRUE представляет значение данного свойства yes, а абстрактное значение FALSE - значение no. Отсутствие данного компонента в абстрактном значении типа Document указывает на то, что у свойства [standalone] нет значения.
7.2.28 Компонент version представляет свойство [version] информационного элемента document. Типом данного компонента является NonIdentifyingStringOrIndex (см. 7.14), представляющий в данном случае строку символов категории OTHER STRING. Отсутствие данного компонента в абстрактном значении типа Document указывает на то, что у свойства [version] нет значения.
7.2.29 Компонент children представляет свойство [children] информационного элемента document. Ровно один элемент последовательности-из (sequence-of) (в любой позиции) должен использовать альтернативу element выборочного типа, и не более чем один элемент (в любой позиции) должен использовать альтернативу document-type-declaration. Все другие элементы (при их наличии) должны использовать альтернативу processing-instruction или comment.
7.2.30 Свойство [document element] информационного элемента document не включено в тип Document. Значение данного свойства всегда равно только одному информационному элементу element, который является членом свойства [children] информационного элемента document.
7.2.31 Свойство [base URI] информационного элемента document не включено в тип Document и не поддерживается в настоящем стандарте.
7.2.32 Свойство [all declarations processed] информационного элемента document не включено в тип Document и принимается имеющим значение true (см. 11.3).
7.3.1 Тип Element определен следующим образом:
7.3.2 Типы NameSpaceAttribute, QualifiedNameOrIndex, Attribute, ProcessingInstruction, UnexpandedEntityReference, CharacterChunk и Comment определены в 7.12, 7.16, 7.4, 7.5, 7.6, 7.7 и 7.8 соответственно.
7.3.3 Тип Element представляет информационный элемент element инфо-набора XML.
7.3.4 Компонент namespace-attributes представляет свойство [namespace attributes] информационного элемента element. Типом данного компонента является sequence-of (последовательность-из), хотя свойство [namespace attributes] определено в инфо-наборе W3C XML как неупорядоченный набор (информационных элементов attribute).
Примечание - Типом данного компонента является sequence-of (последовательность-из) NamespaceAttribute (а не Attribute), хотя свойство [namespace attributes] информационного элемента element определено в инфо-наборе W3C XML как набор информационных элементов attribute. В ограниченном инфо-наборе XML (см. 11.3) свойства информационного элемента namespace могут быть определены из свойств информационного элемента attribute, представляющего атрибут пространства имен. Обратное верно только частично, но это ограничение считается приемлемым для предполагаемого использования настоящего стандарта (см. также примечание в 7.2.24).
7.3.5 Компонент qualified-name представляет квалифицированное имя (см. 3.4.11) информационного элемента element (т.е. набор, состоящий из свойств [prefix], [namespace name] и [local name] этого информационного элемента). Типом данного компонента является QualifiedNameOrIndex (см. 7.16), представляющий в данном случае квалифицированное имя категории ELEMENT NAME.
7.3.6 Компонент attributes представляет свойство [attributes] информационного элемента element. Типом данного компонента является sequence-of (последовательность-из), хотя свойство [attributes] определено в инфо-наборе W3C XML как неупорядоченный набор (информационных элементов attribute).
7.3.7 Компонент children представляет свойство [children] информационного элемента element. Когда два или более соседних дочерних элемента являются информационными элементами character, для представления этих соседних информационных элементов character может быть использован один элемент CharacterChunk.
Примечание - Если среди дочерних элементов информационного элемента element имеется последовательность из N соседних символов, то допустима любая группировка этих N-символов в серии последовательных блоков символов. Однако предполагается, что для создания эффективных кодировок создатель документа быстрого инфо-набора будет делать каждый из блоков символов настолько большим, насколько это будет возможно.
Примечание - В ограниченном инфо-наборе XML (см. 11.3) свойство [in-scope namespaces] информационного элемента element может быть определено из свойства [namespace attributes] информационного элемента element и свойства [namespace attributes] всех информационных элементов element (при их наличии), содержащих (прямо или косвенно) данный информационный элемент element.
7.3.9 Свойство [base URI] информационного элемента element не включено в тип Element и не поддерживается в настоящем стандарте.
7.3.10 Свойство [parent] информационного элемента element не включено в тип Element. Значением данного свойства для любого заданного информационного элемента element является информационный элемент document или element, содержащий заданный информационный элемент в качестве члена своего свойства [children].
7.4.1 Тип Attribute определен следующим образом:
7.4.2 Типы QualifiedNameOrIndex и NonIdentifyingStringOrIndex определены в 7.16 и 7.14 соответственно.
7.4.3 Тип Attribute представляет информационный элемент attribute инфо-набора XML.
7.4.4 Компонент qualified-name представляет квалифицированное имя (см. 3.4.11) информационного элемента attribute (т.е. набор, состоящий из свойств [prefix], [namespace name] и [local name] этого информационного элемента). Типом данного компонента является QualifiedNameOrIndex (см. 7.16), представляющий в данном случае квалифицированное имя категории ATTRIBUTE NAME.
7.4.5 Компонент normalized-value представляет свойство [normalized value] информационного элемента attribute. Типом данного компонента является NonIdentifyingStringOrIndex (см. 7.14), представляющий в данном случае квалифицированное имя категории ATTRIBUTE VALUE.
7.4.6 Длина строки символов, присвоенной normalized-value, не может превышать 232.
Примечание - Данное ограничение обусловлено определением ASN.1, которое разработано для оптимизации кодирований и простоты реализации (см. также 11.3, перечисление j).
Примечание - В ограниченном инфо-наборе XML (см. 11.3) свойство [references] информационного элемента attribute может быть определено из свойства [normalized value] информационного элемента attribute вместе со свойствами других информационных элементов в инфо-наборе XML.
7.4.10 Свойство [owner element] информационного элемента attribute не включено в тип Attribute. Значение этого свойства для любого заданного информационного элемента attribute является информационным элементом element, содержащим заданный информационный элемент в качестве члена свойства [attributes].
7.5.1 Тип ProcessingInstruction определен следующим образом:
7.5.2 Типы IdentifyingStringOrIndex и NonIdentifyingStringOrIndex определены в 7.13 и 7.14 соответственно.
7.5.3 Тип ProcessingInstruction представляет информационный элемент processing instruction инфо-набора XML.
7.5.4 Компонент target представляет свойство [target] информационного элемента processing instruction. Типом данного компонента является IdentifyingStringOrIndex (см. 7.13), представляющий в данном случае строку символов категории OTHER NCNAME.
7.5.5 Компонент content представляет свойство [content] информационного элемента processing instruction. Типом данного компонента является NonIdentifyingStringOrIndex (см. 7.14), представляющий в данном случае строку символов категории OTHER STRING.
7.5.6 Длина строки символов, присвоенной content, не может превышать 232.
Примечание - Данное ограничение обусловлено определением ASN.1, которое разработано для оптимизации кодирований и простоты реализации (см. также 11.3, перечисление j).
7.5.7 Свойство [notation] информационного элемента processing instruction не включено в тип ProcessingInstruction.
Примечание - В ограниченном инфо-наборе XML (см. 11.3) свойство [notation] информационного элемента processing instruction может быть определено из свойства [target] информационного элемента processing instruction и свойства [notations] информационного элемента document.
7.5.8 Свойство [parent] информационного элемента processing instruction не включено в тип ProcessingInstruction. Значением этого свойства для любого заданного информационного элемента processing instruction является информационный элемент document, element или document type definition, содержащий заданный информационный элемент в качестве члена свойства [children].
7.6.1 Тип UnexpandedEntityReference определен следующим образом:
7.6.2 Тип IdentifyingStringOrIndex определен в 7.13.
7.6.3 Тип UnexpandedEntityReference представляет информационный элемент unexpanded entity reference инфо-набора XML.
7.6.4 Компонент name представляет свойство [name] информационного элемента unexpanded entity reference. Типом данного компонента является IdentifyingStringOrIndex (см. 7.13), представляющий в данном случае строку символов категории OTHER NCNAME.
7.6.5 Компонент system-identifier представляет свойство [system identifier] информационного элемента unexpanded entity reference. Типом данного компонента является IdentifyingStringOrIndex (см. 7.13), представляющий в данном случае строку символов категории OTHER URI. Отсутствие данного компонента в абстрактном значении типа UnexpandedEntityReference указывает на то, что свойство [system identifier] не имеет значения.
7.6.6 Компонент public-identifier представляет свойство [public identifier] информационного элемента unexpanded entity reference. Типом данного компонента является IdentifyingStringOrIndex (см. 7.13), представляющий в данном случае строку символов категории OTHER URI. Отсутствие данного компонента в абстрактном значении типа UnexpandedEntityReference указывает на то, что свойство [public identifier] не имеет значения.
7.6.7 Свойство [declaration base URI] информационного элемента unexpanded entity reference не включено в тип UnexpandedEntityReference и не поддерживается в настоящем стандарте.
7.6.8 Свойство [parent] информационного элемента unexpanded entity reference не включено в тип UnexpandedEntityReference. Значением данного свойства для любого заданного информационного элемента unexpanded entity reference является информационный элемент element, содержащий заданный информационный элемент в качестве члена свойства [children].
7.7.1 Тип CharacterChunk определен следующим образом:
7.7.2 Тип NonIdentifyingStringOrIndex определен в 7.14.
7.7.3 Тип CharacterChunk соответствует информационному элементу character, но представляет ряд соседних информационных элементов character (членов свойства [children] родительского информационного элемента element), а не единственный информационный элемент character.
7.7.4 Число информационных элементов character, представленных значением типа CharacterChunk, не должно быть равным нулю.
7.7.5 Компонент character-codes представляет свойство [character code] информационного(ых) элемента(ов) character в блоке. Типом данного компонента является NonIdentifyingStringOrIndex (см. 7.14), представляющий в данном случае строку символов категории CONTENT CHARACTER CHUNK.
7.7.6 Длина строки символов, присвоенной character-codes, не может превышать 232.
Примечание - Данное ограничение обусловлено определением ASN.1, которое разработано для оптимизации кодирований и простоты реализации. Данное ограничение не исключает кодирования информационного элемента element, содержащего более 232 информационных элементов character, так как можно использовать несколько блоков.
7.7.7 Свойство [element content whitespace] информационного(ых) элемента(ов) character не включено в тип CharacterChunk.
7.7.8 Свойство [parent] информационного(ых) элемента(ов) character не включено в тип CharacterChunk. Значением данного свойства для любого заданного информационного элемента character является информационный элемент element, содержащий заданный информационный элемент в качестве члена свойства [children].
7.8.1 Тип Comment определен следующим образом:
7.8.2 Тип NonIdentifyingStringOrIndex определен в 7.14.
7.8.3 Тип Comment представляет информационный элемент comment инфо-набора XML.
7.8.4 Компонент content представляет свойство [content] информационного элемента comment. Типом данного компонента является NonIdentifyingStringOrIndex (см. 7.14), представляющий в данном случае строку символов категории OTHER STRING.
7.8.5 Длина строки символов, присвоенной content, не может превышать 232.
Примечание - Данное ограничение обусловлено определением ASN.1, которое разработано для оптимизации кодирований и простоты реализации (см. также 11.3, перечисление j).
7.8.6 Свойство [parent] информационного элемента comment не включено в тип Comment. Значением этого свойства для любого заданного информационного элемента comment является информационный элемент document или element, содержащий заданный информационный элемент в качестве члена свойства [children].
7.9.1 Тип DocumentTypeDeclaration определен следующим образом:
7.9.2 Тип IdentifyingStringOrIndex определен в 7.13.
7.9.3 Тип DocumentTypeDeclaration представляет информационный элемент document type declaration инфо-набора XML.
7.9.4 Компонент system-identifier представляет свойство [system identifier] информационного элемента document type declaration. Типом данного компонента является IdentifyingStringOrIndex (см. 7.13), представляющий в данном случае строку символов категории OTHER URI. Отсутствие данного компонента в абстрактном значении типа DocumentTypeDeclaration указывает на то, что свойство [system identifier] не имеет значения.
7.9.5 Компонент public-identifier представляет свойство [public identifier] информационного элемента document type declaration. Типом данного компонента является IdentifyingStringOrIndex (см. 7.13), представляющий в данном случае строку символов категории OTHER URI. Отсутствие данного компонента в абстрактном значении типа DocumentTypeDeclaration указывает на то, что свойство [public identifier] не имеет значения.
7.9.6 Компонент children представляет свойство [children] информационного элемента document type declaration.
7.9.7 Свойство [parent] информационного элемента document type declaration не включено в тип DocumentTypeDeclaration. Значением этого свойства для любого заданного информационного элемента document type declaration является информационный элемент document, содержащий заданный информационный элемент в качестве члена свойства [children].
7.10.1 Тип UnparsedEntity определен следующим образом:
7.10.2 Тип IdentifyingStringOrIndex определен в 7.13.
7.10.3 Тип UnparsedEntity представляет информационный элемент unparsed entity инфо-набора XML.
7.10.4 Компонент name представляет свойство [name] информационного элемента unparsed entity. Типом данного компонента является IdentifyingStringOrIndex (см. 7.13), представляющий в данном случае строку символов категории OTHER NCNAME.
7.10.5 Компонент system-identifier представляет свойство [system identifier] информационного элемента unparsed entity. Типом данного компонента является IdentifyingStringOrIndex (см. 7.13), представляющий в данном случае строку символов категории OTHER URI.
7.10.6 Компонент public-identifier представляет свойство [public identifier] информационного элемента unparsed entity. Типом данного компонента является IdentifyingStringOrIndex (см. 7.13), представляющий в данном случае строку символов категории OTHER URI. Отсутствие данного компонента в абстрактном значении типа UnparsedEntity указывает на то, что свойство [public identifier] не имеет значения.
7.10.7 Компонент notation-name представляет свойство [notation name] информационного элемента unparsed entity. Типом данного компонента является IdentifyingStringOrIndex (см. 7.13), представляющий в данном случае строку символов категории OTHER NCNAME.
7.10.8 Свойство [declaration base URI] информационного элемента unparsed entity не включено в тип UnparsedEntity и не поддерживается в настоящем стандарте.
7.10.9 Свойство [notation] информационного элемента unparsed entity не включено в тип UnparsedEntity.
Примечание - В ограниченном инфо-наборе XML (см. 11.3) свойство [notation] информационного элемента unparsed entity может быть определено из свойства [notation name] информационного элемента unparsed entity и свойства [notations] информационного элемента document.
7.11.1 Тип Notation определен следующим образом:
7.11.2 Тип IdentifyingStringOrIndex определен в 7.13.
7.11.3 Тип Notation представляет информационный элемент notation инфо-набора XML.
7.11.4 Компонент name представляет свойство [name] информационного элемента notation. Типом данного компонента является IdentifyingStringOrIndex (см. 7.13), представляющий в данном случае строку символов категории OTHER NCNAME.
7.11.5 Компонент system-identifier представляет свойство [system identifier] информационного элемента notation. Типом данного компонента является IdentifyingStringOrIndex (см. 7.13), представляющий в данном случае строку символов категории OTHER URI. Отсутствие данного компонента в абстрактном значении типа Notation указывает на то, что свойство [system identifier] не имеет значения.
7.11.6 Компонент public-identifier представляет свойство [public identifier] информационного элемента notation. Типом данного компонента является IdentifyingStringOrIndex (см. 7.13), представляющий в данном случае строку символов категории OTHER URI. Отсутствие данного компонента в абстрактном значении типа Notation указывает на то, что свойство [public identifier] не имеет значения.
7.11.7 Свойство [declaration base URI] информационного элемента notation не включено в тип Notation и не поддерживается в настоящем стандарте.
7.12.1 Тип NamespaceAttribute определен следующим образом:
7.12.2 Тип IdentifyingStringOrIndex определен в 7.13.
7.12.3 Тип NamespaceAttribute представляет информационный элемент attribute, который является членом свойства [namespace attributes] информационного элемента element инфо-набора XML.
Примечание - В инфо-наборе XML атрибуты и пространства имен являются информационными элементами attribute. В настоящем стандарте использованы разные типы с целью оптимизации.
7.12.4 В инфо-наборе XML имеется два типа атрибутов пространств имен:
a) принимаемые по умолчанию декларации пространств имен: свойство [prefix] информационного элемента attribute не имеет значения, а значением свойства [local name] является "xmlns";
b) принимаемые не по умолчанию декларации пространств имен: свойство [prefix] информационного элемента attribute имеет значение "xmlns", а свойство [local name] предоставляет префикс декларации пространства имен.
В обоих случаях свойство [normalized value] информационного элемента attribute предоставляет имя пространства имен декларации пространства имен.
7.12.5 Если атрибут пространства имен является принимаемой по умолчанию декларацией пространства имен (7.12.4, перечисление a), то компонент prefix должен отсутствовать, в противном случае (7.12.4, перечисление b) он должен присутствовать, представляя свойство [local name] информационного элемента attribute. Типом данного компонента является IdentifyingStringOrIndex (см. 7.13), представляющий в данном случае строку символов категории PREFIX.
7.12.6 Если свойство [normalized value] информационного элемента attribute является пустой строкой, то компонент namespace-name должен отсутствовать, в противном случае он должен присутствовать, представляя свойство [normalized value] информационного элемента attribute. Типом данного компонента является IdentifyingStringOrIndex (см. 7.13), представляющий в данном случае строку символов категории NAMESPACE NAME.
7.12.7 Свойство [namespace name] информационного элемента attribute всегда имеет значение "/template/go.php?url=https://www.w3.org/2000/xmlns/" (см. инфо-набор W3C XML) и не включено в тип NamespaceAttribute.
7.13.1 Тип IdentifyingStringOrIndex определен следующим образом:
7.13.2 Тип NonEmptyOctetString и значение one-meg определены в 7.2.1.
7.13.3 Тип IdentifyingStringOrIndex представляет строку символов, несущую идентификационную информацию.
Примечание - Примерами таких строк символов являются префиксы, имена пространств имен и локальные имена элементов и атрибутов.
7.13.4 Абстрактное значение этого типа ASN.1 содержит либо строку символов (заданной категории) в качестве значения типа NonEmptyOctetString, либо индекс словарной таблицы строки символов (заданной категории) в словарной таблице для данной категории строк (см. 8.4.2), которую называют применяемой таблицей строк.
Примечания
1 При использовании данного типа ASN.1 категория строки всегда специфицирована в соответствующем тексте в предыдущих пунктах (см. 7.5 - 7.12).
2 Идентифицирующие строки символов трактуются не так, как неидентифицирующие. Неидентифицирующие строки символов могут быть закодированы в одном из многих форматов кодирования, а все идентифицирующие строки символов должны быть закодированы в windows-1251. Кроме этого, неидентифицирующие строки символов могут добавляться или не добавляться (по выбору создателя) в динамические таблицы строк (см. 7.14.6), а идентифицирующие строки символов всегда добавляются в динамические таблицы строк (см. 7.13.7).
7.13.5 Компонент literal-character-string (при его наличии) должен содержать кодирование windows-1251 (см. ISO/IEC 10646, Приложение D) строки символов (см. 7.13.4).
7.13.6 Компонент string-index (при его наличии) должен содержать индекс словарной таблицы какой-либо из идентичных данной строке символов записей применяемой таблицы строк.
7.13.7 Когда создают абстрактное значение этого типа ASN.1 (представляющее заданную строку символов заданной категории), то в случае, если идентичная строка символов существует в текущем содержимом применяемой таблицы строк, создатель документа быстрого инфо-набора должен осуществить одно из перечисленных ниже действий a) или b) в зависимости от реализации (но по мере возможности следует выбирать первый вариант, так как при этом создается меньше индексов, указывающих на одну и ту же строку символов), в противном случае (не существует идентичной строки символов) создатель документа быстрого инфо-набора должен действовать согласно перечислению b). Действия a) и b) приведены ниже:
a) выбрать альтернативу string-index и присвоить string-index словарной таблицы любой из существующих записей, идентичных данной строке символов;
b) выбрать альтернативу literal-character-string, присвоить заданную строку символов literal-character-string и добавить в применяемую таблицу строк идентичную строку символов, если данная таблица не содержит 220 записей.
Примечание - Выбор действия b) приведет к появлению нескольких идентичных строк символов в таблице строк (если таблица еще не содержит 220 записей). Это не влияет на последующую обработку строк символов (см. 7.13.8).
7.13.8 При обработке абстрактного значения данного типа ASN.1, представляющего строку символов (заданной категории), обработчик документа быстрого инфо-набора должен определить строку символов, представленную абстрактным значением, следующим образом:
a) если имеется альтернатива string-index, то строка символов, представленная абстрактным значением, должна быть строкой символов в текущем содержимом применяемой таблицы строк, индекс словарной таблицы которой является значением string-index;
b) если имеется альтернатива literal-character-string, то строка символов, представленная абстрактным значением, должна быть значением literal-character-string, а идентичная строка символов должна быть добавлена к применяемой таблице строк (см. 7.13.9), когда данная таблица еще не содержит 220 записей.
Примечание - Выбор действия b) приведет к появлению нескольких идентичных строк символов в таблице строк (если таблица еще не содержит 220 записей). Это не влияет на последующую обработку строк символов.
7.13.9 Если обработчик документа быстрого инфо-набора не может (по какой-либо причине, включая зависящие от реализации ограничения) добавить строку в словарную таблицу, содержащую менее 220 записей, когда такое добавление требуется согласно 7.13.8, перечисление b), то он должен прекратить обработку документа быстрого инфо-набора и сообщить об ошибке.
7.14.1 Тип NonIdentifyingStringOrIndex определен следующим образом:
7.14.3 Тип NonIdentifyingStringOrIndex представляет строку символов, не несущую идентификационную информацию.
Примечание - Примером такой строки символов служит значение атрибута.
7.14.4 Абстрактное значение типа NonIdentifyingStringOrIndex содержит либо строку символов (заданной категории) в качестве значения типа EncodedCharacterString (см. 7.17), либо индекс словарной таблицы строки символов заданной категории в словарной таблице для этой категории строк (см. 8.4.2), которую называют применяемой таблицей строк.
Примечание - При использовании данного типа категория строки всегда специфицирована в соответствующем тексте в предыдущих пунктах.
7.14.5 Компонент string-index (при его наличии) должен либо иметь значение, равное нулю (обозначая строку символов нулевой длины - см. 7.14.6), либо содержать индекс словарной таблицы какой-либо из записей применяемой таблицы строк, которая идентична данной строке символов.
7.14.6 Для строки символов нулевой длины создатель документа быстрого инфо-набора всегда должен использовать альтернативу string-index с целым значением, равным нулю. Обработчик документа быстрого инфо-набора должен трактовать такое значение как представление строки символов нулевой длины.
7.14.7 Когда создают абстрактное значение типа NonIdentifyingStringOrIndex (представляющее заданную строку символов заданной категории) ненулевой длины, то в случае, если идентичная строка символов существует в текущем содержимом применяемой таблицы строк, создатель документа быстрого инфо-набора должен осуществить одно из перечисленных ниже действий a) или b) в зависимости от реализации (но по мере возможности следует выбирать первый вариант, так как при этом создается меньше индексов, указывающих на одну и ту же строку символов), в противном случае (не существует идентичной строки символов) создатель документа быстрого инфо-набора должен действовать согласно перечислению b). Действия a) и b) приведены ниже:
a) выбрать альтернативу string-index и присвоить string-index индекс любой из существующих записей словарной таблицы, идентичных данной строке символов;
b) выбрать альтернативу literal-character-string, присвоить заданную строку символов literal-character-string и:
1) добавить в применяемую таблицу строк идентичную строку символов и установить компонент add-to-table равным TRUE [данное действие b1) не должно использоваться в случае, если применяемая таблица строк уже содержит 220 записей] или
Примечание - Если применяемая таблица строк уже содержит 220 записей, то возможны только действия a) или b2).
Примечание - Выбор действия b1) приведет к появлению нескольких идентичных строк символов в текущем содержимом. Это не влияет на последующую обработку строк символов (см. 7.14.8).
7.14.8 При обработке абстрактного значения этого типа ASN.1, представляющего строку символов заданной категории, обработчик документа быстрого инфо-набора должен определить строку символов, представленную абстрактным значением, следующим образом:
a) если имеется альтернатива string-index, то строка символов, представленная абстрактным значением, должна быть строкой символов в применяемой таблице строк, индекс словарной таблицы которой является значением string-index.
Примечание 1 - Если значение string-index превышает текущий размер этой словарной таблицы, то документ быстрого инфо-набора ошибочен;
b) если имеется альтернатива literal-character-string и компонент add-to-table имеет значение TRUE, то строка символов, представленная абстрактным значением, должна быть значением literal-character-string. Обработчик документа быстрого инфо-набора должен добавить идентичную строку символов к применяемой таблице строк (см. 7.14.9).
Примечание 2 - Если применяемая таблица строк уже содержит 220 строк, то документ быстрого инфо-набора ошибочен;
c) если имеется альтернатива literal-character-string и компонент add-to-table имеет значение FALSE, то строка символов, представленная данным абстрактным значением, должна быть значением компонента character-string.
7.14.9 Если обработчик документа быстрого инфо-набора не может (по какой-либо причине, включая зависящие от реализации ограничения) добавить строку в словарную таблицу, когда такое добавление требуется согласно 7.14.8, перечисление b), то он должен прекратить обработку документа быстрого инфо-набора и сообщить об ошибке.
7.15.1 Тип NameSurrogate определен следующим образом:
7.15.2 Значение one-meg определено в 7.2.1.
7.15.3 Тип NameSurrogate содержит три положительных целых значения (первые два являются необязательными), образующих идентификатор имени (см. 8.5.2).
Примечание - Данный тип встречается только в компоненте initial-vocabulary типа Document.
7.15.4 Компоненты prefix-string-index (при его наличии), namespace-name-string-index (при его наличии) и local-name-string-index должны быть больше нуля и не больше числа записей в таблицах PREFIX, NAMESPACE NAME и LOCAL-NAME исходного словаря соответственно.
Примечание - Если обработчик документа быстрого инфо-набора решит не проверять выполнение данного ограничения, то в результате дальнейшей обработки могут возникнуть уязвимости, связанные с безопасностью.
7.15.5 Компонент prefix-string-index должен отсутствовать, если отсутствует компонент namespace-name-string-index.
7.16.1 Тип QualifiedNameOrIndex определен следующим образом:
7.16.3 Тип QualifiedNameOrIndex представляет квалифицированное имя (см. 3.4.11).
7.16.4 Абстрактное значение данного типа ASN.1 содержит либо три компонента, соответствующие префиксу, имени пространства имен и локальному имени квалифицированного имени (заданной категории), либо индекс словарной таблицы идентификатора имени заданной категории в словарной таблице для этой категории квалифицированных имен (см. 8.5.2), которую называют применяемой таблицей имен.
Примечание - При использовании данного типа категория всегда специфицирована в соответствующем тексте в предыдущих пунктах.
7.16.5 Компонент name-surrogate-index (при его наличии) должен содержать индекс словарной таблицы идентификатора имени в применяемой таблице имен.
7.16.6 Если компонент namespace-name отсутствует, то компонент prefix также должен отсутствовать.
7.16.7 При создании абстрактного значения этого типа ASN.1, представляющего заданное квалифицированное имя (заданной категории), создатель документа быстрого инфо-набора должен выполнять действия, определенные в последующих подпунктах.
7.16.7.1 Должна быть выполнена проверка следующих условий в указанном порядке:
a) квалифицированное имя не имеет префикса или префикс квалифицированного имени существует в текущем содержимом таблицы PREFIX;
b) квалифицированное имя не имеет имени пространства имен или имя пространства имен квалифицированного имени существует в текущем содержимом таблицы NAMESPACE NAME;
c) локальное имя квалифицированного имени существует в текущем содержимом таблицы LOCAL NAME;
d) первые три условия выполнены, и идентификатор имени (см. 8.5), состоящий из индекса(ов) словарной таблицы префиксов (при его наличии), имени пространства имен (при его наличии) и локального имени, существует в текущем содержимом применяемой таблицы имен.
7.16.7.2 Если все перечисленные выше условия выполнены, то должна быть выбрана альтернатива name-surrogate-index, и она должна быть установлена равной индексу словарной таблицы идентификатора имени, определенному в 7.16.7.1, перечисление d), в применяемой таблице имен, завершая процедуры 7.16.7.
7.16.7.3 В противном случае должна быть выбрана альтернатива literal-qualified-name, и ее компонентам должны быть присвоены следующие значения:
a) если квалифицированное имя не имеет префикса, то компонент prefix должен отсутствовать, в противном случае компоненту prefix должен быть присвоен префикс по 7.13.7 с ограничением, что действие 7.13.7, перечисление b) не должно выполняться, если идентичная строка символов существует в текущем содержимом применяемой таблицы строк. Типом данного компонента является IdentifyingStringOrIndex (см. 7.13), представляющий в данном случае строку символов категории PREFIX;
b) если квалифицированное имя не имеет имени пространства имен, то компонент namespace-name должен отсутствовать, в противном случае компоненту namespace-name должно быть присвоено имя пространства имен по 7.13.7 с ограничением, что действие 7.13.7, перечисление b) не должно выполняться, если идентичная строка символов существует в текущем содержимом применяемой таблицы строк. Типом данного компонента является IdentifyingStringOrIndex (см. 7.13), представляющий в данном случае строку символов категории NAMESPACE NAME (см. 8.4.2);
c) компоненту local-name должно быть присвоено локальное имя квалифицированного имени (по 7.13.7). Типом данного компонента является IdentifyingStringOrIndex (см. 7.13), представляющий в данном случае строку символов категории LOCAL NAME (см. 8.4.2).
Примечание - Выполнение действий согласно 7.13.7 в настоящем подпункте может вызывать добавление локального имени в таблицу LOCAL NAME.
7.16.7.4 Если выполнение действий согласно 7.13.7 в подпункте 7.16.7.3 к одной или нескольким из трех указанных выше строк символов не привело к добавлению строки в словарную таблицу в связи с тем, что в таблица уже содержит 220 записей [см. 7.13.7, перечисление b)], то идентификатор имени для данного квалифицированного имени не может быть создан.
7.16.7.5 В противном случае должен быть создан идентификатор имени (см. 8.5), состоящий из индекса(ов) словарных таблиц префикса (при его наличии), имени пространства имен (при его наличии) и локального имени. Если этот идентификатор имени не существует в текущем содержимом применяемой таблицы имен, то он должен быть добавлен в эту таблицу, если только она уже не содержит 220 записей.
7.16.8 При обработке абстрактного значения типа QualifiedNameOrIndex, представляющего квалифицированное имя заданной категории, обработчик документа быстрого инфо-набора должен определить квалифицированное имя, представленное абстрактным значением, в соответствии с последующими подпунктами.
7.16.8.1 Если имеется альтернатива name-surrogate-index, то квалифицированное имя, представленное абстрактным значением, должно быть именем, представленным идентификатором имени заданной категории (см. 8.5.2) в применяемой таблице имен, индекс словарной таблицы которого равен значению name-surrogate-index.
7.16.8.2 Если имеется альтернатива literal-qualified-name, то:
a) квалифицированное имя, представленное абстрактным значением, должно быть определено следующим образом:
1) префикс квалифицированного имени должен быть определен (по 7.13.8) из компонента prefix (при его наличии); типом этого компонента является IdentifyingStringOrIndex (см. 7.13), представляющий в данном случае строку символов категории PREFIX;
2) имя пространства имен квалифицированного имени должно быть определено (по 7.13.8) из компонента namespace-name (при его наличии); типом этого компонента является IdentifyingStringOrIndex (см. 7.13), представляющий в данном случае строку символов категории NAMESPACE NAME (см. 8.4.2);
3) локальное имя квалифицированного имени должно быть определено (по 7.13.8) из компонента local-name; типом этого компонента является IdentifyingStringOrIndex (см. 7.13), представляющий в данном случае строку символов категории LOCAL NAME (см. 8.4.2).
Примечание - Указанные действия могут потребовать добавления в соответствующие словарные таблицы согласно 7.13.8, перечисление b);
b) если после возможных добавлений в результате обработки компонентов literal-qualified-name индексы доступны для всех присутствующих компонентов, то идентификатор имени, состоящий из этих индексов словарных таблиц, должен быть добавлен в применяемую таблицу имен, если только она уже не содержит 220 идентификаторов имен (см. 7.16.9).
7.16.9 Если обработчик документа быстрого инфо-набора не может (по какой-либо причине, включая связанные с реализацией ограничения) добавить идентификатор имени в словарную таблицу, содержащую менее 220 записей, когда такое добавление требуется по 7.16.8.2, перечисление b), то он должен прекратить обработку документа быстрого инфо-набора и сообщить об ошибке.
7.17.1 Тип EncodedCharacterString определен следующим образом:
7.17.2 Тип EncodedCharacterString содержит кодирование строки символов. Он определяет строку октетов, которая является обратимым отображением строки символов в строку октетов. Создатель документа быстрого инфо-набора определяет в encoding-format использованное кодирование, а обработчик документа быстрого инфо-набора использует эту информацию для декодирования октетов в компоненте octets в строку символов.
7.17.3 Компонент octets передает значение строки октетов, которая является кодированием строки символов, заданным в компоненте encoding-format.
Примечание - В общем случае существует несколько кодирований, которые могут быть использованы для данной строки символов. Создатель документа быстрого инфо-набора может выбрать кодирование на основании определенных критериев (например, он может постараться оптимизировать размер или скорость обработки), но может предпочесть удобство и универсальную применимость windows-1251 или UTF-16BE. Возможны случаи, когда некоторые кодирования будут применимы только для строк символов, которые содержат только подмножество символов ISO/IEC 10646.
7.17.4 Формат кодирования windows-1251 может быть использован для любой строки символов. Данный формат кодирования следует применять, создавая кодирование windows-1251 (см. ISO/IEC 10646) строки символов и присваивая его компоненту octets.
Примечание - Этот формат кодирования наиболее подходит для строк символов, в которых наиболее часто встречаются символы из начальной части основной многоязычной плоскости ISO/IEC 10646 и когда нет других применимых или более полезных форматов кодирования.
7.17.5 Формат кодирования utf-16 может быть использован для любой строки символов. Данный формат кодирования следует применять, создавая кодирование UTF-16BE (см. Unicode, п. 2.6) строки символов и присваивая его компоненту octets.
Примечания
1 Этот формат кодирования наиболее подходит для строк символов, в которых присутствует широкий диапазон символов ISO/IEC 10646 и когда нет других применимых или более полезных форматов кодирования.
2 Порядок байтов в кодировании UTF-16BE определен в Unicode, п. 2.6: самый старший байт первый (наиболее ранний байт в строке октетов).
7.17.6 Формат кодирования restricted-alphabet основан на использовании алфавита с ограниченной областью распространения, выбираемого из имеющихся в таблице алфавитов с ограниченной областью распространения. Компонент restricted-alphabet должен содержать индекс словарной таблицы алфавитов с ограниченной областью распространения. Это кодирование может быть использовано только для строки символов, которая полностью состоит из символов алфавита с ограниченной областью распространения в записи таблицы алфавитов с ограниченной областью распространения, проиндексированной компонентом restricted-alphabet. Формат кодирования restricted-alphabet следует применять, как определено в 7.17.6.1 - 7.17.6.6.
7.17.6.1 Каждому символу алфавита с ограниченной областью распространения должно быть присвоено целое значение (начиная с нуля) по порядку.
7.17.6.2 Каждый символ в строке символов должен быть преобразован в целое значение, которое присвоено данному символу в алфавите с ограниченной областью распространения.
7.17.6.3 Каждое целое значение должно быть представлено как целое двоичное значение без знака в битовом поле. Размер битового поля должен определяться целым значением, присвоенным последнему символу в алфавите с ограниченной областью распространения. Это целое значение должно быть увеличено на 1, чтобы получить другое целое значение (например, N). Размер битового поля должен быть равен минимальному количеству битов, необходимых для кодирования N как целого значения без знака.
Примечания
1 Увеличение на 1 необходимо потому, что значение из одних единиц в битовом поле интерпретируется как конец строки символов и не может быть использовано для представления символа. Это означает, что если алфавит с ограниченной областью распространения содержит некоторое число символов, точно равное степени двух, то битовое поле должно содержать на один бит больше, чем можно ожидать в другом случае.
2 Например, если в алфавите с ограниченной областью распространения содержится 24 символа, то каждый из символов будет кодироваться в 5 битов, но если в алфавите 32 символа, то каждый из них будет кодироваться в 6 битов.
7.17.6.4 Все полученные битовые поля должны быть сцеплены (по порядку) в битовую строку.
7.17.6.5 Если длина полученной битовой строки не кратна 8, то в конец строки должны быть добавлены биты 1 до длины, кратной 8.
7.17.6.6 Полученная битовая строка (кратная 8 битам), интерпретируемая как строка октетов, должна быть присвоена компоненту octets.
7.17.7 Формат кодирования encoding-algorithm определяется алгоритмом кодирования (см. 8.3), который содержится в записи таблицы алгоритмов кодирования, индекс словарной таблицы для которой равен значению компонента encoding-algorithm. Индекс словарной таблицы алгоритмов кодирования должен быть присвоен компоненту encoding-algorithm, полученная в результате кодирования строка октетов должна быть присвоена компоненту octets.
В документе быстрого инфо-набора используют индексы различных словарных таблиц, создаваемых на разных этапах построения и обработки этого документа. В 8.1 определен концептуальный порядок компонентов абстрактного значения типа Document, способствующий тому, что создатель и обработчики документа быстрого инфо-набора создают идентичные словарные таблицы. В последующих подразделах определены словарные таблицы, которые создают и используют при создании и обработке документа быстрого инфо-набора. Представление данных таблиц в компьютерной системе зависит от реализации и не стандартизировано. Словарная таблица обеспечивает отображение из индекса словарной таблицы в информацию инфо-набора XML (возможно, косвенно).
Примечание - Словарные таблицы для документа быстрого инфо-набора создают при построении документа быстрого инфо-набора. Их создают динамически из содержимого документа быстрого инфо-набора при обработке данного документа. Обмен таблицами в какой-либо форме не проводят.
8.1.1 Концептуальный порядок компонентов абстрактного значения типа Document определен для того, чтобы разные реализации присваивали индексы словарных таблиц одним и тем же способом при создании и обработке документа быстрого инфо-набора. При построении и обработке таких абстрактных значений следует использовать данный концептуальный порядок, например, при добавлении строк (см. 7.13.7 и 7.14.6) и идентификаторов имен (см. 7.16.7) в словарные таблицы.
Примечание - Данный порядок совпадает с порядком кодирований компонентов в документе быстрого инфо-набора. Это необязательно подразумевает, что семантика, передаваемая документом, обрабатывается в том же порядке. Указанный порядок определен исключительно в целях обеспечения того, что один и тот же индекс словарной таблицы присвоен данной записи словарной таблицы как создателем, так и обработчиком документа быстрого инфо-набора.
8.1.2 Концептуальный порядок для построения и обработки документа быстрого инфо-набора определен следующим образом: компоненты абстрактного значения типа Document должны быть рассмотрены в соответствии с алгоритмом, установленным в 8.1.2.1 - 8.1.2.5. Порядок, в котором рассматривают компоненты, определяет концептуальный порядок.
8.1.2.1 Компонент верхнего уровня абстрактного значения (соответствующий типу Document) должен быть рассмотрен первым.
8.1.2.2 Если рассматриваемый компонент относится к типу sequence (последовательность), то компоненты данного типа, присутствующие в абстрактном значении, следует рассмотреть в порядке их определения по тексту - от первого присутствующего компонента до последнего, выполняя для каждого рассматриваемого компонента действия 8.1.2.1 - 8.1.2.5 рекурсивно.
8.1.2.3 Если рассматриваемый компонент относится к типу sequence-of (последовательность-из), то все появления компонента sequence-of следует рассмотреть в порядке sequence-of - от первого появления компонента до последнего, выполняя для каждого рассматриваемого компонента действия 8.1.2.1 - 8.1.2.5 рекурсивно.
8.1.2.4 Если рассматриваемый компонент относится к типу choice (выбор), то следует рассмотреть альтернативу, присутствующую в абстрактном значении, выполняя для данной альтернативы действия 8.1.2.1 - 8.1.2.5 рекурсивно.
8.1.2.5 Если рассматриваемый компонент относится к какому-либо иному типу ASN.1, то никаких дальнейших действий для данного компонента не требуется.
8.2.1 Каждый документ быстрого инфо-набора имеет связанную с ним таблицу алфавитов с ограниченной областью распространения. Таблица алфавитов с ограниченной областью распространения содержит алфавиты с ограниченной областью распространения, на которые можно ссылаться через индекс словарной таблицы.
8.2.2 Каждая запись в таблице алфавитов с ограниченной областью распространения должна быть упорядоченным набором разных символов по ISO/IEC 10646 размером от 2 до 220 символов.
Примечание - Алфавит с ограниченной областью распространения допускает компактное кодирование любой строки символов, полностью состоящей из символов этого набора, путем присвоения по нарастанию целых значений символам в наборе и использования этих целых значений для кодирования символов строки (см. 7.17.6).
8.3.1 Каждый документ быстрого инфо-набора имеет связанную с ним таблицу алгоритмов кодирования. Таблица алгоритмов кодирования содержит определения алгоритмов кодирования, на которые можно ссылаться через индекс словарной таблицы.
8.3.2 Каждая запись данной таблицы специфицирует кодирование строки символов с некоторыми заданными характеристиками в строку октетов (см. 7.17.7).
Примечание - Заданные характеристики могут относиться к длине строки, появляющимся в строке символам или к произвольно сложным образцам последовательности символов. В общем случае данный алгоритм кодирования применяют только к ограниченному и определенному подмножеству строк символов по ISO/IEC 10646.
a) алгоритм кодирования, если он не является встроенным, должен иметь связанный с ним URI, по которому на него можно сослаться для добавления в таблицу;
b) алгоритм кодирования должен точно определять, к каким видам строк символов он может быть применен; это определение должно включать в себя алфавит с ограниченной областью распространения (при его наличии), диапазон длин (при его наличии) и любые дополнительные ограничения на длину и содержимое строк символов (например, образец);
c) для любой строки символов, к которой он может быть применен, алгоритм кодирования должен предоставлять обратимое отображение из строки символов в строку октетов.
Примечания
1 Вышеизложенное подразумевает, что не может существовать строка символов S, для которой кодирование из S в E, с последующим декодированием из E в S', приведет к S' /= S, даже если различие между S' и S незначительно (например, дополнительный SPACE). С другой стороны, не требуется, чтобы можно было закодировать любую строку символов S, и также не требуется, чтобы кодировки были каноническими.
2 От приложения, создающего документ быстрого инфо-набора из находящихся в памяти данных, таких как числа с плавающей точкой, не требуется создавать лексическое представление этих данных, а затем применять к этому представлению алгоритм кодирования. Вместо этого приложение может создать строку октетов напрямую из этих данных при условии, что полученная строка октетов идентична той, которая могла быть получена путем применения этого алгоритма кодирования к строке символов, представляющей данные в памяти, и к этой строке символов может быть применен данный алгоритм кодирования.
3 Алгоритмы кодирования (отличные от встроенных) могут быть определены в других стандартах или согласованы между создателем и обработчиками документа быстрого инфо-набора.
8.4.1 Каждый документ быстрого инфо-набора имеет восемь связанных с ним динамических таблиц строк. Каждая динамическая таблица строк содержит строки символов, на которые можно ссылаться по индексам словарных таблиц.
8.4.2 В настоящем стандарте все строки символов, которые можно встретить в документе быстрого инфо-набора, классифицированы по следующим восьми категориям, каждая из которых имеет динамическую таблицу строк:
a) PREFIX: данную категорию составляют строки символов, которые являются свойством [prefix] информационных элементов element, attribute или namespace;
b) NAMESPACE NAME: данную категорию составляют строки символов, которые являются свойством [namespace name] информационных элементов element, attribute или namespace;
c) LOCAL NAME: данную категорию составляют строки символов, которые являются свойством [local name] информационных элементов element или attribute;
d) OTHER NCNAME: данную категорию составляют строки символов, которые являются свойством [target] информационного элемента processing instruction, свойством [name] информационных элементов unexpanded entity reference, unparsed entity или notation или свойством [notation name] информационного элемента unparsed entity;
e) OTHER URI: данную категорию составляют строки символов, которые являются свойством [system identifier] или [public identifier] информационных элементов unexpanded entity reference, document type declaration, unparsed entity или notation;
f) ATTRIBUTE VALUE: данную категорию составляют строки символов, которые являются свойством [normalized value] информационного элемента attribute;
g) CONTENT CHARACTER CHUNK: данную категорию составляют строки символов, которые являются свойством [character code] блока информационных элементов character, являющихся, в свою очередь, последовательными дочерними элементами заданного информационного элемента element;
h) OTHER STRING: данную категорию составляют строки символов, которые являются свойством [version] информационного элемента document или свойством [content] информационных элементов processing instruction или comment.
8.5.1 Каждый документ быстрого инфо-набора имеет две связанные с ним динамические таблицы имен. Каждая динамическая таблица имен содержит идентификаторы имен, на которые можно ссылаться по индексам словарных таблиц и которые используют для идентификации квалифицированных имен. Квалифицированное имя может иметь или не иметь префикс (а также может иметь или не иметь имя пространства имен).
a) (опционально) индекса строки в таблице PREFIX,
b) (опционально) индекса строки в таблице NAMESPACE NAME и
c) индекса строки в таблице LOCAL NAME.
Первый индекс словарной таблицы не должен присутствовать, если отсутствует второй.
8.5.3 Возможны три случая:
a) все три индекса присутствуют, в этом случае идентификатор имени представляет квалифицированное имя с префиксом;
b) присутствуют только второй и третий индексы, в этом случае идентификатор имени представляет квалифицированное имя без префикса, которое имеет имя пространства имен;
c) присутствует только третий индекс, в этом случае идентификатор имени представляет квалифицированное имя без префикса, которое не имеет имени пространства имен.
8.5.4 В настоящем стандарте все квалифицированные имена, которые можно встретить в документе быстрого инфо-набора, классифицированы по двум следующим категориям, каждая из которых имеет динамическую таблицу имен:
a) ELEMENT NAME: данную категорию составляют идентификаторы имен, представляющие квалифицированное имя информационного элемента element;
b) ATTRIBUTE NAME: данную категорию составляют идентификаторы имен, представляющие квалифицированное имя информационного элемента attribute.
8.5.5 Квалифицированное имя, представленное данным идентификатором имени, нужно определять следующим образом (при заданной динамической таблице строк):
a) первый индекс словарной таблицы (при его наличии) должен интерпретироваться как индекс словарной таблицы строки символов в таблице PREFIX,
b) второй индекс словарной таблицы (при его наличии) должен интерпретироваться как индекс словарной таблицы строки символов в таблице NAMESPACE NAME и
c) третье целое значение должно интерпретироваться как индекс словарной таблицы строки символов в таблице LOCAL NAME.
9.1.1 Данный алфавит с ограниченной областью распространения имеет индекс словарной таблицы 1 и состоит из следующих пятнадцати символов по ISO/IEC 10646 (в указанном порядке):
- DIGIT ZERO - DIGIT NINE
- HYPHEN-MINUS
- PLUS SIGN
- FULL STOP
- LATIN SMALL LETTER E
- SPACE
9.1.2 Данный алфавит с ограниченной областью распространения пригоден для кодирования строк символов, представляющих несколько типов чисел, включая числа с плавающей точкой в научной нотации. Одна строка символов может содержать несколько чисел, разделенных пробелами.
9.2.1 Данный алфавит с ограниченной областью распространения имеет индекс словарной таблицы 2 и состоит из следующих пятнадцати символов по ISO/IEC 10646 (в указанном порядке):
- DIGIT ZERO - DIGIT NINE
- HYPHEN-MINUS
- COLON
- LATIN CAPITAL LETTER T
- LATIN CAPITAL LETTER Z
- SPACE
9.2.2 Данный алфавит с ограниченной областью распространения пригоден для кодирования строк символов, представляющих наиболее общие выражения даты и времени по ISO 8601. Одна строка символов может содержать несколько таких выражений, разделенных пробелами.
10.1.1 В данном разделе определены встроенные алгоритмы кодирования. Встроенные алгоритмы кодирования не имеют связанных с ними URI.
Примечание - URI необходимы для алгоритмов кодирования, которые должны быть явным образом идентифицированы в исходном словаре, а встроенные алгоритмы кодирования всегда неявно добавляют в таблицу алгоритмов кодирования, и следовательно, они не нуждаются в URI.
10.1.2 В данном разделе термин "слово" обозначает любую группу последовательных символов в данной строке символов, которая:
a) не содержит SPACE и
b) находится в начале строки символов или предваряется SPACE либо
c) находится в конце строки символов или за ней следует SPACE.
Примечание - Термин "слово" не ограничивается алфавитными символами.
10.2.1 Данный алгоритм кодирования имеет индекс словарной таблицы 1 и может быть применен только к строкам символов, состоящим из следующих шестнадцати символов по ISO/IEC 10646:
- DIGIT ZERO - DIGIT NINE
- LATIN CAPITAL LETTER A - LATIN CAPITAL LETTER F
и содержащим четное число символов (включая ноль).
Примечание - Использование встроенных пробельных символов XML не допускается.
10.2.2 Строка символов должна интерпретироваться как шестнадцатеричное кодирование строки октетов с первым символом строки, соответствующим самому старшему полубайту первого октета, и т.д.
10.3.1 Данный алгоритм кодирования имеет индекс словарной таблицы 2 и может быть применен только к строкам символов, которые:
a) состоят полностью из символов LATIN CAPITAL LETTER A - LATIN CAPITAL LETTER Z, LATIN SMALL LETTER A - LATIN SMALL LETTER Z, DIGIT ZERO - DIGIT NINE, PLUS SIGN, SOLIDUS и EQUALS SIGN и
Примечание - Присутствие в строке символов пробельных символов XML не допускается.
b) представляют собой действительный экземпляр кодирования передачи содержимого (Content Transfer Encoding) по IETF RFC 2045, п. 6.8 или становятся действительным экземпляром этого кодирования после вставки пробельных символов XML там, где требуется IETF RFC 2045.
10.3.2 Строка символов должна интерпретироваться как кодирование Base64 (по IETF RFC 2045) строки октетов (при условии, что пробельные символы XML присутствуют там, где требуется IETF RFC 2045). Полученная строка октетов является строкой октетов, определенной кодированием Base64.
10.3.3 Данный алгоритм кодирования пригоден для кодирования строк символов, которые не содержат пробельных символов XML и являются строками Base64 (произвольной длины) или могут ими стать, или после добавления пробельных символов XML.
10.4.1 Данный алгоритм кодирования имеет индекс словарной таблицы 3 и может быть применен только к строкам символов, которые удовлетворяют всем следующим условиям:
b) первый и последний символы не являются символами SPACE, и в строке нет пары смежных символов SPACE;
c) строка символов содержит по крайней мере одно слово (см. 10.1.2);
d) каждый присутствующий символ HYPHEN-MINUS является первым символом слова;
e) за каждым из символов HYPHEN-MINUS следует по крайней мере один символ DIGIT ONE - DIGIT NINE;
f) каждый символ DIGIT ZERO является единственным символом в слове или ему предшествует символ DIGIT ONE - DIGIT NINE;
g) каждое слово в строке символов, интерпретированное как строка цифровых символов, представляющая целое десятичное значение со знаком, дает значение в диапазоне от минус 32768 до плюс 32767.
10.4.2 Каждое слово (см. 10.1.2) в строке символов должно быть интерпретировано как строка цифровых символов, представляющая целое десятичное значение со знаком, и представлено как 16-битное целое значение с дополнением до двух.
10.4.3 Каждая группа из 8 битов в 16-битном целом с дополнением до двух для слова дает октет строки октетов, начиная с самой старшей группы из 8 битов. Самый старший бит в каждой группе из 8 битов становится самым старшим битом соответствующего октета. Если в строке символов имеется несколько слов, то они должны быть закодированы по порядку, а октеты, задаваемые 16-битными целыми значениями с дополнением до двух, должны быть сцеплены в этом порядке.
10.4.4 Данный алгоритм кодирования пригоден для кодирования строк символов, представляющих целые значения в диапазоне от минус 32768 до плюс 32767 (представляемые как 16-битное целое значение с дополнением до двух), или их списков.
10.5.1 Данный алгоритм кодирования имеет индекс словарной таблицы 4 и может быть применен только к строкам символов, которые удовлетворяют всем следующим условиям:
a) строка символов удовлетворяет условиям 10.4.1, перечисления a) - f);
b) каждое слово в строке символов, интерпретированное как строка цифровых символов, представляющая целое десятичное значение со знаком, дает значение в диапазоне от минус 2147483648 до плюс 2147483647.
10.5.2 Каждое слово (см. 10.1.2) в строке символов должно быть интерпретировано как строка цифровых символов, представляющая целое десятичное значение со знаком, и представлено как 32-битное целое значение с дополнением до двух.
10.5.3 Каждая группа из 8 битов в 32-битном целом значении с дополнением до двух для слова дает октет строки октетов, начиная с самой старшей группы из 8 битов. Самый старший бит в каждой группе из 8 битов становится самым старшим битом соответствующего октета. Если в строке символов имеется несколько слов, то они должны быть закодированы по порядку, а октеты, даваемые 32-битными целыми значениями с дополнением до двух, должны быть сцеплены в этом порядке.
10.5.4 Данный алгоритм кодирования применим для кодирования строк символов, представляющих целые значения в диапазоне от минус 2147483648 до плюс 2147483647 (представляемые как 32-битное целое значение с дополнением до двух), или их списков.
10.6.1 Данный алгоритм кодирования имеет индекс словарной таблицы 5. Он может быть применен только к строкам символов, которые удовлетворяют всем следующим условиям:
a) строка символов удовлетворяет условиям 10.4.1, перечисления a) - f);
b) каждое слово в строке символов, интерпретированное как строка цифровых символов, представляющая целое десятичное значение со знаком, дает значение в диапазоне от минус 9223372036854775808 до плюс 9223372036854775807.
10.6.2 Каждое слово (см. 10.1.2) в строке символов должно быть интерпретировано как строка цифровых символов, представляющая целое десятичное значение со знаком, и представлено как 64-битное целое значение с дополнением до двух.
10.6.3 Каждая группа из 8 битов в 64-битном целом с дополнением до двух для слова дает октет строки октетов, начиная с самой старшей группы из 8 битов. Самый старший бит в каждой группе из 8 битов становится самым старшим битом соответствующего октета. Если в строке символов имеется несколько слов, то они должны быть закодированы по порядку, а октеты, даваемые 64-битными целыми с дополнением до двух, должны быть сцеплены в этом порядке.
10.6.4 Данный алгоритм кодирования применим для кодирования строк символов, представляющих целые значения в диапазоне от минус 9223372036854775808 до плюс 9223372036854775807 (представляемые как 64-битное целое значение с дополнением до двух), или их списков.
10.7.1 Данный алгоритм кодирования имеет индекс словарной таблицы 6 и может быть применен только к строкам символов, которые удовлетворяют всем следующим условиям:
a) строка символов полностью состоит из одного или нескольких слов "истина" (true) или "ложь" (false) и символов SPACE;
b) первый и последний символы в строке символов не являются символами SPACE, и в строке нет пары смежных символов SPACE;
c) строка символов содержит по крайней мере одно слово (см. 10.1.2).
10.7.2 Каждое слово "ложь" (false) или "истина" (true) в строке символов должно быть закодировано как один бит (равный нулю или единице соответственно) создаваемой строки октетов, начиная с пятого до восьмого бита первого октета. Последующие биты помещают в последующие октеты, начиная с первого бита каждого октета до восьмого бита этого октета, используя только то количество октетов, которое требуется. Все неиспользованные биты последнего октета должны быть установлены равными нулю.
10.7.3 Первые четыре бита первого октета содержат число неиспользованных битов в последнем октете, закодированное как 4-битное целое значение без знака.
Примечание - Первый октет может быть последним и содержать до трех неиспользованных битов. Если имеется несколько октетов, то последний октет может содержать до семи неиспользованных битов.
10.8.1 Данный алгоритм кодирования имеет индекс словарной таблицы 7 и может быть применен только к строкам символов, которые удовлетворяют всем следующим условиям:
a) строка символов полностью состоит из символов DIGIT ZERO - DIGIT NINE, HYPHEN-MINUS, FULL STOP, LATIN CAPITAL LETTER E и SPACE.
Примечание - Использование символа LATIN SMALL LETTER E не допускается, так как в этом случае кодирование не будет обратимым;
b) первый и последний символы в строке символов не являются символами SPACE, и в строке нет пары смежных символов SPACE;
c) строка символов содержит хотя бы одно слово (см. 10.1.2);
d) каждое слово в строке символов соответствует каноническому лексическому представлению числа с плавающей точкой по схеме W3C XML, часть 2, п. 3.2.4;
e) каждое слово (см. 10.1.2) в строке символов, интерпретированное как строка символов, представляющая десятичное число с плавающей точкой, дает значение, которое может быть представлено как 32-битное число с плавающей точкой по IEEE 754.
10.8.2 Каждое слово (см. 10.1.2) в строке символов должно быть интерпретировано как строка символов, представляющая десятичное число с плавающей точкой, и представлено как 32-битное число с плавающей точкой по IEEE 754.
10.8.3 Каждая группа из 8 битов в 32-битном числе с плавающей точкой по IEEE 754 для слова дает октет в строке октетов, начиная с самой старшей группы из 8 битов. Самый старший бит в каждой группе из 8 битов становится самым старшим битом соответствующего октета. Если в строке символов есть несколько слов, то они должны быть закодированы по порядку, а октеты, создаваемые 32-битными числами с плавающей точкой по IEEE 754, должны быть сцеплены в этом порядке.
10.8.4 Данный алгоритм кодирования пригоден для кодирования строк символов, представляющих числа с плавающей точкой (представляемые как 32-битные числа с плавающей точкой по IEEE 754) или списки таких чисел.
10.9.1 Данный алгоритм кодирования имеет индекс словарной таблицы 8 и может быть применен только к строкам символов, которые удовлетворяют всем следующим условиям:
a) строка символов удовлетворяет условиям 10.8.1, перечисления a) - c);
b) каждое слово в строке символов соответствует каноническому лексическому представлению числа с плавающей точкой двойной точности по схеме W3C XML, часть 2, п. 3.2.5;
c) каждое слово (см. 10.1.2) в строке символов, интерпретированное как строка символов, представляющая десятичное число с плавающей точкой двойной точности, дает значение, которое может быть представлено как 64-битное число с плавающей точкой двойной точности по IEEE 754.
10.9.2 Каждое слово (см. 10.1.2) в строке символов должно быть интерпретировано как строка символов, представляющая десятичное число с плавающей точкой двойной точности, и должно быть представлено как 64-битное число с плавающей точкой двойной точности по IEEE 754.
10.9.3 Каждая группа из 8 битов в 64-битном числе с плавающей точкой двойной точности по IEEE 754 для слова дает октет в строке октетов, начиная с самой старшей группы из 8 битов. Самый старший бит в каждой группе из 8 битов становится самым старшим битом соответствующего октета. Если в строке символов есть несколько слов, то они должны быть закодированы по порядку, а октеты, создаваемые 64-битными числами с плавающей точкой двойной точности по IEEE 754, должны быть сцеплены в этом порядке.
10.9.4 Данный алгоритм кодирования пригоден для кодирования строк символов, представляющих числа с плавающей точкой (представляемые как 64-битные числа с плавающей точкой двойной точности по IEEE 754) или списки таких чисел.
10.10.1 Данный алгоритм кодирования имеет индекс словарной таблицы 8 и может быть применен только к строкам символов, которые удовлетворяют всем следующим условиям:
a) строка символов полностью состоит из символов DIGIT ZERO - DIGIT NINE, LATIN SMALL LETTER A - LATIN SMALL LETTER F, HYPHEN-MINUS и SPACE;
b) первый и последний символы в строке символов не являются символами SPACE, и в строке нет пары смежных символов SPACE;
c) строка символов содержит хотя бы одно слово (см. 10.1.2);
d) каждое слово содержит ровно 36 символов;
e) в каждом слове есть ровно четыре символа HYPHEN-MINUS, занимающих позиции 9, 14, 19 и 24 (считая от единицы).
10.10.2 Каждое слово в строке символов должно интерпретироваться как шестнадцатеричное представление UUID (по ISO/IEC 9834-8, п. 6.4) и быть представлено как 16-битное целое значение без знака, как определено в ISO/IEC 9834-8, п. 6.3. Если в строке символов несколько слов, то соответствующие 16-октетные целые значения без знака должны быть сцеплены.
10.10.3 Данный алгоритм кодирования пригоден для кодирования строк символов, представляющих UUID или список UUID.
10.11.1 Данный алгоритм кодирования имеет индекс словарной таблицы 8 и может быть применен к любой строке символов.
10.11.2 Полученная строка октетов должна быть кодированием windows-1251 (по ISO/IEC 10646) строки символов.
10.11.3 Данный алгоритм следует использовать только с инфо-наборами XML, созданными в результате синтаксического анализа документа XML, когда дополнительная информация идентифицирует, что строка символов соответствует всему разделу CDATA (по W3C XML 1.0 и W3C XML 1.1). Если данный алгоритм кодирования используют в документе быстрого инфо-набора, то ко всем строкам символов, которые соответствуют разделам CDATA, следует применять этот алгоритм кодирования.
11.1 Настоящий стандарт поддерживает большинство инфо-наборов XML, которые могут встретиться на практике, однако не поддерживает некоторые инфо-наборы XML, которые возможны только теоретически.
11.2 В настоящем разделе термин "XML-самосогласованный" используют в следующем значении: набор свойств одного или нескольких информационных элементов является XML-самосогласованным, если этот набор свойств может быть получен в результате синтаксического анализа подходящего корректно сформированного в отношении пространств имен документа XML.
a) свойство [all declarations processed] информационного элемента document имеет значение true (истина);
b) свойство [in-scope namespaces] каждого информационного элемента element и свойства [namespace attributes] всех информационных элементов element вместе образуют XML-самосогласованный набор;
c) свойство [namespace name] каждого информационного элемента element, свойства [namespace attributes] всех информационных элементов element и свойство [prefix] этого информационного элемента element вместе образуют XML-самосогласованный набор;
d) свойство [namespace name] каждого информационного элемента attribute, свойства [namespace attributes] всех информационных элементов element и свойство [prefix] этого информационного элемента attribute вместе образуют XML-самосогласованный набор;
e) свойство [references] каждого информационного элемента attribute и свойство [normalized value] информационного элемента attribute вместе образуют XML-самосогласованный набор;
f) свойство [notation] каждого информационного элемента processing instruction, свойство [target] информационного элемента processing instruction и свойство [notations] информационного элемента document вместе образуют XML-самосогласованный набор;
g) свойство [notation] каждого информационного элемента unparsed entity, свойство [notation name] информационного элемента unparsed entity и свойство [notations] информационного элемента document вместе образуют XML-самосогласованный набор;
h) свойство [element content whitespace] всех информационных элементов character, которые не представляют пробельные символы, имеет значение false (ложь);
i) свойство [element content whitespace] каждого информационного элемента character и свойство [character code] информационного элемента character вместе образуют XML-самосогласованный набор;
j) свойство [normalized value] всех информационных элементов attribute и свойство [content] всех информационных элементов comment и processing instruction содержат не более 232 символов.
11.4 Следующие свойства информационных элементов инфо-набора XML не включены в типы ASN.1, представляющие эти информационные элементы:
a) свойства [document element], [base URI] и [all declarations processed] информационного элемента document (см. 7.2.30, 7.2.31 и 7.2.32);
b) свойства [in-scope namespaces], [base URI] и [parent] информационного элемента element (см. 7.3.8, 7.3.9 и 7.3.10);
c) свойства [specified], [attribute type], [references] и [owner element] информационного элемента attribute (см. 7.4.7, 7.4.8, 7.4.9 и 7.4.10);
d) свойства [notation] и [parent] информационного элемента processing instruction (см. 7.5.7 и 7.5.8);
e) свойства [declaration base URI] и [parent] информационного элемента unexpanded entity reference (см. 7.6.7 и 7.6.8);
f) свойство [element content whitespace] информационного элемента character (см. 7.7.7);
g) свойство [parent] информационного элемента character (см. 7.7.8);
h) свойство [parent] информационного элемента comment (см. 7.8.6);
i) свойство [parent] информационного элемента document type declaration (см. 7.9.7);
j) свойства [declaration base URI] и [notation] информационного элемента unparsed entity (см. 7.10.8 и 7.10.9);
k) свойство [declaration base URI] информационного элемента notation (см. 7.11.7).
12.1 В данном разделе определены специальные кодирования типа Document для создания документа быстрого инфо-набора.
Примечание - Эти специальные кодирования разработаны для оптимизации скорости обработки и компактности, которые считаются критическими во многих предполагаемых случаях использования настоящего стандарта.
12.2 Кодирования определены в терминах действий, которые должны быть выполнены кодировщиком и привести к присоединению битов к потоку битов. Исходный поток битов либо пуст, либо состоит из декларации XML (см. 12.3).
12.3 Декларация XML (по W3C XML 1.1, п. 2.8) может быть (по выбору создателя документа быстрого инфо-набора) включена в начало потока битов. Декларация XML (при ее наличии) должна быть одной из следующих строк символов, закодированной в windows-1251:
1) <?xml encoding='finf'?>
2) <?xml encoding='finf' standalone='yes'?>
3) <?xml encoding='finf' standalone='no'?>
4) <?xml version='1.0' encoding='finf'?>
5) <?xml version='1.0' encoding='finf' standalone='yes'?>
6) <?xml version='1.0' encoding='finf' standalone='no'?>
7) <?xml version='1.1' encoding='finf'?>
8) <?xml version='1.1' encoding='finf' standalone='yes'?>
9) <?xml version='1.1' encoding='finf' standalone='no'?>
12.4 Номер версии (при его наличии) в декларации XML должен быть установлен равным соответствующему свойству [version] информационного элемента document. Декларация XML не должна содержать номер версии, если свойство [version] не имеет значения.
12.5 Декларация отдельного расположения (при ее наличии) в декларации XML должна быть установлена равной соответствующему свойству [standalone] информационного элемента document. Декларация XML не должна содержать декларации отдельного расположения, если свойство [standalone] не имеет значения.
Примечание - Указанные биты будут находиться либо в начале документа быстрого инфо-набора, либо следом за декларацией XML. При отсутствии декларации XML синтаксический анализатор может отличить, просматривая первые 16 битов кодирования, потенциальный документ быстрого инфо-набора от любого другого корректно сформированного документа W3C XML 1.0 или W3C XML 1.1, так как эти 16 битов никогда не встречаются в начале корректно сформированного документа XML.
12.7 Далее к потоку битов должно быть добавлено битовое поле из 16 битов, содержащее номер версии настоящего стандарта (см. 12.9), закодированный как 16-битное целое значение без знака.
Примечание - Это делается для обеспечения выравнивания байтов в последующих частях кодирования.
Примечание - Предполагается, что в последующих редакциях настоящего стандарта номер версии будет увеличен во избежание проблем взаимодействия между новой и предыдущими редакциями.
12.10 К концу потока битов должно быть добавлено кодирование ECN (по ISO/IEC 8825-3) абстрактного значения типа Document, определенное модулем связи кодирования в A.2.
Примечание - В Приложении C приведено неформальное описание кодирований, определенных в A.2.
12.11 Если кодирование абстрактного значения типа Document не заканчивается на последнем бите октета, то к потоку битов должны быть добавлены четыре бита '0000' (забивка), завершающие последний октет.
12.12 После выполнения всех указанных выше шагов содержимое потока битов является документом быстрого инфо-набора.
(обязательное)
ДЛЯ ДОКУМЕНТОВ БЫСТРОГО ИНФО-НАБОРА
(обязательное)
MIME-МЕДИАТИП ДЛЯ ДОКУМЕНТОВ БЫСТРОГО ИНФО-НАБОРА
В настоящем приложении определен медиатип "application/fastinfoset", который описывает документы быстрого инфо-набора.
Данный MIME-медиатип определен ниже с помощью IETF MIME-шаблона регистрации. Зарегистрирован он в соответствии с процедурами IETF.
Название MIME-медиатипа:
application
Название MIME-подтипа:
fastinfoset
Обязательные параметры:
Нет.
Необязательные параметры:
Нет.
Аспекты кодирования:
Инфо-наборы XML, закодированные как документы быстрого инфо-набора, приводят к созданию двоичных данных. Данный MIME-тип может потребовать последующее кодирование при передаче, не поддерживающей двоичные данные.
Аспекты безопасности:
Так как инфо-наборы XML, закодированные как документы быстрого инфо-набора, могут переносить определенные приложением данные, семантика которых не зависит от семантики MIME-оболочки (или контекста, в котором используется MIME-оболочка), не следует ожидать, что семантику документа быстрого инфо-набора можно понять на основе семантики только MIME-оболочки. Следовательно, при использовании медиатипа "application/fastinfoset" настоятельно рекомендуется, чтобы вопросы безопасности контекста, в котором используют документ быстрого инфо-набора, были полностью понятны.
Аспекты совместимости:
Известных проблем совместимости не существует.
Опубликованная спецификация:
Рек. МСЭ-Т X.891 | ISO/IEC 24824-1
Приложения, использующие данный медиатип:
Нет известных приложений, которые используют данный медиатип.
Дополнительная информация:
Магическое(ие) число(а):
Документ быстрого инфо-набора может начинаться с опциональной декларации XML, которая должна быть одной из следующих строк, закодированных в windows-1251:
<?xml encoding='finf'?>
<?xml encoding='finf' standalone='yes'?>
<?xml encoding='finf' standalone='no'?>
<?xml version='1.0' encoding='finf'?>
<?xml version='1.0' encoding='finf' standalone='yes'?>
<?xml version='1.0' encoding='finf' standalone='no'?>
<?xml version='1.1' encoding='finf'?>
<?xml version='1.1' encoding='finf' standalone='yes'?>
<?xml version='1.1' encoding='finf' standalone='no'?>
Первые пять октетов декларации XML, закодированной в windows-1251, являются шестнадцатеричными цифрами 3C 3F 78 6D 6C. Четыре октета, идентифицирующие документ быстрого инфо-набора, соответствующие закодированной в windows-1251 подстроке "finf", являются шестнадцатеричными цифрами 66 69 6E 66.
Документ быстрого инфо-набора должен начинаться с шестнадцатеричной последовательности октетов E0 00 00 01, если опциональная декларация XML отсутствует.
Расширение(я) файла(ов):
*.finf
Контактное лицо и адрес электронной почты для получения дополнительной информации:
ITU-T ASN.1 докладчик (tsbmail@itu.int)
ISO/IEC JTC1/SC6 ASN.1 докладчик (ittf@iso.org)
Предполагаемое использование:
ОБЩЕЕ
Автор/Ответственный за изменения:
Совместные процедуры голосования ITU-T и ISO/IEC в соответствии с Рек. МСЭ-Т A.23 Сотрудничество с Международной организацией по стандартизации (ISO) и Международной электротехнической комиссией (IEC) по вопросам информационных технологий, приложение A и Директивы ISO/IEC JTC1, приложение K.
(справочное)
C.1 Документ быстрого инфо-набора
C.1.1 В настоящем приложении неформально (но точно и полно) описаны кодирования, определенные в разделе 12 и приложении A. Для удобства реализации все определения типов ASN.1, приведенные в нормативном тексте, скопированы в данном приложении.
C.1.2 Кодирования описаны в терминах действий, осуществляемых кодировщиком, в результате которых биты добавляются к потоку битов. Действия, которые должны выполняться декодером, не описаны в явном виде в настоящем приложении, но могут быть выведены на основе описанных в настоящем приложении действий кодировщика.
C.1.3 Документ быстрого инфо-набора может начинаться либо с декларации XML (см. 12.3), за которой следуют:
a) шестнадцать битов '1110000000000000' (идентификация),
b) шестнадцать битов '0000000000000001' (номер версии),
c) бит '0' (забивка)
либо с этих же тридцати трех битов без предшествующей им декларации XML. Непосредственно после тридцати трех битов следует кодирование абстрактного значения типа Document, как описано в C.2. Это кодирование заканчивается на восьмом или четвертом бите октета в зависимости от содержимого документа быстрого инфо-набора. В последнем случае к потоку битов добавляют четыре бита '0000' (забивка).
C.2.1 Тип Document определен в 7.2 следующим образом:
C.2.2 Значение типа Document кодируют, выполняя следующие действия (в указанном порядке).
Примечание - Кодирование данного типа всегда начинается со второго бита октета и заканчивается на четвертом или восьмом бите другого октета (который является последним битом указателя конца '1111', описанного в C.2.12).
C.2.3 Для каждого из семи опциональных компонентов additional-data, initial-vocabulary, notations, unparsed-entities, character-encoding-scheme, standalone и version (в указанном порядке) при наличии компонента к потоку битов добавляют бит '1' (наличие), в противном случае добавляют бит '0' (отсутствие).
C.2.4 Если опциональный компонент additional-data присутствует, то количество компонентов additional-datum кодируют, как описано в C.21, и каждый из компонентов additional-datum кодируют, как описано в двух следующих подпунктах.
C.2.4.1 Бит '0' (забивка) добавляют к потоку битов, и компонент id кодируют, как описано в C.22.
C.2.4.2 Бит '0' (забивка) добавляют к потоку битов, и компонент data кодируют, как описано в C.22.
C.2.5 Если опциональный компонент initial-vocabulary присутствует, то к потоку битов добавляют три бита '000' (забивка) и этот компонент кодируют, как описано в пяти следующих пунктах.
C.2.5.1 Для каждого из тринадцати опциональных компонентов компонента initial-vocabulary (в текстуальном порядке) при его наличии к потоку битов добавляют бит '1' (наличие), в противном случае добавляют бит '0' (отсутствие).
C.2.5.2 При наличии опционального компонента external-vocabulary компонента initial-vocabulary к потоку битов добавляют бит '0' (забивка) и компонент кодируют, как описано в C.22.
C.2.5.3 Для каждого из компонентов restricted-alphabets, encoding-algorithms, prefixes, namespace-names, local-names, other-ncnames и other-uris (в указанном порядке) при его наличии кодируют число элементов NonEmptyOctetString в компоненте, как описано в C.21, и затем каждый элемент кодируют (по порядку) следующим образом: к потоку битов добавляют бит '0' (забивка) и NonEmptyOctetString кодируют, как описано в C.22.
C.2.5.4 Для каждого из компонентов attribute-values, content-character-chunks и other-strings (в указанном порядке) при его наличии кодируют число элементов EncodedCharacterString в компоненте, как описано в C.21, и затем каждый элемент кодируют (по порядку) следующим образом: к потоку битов добавляют два бита '00' (забивка) и EncodedCharacterString кодируют, как описано в C.19.
C.2.5.5 Для каждого из компонентов element-name-surrogates и attribute-name-surrogates (в указанном порядке) при его наличии кодируют число элементов NameSurrogate в компоненте, как описано в C.21, и затем каждый элемент кодируют (по порядку) следующим образом: к потоку битов добавляют шесть битов '000000' (забивка) и NameSurrogate кодируют, как описано в C.16.
C.2.6 При наличии опционального компонента notations его кодируют, как описано в двух следующих пунктах.
C.2.6.1 Каждый элемент notations (по порядку) кодируют следующим образом: к потоку битов добавляют шесть битов '110000' (идентификация) и Notation кодируют, как описано в C.11.
C.2.6.2 К потоку битов добавляют четыре бита '1111' (указатель конца) и четыре бита '0000' (забивка).
Примечание - Данные биты не добавляют, если компонент notations отсутствует.
C.2.7 При наличии опционального компонента unparsed-entities его кодируют так, как описано в двух следующих подпунктах.
C.2.7.1 Каждый элемент unparsed-entities (по порядку) кодируют следующим образом: к потоку битов добавляют семь битов '1101000' (идентификация) и UnparsedEntity кодируют, как описано в C.10.
C.2.7.2 К потоку битов добавляют четыре бита '1111' (указатель конца) и четыре бита '0000' (забивка).
Примечание - Данные биты не добавляют, если компонент unparsed-entities отсутствует.
C.2.8 При наличии опционального компонента character-encoding-scheme к потоку битов добавляют бит '0' (забивка) и NonEmptyOctetString кодируют, как описано в C.22.
C.2.9 При наличии опционального компонента standalone его кодируют следующим образом: к потоку битов добавляют семь битов '0000000' (забивка). Если значением standalone является TRUE, то к потоку битов добавляют бит '1', в противном случае - бит '0'.
C.2.10 При наличии опционального компонента version его значение кодируют, как описано в C.14.
C.2.11 Если компонент children имеет один или несколько элементов, то каждый элемент кодируют (по порядку), как описано в следующих пяти подпунктах.
C.2.11.1 Кодирование каждого элемента обязательно начинают с первого бита октета. Однако последний добавленный бит может быть восьмым или четвертым битом октета. Если это был четвертый бит октета, то к потоку битов добавляют биты '0000' (забивка), чтобы кодирование элемента начиналось с первого бита следующего октета.
C.2.11.2 При наличии альтернативы element к потоку битов добавляют бит '0' (идентификация) и element кодируют, как описано в C.3.
C.2.11.3 При наличии альтернативы processing-instruction к потоку битов добавляют восемь битов '11100001' (идентификация) и processing-instruction кодируют, как описано в C.5.
C.2.11.4 При наличии альтернативы comment к потоку битов добавляют восемь битов '11100010' (идентификация) и comment кодируют, как описано в C.8.
C.2.11.5 При наличии альтернативы document-type-declaration к потоку битов добавляют шесть битов '110001' (идентификация) и document-type-declaration кодируют так, как описано в C.9.
Примечание - Данные биты не добавляют, если компонент children не имеет элементов.
C.3.1 Тип Element определен в 7.3 следующим образом:
C.3.2 Значение типа Element кодируют, выполняя следующие действия (в указанном порядке).
Примечание - Кодирование этого типа всегда начинают со второго бита октета и заканчивают на четвертом или восьмом бите другого октета (который является последним битом указателя конца '1111', описанного в C.3.8).
C.3.3 При наличии опционального компонента attributes к потоку битов добавляют бит '1' (наличие), в противном случае добавляют бит '0' (отсутствие).
C.3.4 При наличии опционального компонента namespace-attributes его кодируют, как описано в трех следующих подпунктах.
C.3.4.2 Каждый элемент namespace-attributes (по порядку) кодируют следующим образом: к потоку битов добавляют шесть битов '110011' (идентификация) и NamespaceAttribute кодируют, как описано в C.12.
Примечание - Данные биты не добавляют, если компонент namespace-attributes отсутствует.
C.3.5 Значение компонента qualified-name кодируют, как описано в C.18.
C.3.6 При наличии опционального компонента attributes его кодируют, как описано в двух следующих подпунктах.
C.3.6.1 Каждый элемент attributes (по порядку) кодируют следующим образом: к потоку битов добавляют бит '0' (идентификация) и Attribute кодируют, как описано в C.4.
Примечание - Данные биты не добавляют, если компонент attributes отсутствует.
C.3.7 Если компонент children имеет один или несколько элементов, то каждый элемент кодируют (по порядку), как описано в шести следующих подпунктах.
C.3.7.1 Кодирование каждого элемента обязательно начинают с первого бита октета. Однако последний добавленный бит может быть восьмым или четвертым битом октета. Если это был четвертый бит октета, то к потоку битов добавляют биты '0000' (забивка), чтобы кодирование элемента начиналось с первого бита следующего октета.
C.3.7.2 При наличии альтернативы element к потоку битов добавляют бит '0' (идентификация) и element кодируют, как описано в C.3.
C.3.7.3 При наличии альтернативы processing-instruction к потоку битов добавляют восемь битов '11100001' (идентификация) и processing-instruction кодируют, как описано в C.5.
C.3.7.4 При наличии альтернативы unexpanded-entity-reference к потоку битов добавляют шесть битов '110010' (идентификация) и unexpanded-entity-reference кодируют, как описано в C.6.
C.3.7.5 При наличии альтернативы character-chunk к потоку битов добавляют два бита '10' (идентификация) и character-chunk кодируют, как описано в C.7.
C.3.7.6 При наличии альтернативы comment к потоку битов добавляют восемь битов '11100010' (идентификация) и comment кодируют, как описано в C.8.
Примечание - Данные биты не добавляют, если компонент children не имеет элементов.
C.4.1 Тип Attribute определен в 7.4 следующим образом:
C.4.2 Значение типа Attribute кодируют, выполняя следующие действия (в указанном порядке).
Примечание - Кодирование данного типа всегда начинают со второго бита октета и заканчивают на восьмом бите другого октета.
C.4.3 Значение qualified-name кодируют так, как описано в C.17.
C.4.4 Значение normalized-value кодируют так, как описано в C.14.
C.5.1 Тип ProcessingInstruction определен в 7.5 следующим образом:
C.5.2 Значение типа ProcessingInstruction кодируют, выполняя следующие действия (в указанном порядке).
Примечание - Кодирование данного типа всегда начинают с первого бита октета и заканчивают на восьмом бите другого октета.
C.5.3 Значение target кодируют, как описано в C.13.
C.5.4 Значение content кодируют, как описано в C.14.
C.6.1 Тип UnexpandedEntityReference определен в 7.6 следующим образом:
C.6.2 Значение типа UnexpandedEntityReference кодируют, выполняя следующие действия (в указанном порядке).
Примечание - Кодирование данного типа всегда начинают с седьмого бита октета и заканчивают на восьмом бите другого октета.
C.6.3 При наличии опциональных компонентов system-identifier и public-identifier (в указанном порядке) к потоку битов добавляют бит '1' (наличие) для каждого из них, в противном случае добавляют бит '0' (отсутствие).
C.6.4 Значение name кодируют, как описано в C.13.
C.6.5 При наличии опционального компонента system-identifier его кодируют, как описано в C.13.
C.6.6 При наличии опционального компонента public-identifier его кодируют, как описано в C.13.
C.7.1 Тип CharacterChunk определен в 7.7 следующим образом:
C.7.2 Значение типа CharacterChunk кодируют, выполняя следующее действие.
Примечание - Кодирование данного типа всегда начинают с третьего бита октета и заканчивают на восьмом бите другого или того же октета.
C.7.3 Значение character-codes кодируют, как описано в C.15.
C.8.1 Тип Comment определен в 7.8 следующим образом:
C.8.2 Значение типа Comment кодируют, выполняя следующее действие.
Примечание - Кодирование данного типа всегда начинают с первого бита октета и заканчивают на восьмом бите другого или того же октета.
C.8.3 Значение content кодируют, как описано в C.14.
C.9.1 Тип DocumentTypeDeclaration определен в 7.9 следующим образом:
C.9.2 Значение типа DocumentTypeDeclaration кодируют, выполняя следующие действия (в указанном порядке).
Примечание - Кодирование данного типа всегда начинают с седьмого бита октета и заканчивают на четвертом бите другого октета (являющемся последним битом указателя конца '1111', описанного в C.9.7).
C.9.3 При наличии опциональных компонентов system-identifier и public-identifier (в указанном порядке) к потоку битов добавляют бит '1' (наличие) для каждого из них, в противном случае добавляют бит '0' (отсутствие).
C.9.4 При наличии опционального компонента system-identifier его кодируют, как описано в C.13.
C.9.5 При наличии опционального компонента public-identifier его кодируют, как описано в C.13.
C.9.6 Если компонент children имеет один или несколько элементов, то каждый элемент кодируют следующим образом: к потоку битов добавляют восемь битов '11100001' (идентификация), и ProcessingInstruction кодируют, как описано в C.5.
Примечание - Данные биты не добавляют, если компонент children не имеет элементов.
C.10.1 Тип UnparsedEntity определен в 7.10 следующим образом:
C.10.2 Значение типа UnparsedEntity кодируют, выполняя следующие действия (в указанном порядке).
Примечание - Кодирование данного типа всегда начинают с восьмого бита октета и заканчивают на восьмом бите другого октета.
C.10.3 При наличии опционального компонента public-identifier к потоку битов добавляют бит '1' (наличие), в противном случае добавляют бит '0' (отсутствие).
C.10.4 Значение name кодируют, как описано в C.13.
C.10.5 Значение system-identifier кодируют, как описано в C.13.
C.10.6 При наличии опционального компонента public-identifier его кодируют, как описано в C.13.
C.10.7 Значение name кодируют, как описано в C.13.
C.11.1 Тип Notation определен в 7.11 следующим образом:
C.11.2 Значение типа Notation кодируют, выполняя следующие действия (в указанном порядке).
Примечание - Кодирование данного типа всегда начинают с седьмого бита октета и заканчивают на восьмом бите другого октета.
C.11.3 При наличии опциональных компонентов system-identifier и public-identifier (в указанном порядке) к потоку битов добавляют бит '1' (наличие) для каждого из них, в противном случае добавляют бит '0' (отсутствие).
C.11.4 Значение name кодируют, как описано в C.13.
C.11.5 При наличии опционального компонента system-identifier его кодируют, как описано в C.13.
C.11.6 При наличии опционального компонента public-identifier его кодируют, как описано в C.13.
C.12.1 Тип NamespaceAttribute определен в 7.12 следующим образом:
C.12.2 Значение типа NamespaceAttribute кодируют, выполняя следующие действия (в указанном порядке).
Примечание - Кодирование данного типа всегда начинают с восьмого бита октета и заканчивают на восьмом бите другого октета.
C.12.3 При наличии опционального компонента prefix к потоку битов добавляют бит '1' (наличие), в противном случае добавляют бит '0' (отсутствие).
C.12.4 При наличии опционального компонента namespace-name к потоку битов добавляют бит '1' (наличие), в противном случае добавляют бит '0' (отсутствие).
C.12.5 При наличии опционального компонента prefix его кодируют, как описано в C.13.
C.12.6 При наличии опционального компонента namespace-name его кодируют, как описано в C.13.
C.13.1 Тип IdentifyingStringOrIndex определен в 7.13 следующим образом:
C.13.2 Значение типа IdentifyingStringOrIndex кодируют, выполняя следующие действия (в указанном порядке).
Примечание - Кодирование данного типа всегда начинают с первого бита октета и заканчивают на восьмом бите другого или того же октета.
C.13.3 При наличии альтернативы literal-character-string к потоку битов добавляют бит '0' (дискриминант) и literal-character-string кодируют, как описано в C.22.
C.13.4 При наличии альтернативы string-index к потоку битов добавляют бит '1' (дискриминант) и string-index кодируют, как описано в C.25.
C.14.1 Тип NonIdentifyingStringOrIndex определен в 7.14 следующим образом:
C.14.2 В данном пункте (C.14) описано кодирование значения типа NonIdentifyingStringOrIndex, когда кодирование должно начаться с первого бита октета (см. также C.15). Значение кодируют, выполняя следующие действия (в указанном порядке).
Примечание - Кодирование данного типа всегда заканчивают на восьмом бите другого или того же октета.
C.14.3 При наличии альтернативы literal-character-string к потоку битов добавляют бит '0' (дискриминант) и literal-character-string кодируют, как описано в двух следующих подпунктах.
C.14.3.1 Если значение компонента add-to-table равно TRUE, то к потоку битов добавляют бит '1', в противном случае добавляют бит '0'.
C.14.3.2 Значение компонента character-string кодируют, как описано в C.19.
C.14.4 При наличии альтернативы string-index к потоку битов добавляют бит '1' (дискриминант) и string-index кодируют, как описано в C.26.
C.15.1 Тип NonIdentifyingStringOrIndex определен в 7.14 следующим образом:
C.15.2 В данном пункте (C.15) описано кодирование значения типа NonIdentifyingStringOrIndex, когда кодирование должно начаться с третьего бита октета (см. также C.14). Данное значение кодируют, выполняя следующие действия (в указанном порядке).
Примечание - Кодирование данного типа всегда заканчивают на восьмом бите другого или того же октета.
C.15.3 При наличии альтернативы literal-character-string к потоку битов добавляют бит '0' (дискриминант) и literal-character-string кодируют, как описано в двух следующих подпунктах.
C.15.3.1 Если значение компонента add-to-table равно TRUE, то к потоку битов добавляют бит '1', в противном случае добавляют бит '0'.
C.15.3.2 Значение компонента character-string кодируют, как описано в C.20.
C.15.4 При наличии альтернативы string-index к потоку битов добавляют бит '1' (дискриминант) и string-index кодируют, как описано в C.28.
C.16.1 Тип NameSurrogate определен в 7.15 следующим образом:
C.16.2 Значение типа NameSurrogate кодируют, выполняя следующие действия (в указанном порядке).
Примечание - Кодирование данного типа всегда начинают с седьмого бита октета и заканчивают на восьмом бите другого октета.
C.16.3 При наличии опционального компонента prefix-string-index к потоку битов добавляют бит '1' (наличие), в противном случае добавляют бит '0' (отсутствие).
C.16.4 При наличии опционального компонента namespace-name-string-index к потоку битов добавляют бит '1' (наличие), в противном случае добавляют бит '0' (отсутствие).
C.16.5 При наличии опционального компонента prefix-string-index к потоку битов добавляют бит '0' (забивка) и компонент кодируют, как описано в C.25.
C.16.6 При наличии опционального компонента namespace-name-string-index к потоку битов добавляют бит '0' (забивка) и компонент кодируют, как описано в C.25.
C.16.7 К потоку битов добавляют бит '0' (забивка) и компонент local-name-string-index кодируют, как описано в C.25.
C.17.1 Тип QualifiedNameOrIndex определен в 7.16 следующим образом:
C.17.2 В данном пункте (C.17) описано кодирование значения типа QualifiedNameOrIndex, когда кодирование должно начаться со второго бита октета (см. также C.18). Значение кодируют, выполняя следующие действия (в указанном порядке).
Примечание - Кодирование данного типа всегда заканчивают на восьмом бите другого или того же октета.
C.17.3 При наличии альтернативы literal-qualified-name к потоку битов добавляют четыре бита '1111' (идентификация) и бит '0' (забивка) и literal-qualified-name кодируют, как описано в четырех следующих подпунктах.
C.17.3.1 При наличии опциональных компонентов prefix и namespace-name (в указанном порядке) к потоку битов добавляют бит '1' (наличие) для каждого из них, в противном случае добавляют бит '0' (отсутствие).
C.17.3.2 При наличии опционального компонента prefix его кодируют, как описано в C.13.
C.17.3.3 При наличии опционального компонента namespace-name его кодируют, как описано в C.13.
C.17.3.4 Компонент local-name кодируют, как описано в C.13.
C.17.4 При наличии альтернативы name-surrogate-index ее кодируют, как описано в C.25.
C.18.1 Тип QualifiedNameOrIndex определен в 7.16 следующим образом:
C.18.2 В данном пункте (C.18) описано кодирование значения типа QualifiedNameOrIndex, когда кодирование должно начаться с третьего бита октета (см. также C.17). Значение кодируют, выполняя следующие действия (в указанном порядке).
Примечание - Кодирование данного типа всегда заканчивают на восьмом бите другого или того же октета.
C.18.3 При наличии альтернативы literal-qualified-name к потоку битов добавляют четыре бита '1111' (идентификация) и literal-qualified-name кодируют, как описано в четырех следующих подпунктах.
C.18.3.1 При наличии опциональных компонентов prefix и namespace-name (в указанном порядке) к потоку битов добавляют бит '1' (наличие) для каждого из них, в противном случае добавляют бит '0' (отсутствие).
C.18.3.2 При наличии опционального компонента prefix его кодируют, как описано в C.13.
C.18.3.3 При наличии опционального компонента namespace-name его кодируют, как описано в C.13.
C.18.3.4 Компонент local-name кодируют, как описано в C.13.
C.18.4 При наличии альтернативы name-surrogate-index ее кодируют, как описано в C.27.
C.19.1 Тип EncodedCharacterString определен в 7.17 следующим образом:
C.19.2 В данном пункте (C.19) описано кодирование значения типа EncodedCharacterString, когда кодирование должно начаться с третьего бита октета (см. также C.20). Значение кодируют, выполняя следующие действия (в указанном порядке).
Примечание - Кодирование данного типа всегда заканчивают на восьмом бите другого октета.
C.19.3 Значение компонента encoding-format кодируют, как описано в четырех следующих подпунктах.
C.19.3.1 При наличии альтернативы windows-1251 к потоку битов добавляют два бита '00' (дискриминант).
C.19.3.2 При наличии альтернативы utf-16 к потоку битов добавляют два бита '01' (дискриминант).
C.19.3.3 При наличии альтернативы restricted-alphabet к потоку битов добавляют два бита '10' (дискриминант) и restricted-alphabet кодируют, как описано в C.29.
C.19.3.4 При наличии альтернативы encoding-algorithm к потоку битов добавляют два бита '11' (дискриминант) и encoding-algorithm кодируют, как описано в C.29.
C.19.4 Компонент octets кодируют, как описано в C.23.
C.20.1 Тип EncodedCharacterString определен в 7.17 следующим образом:
C.20.2 В данном пункте (C.20) описано кодирование значения типа EncodedCharacterString, когда кодирование должно начаться с пятого бита октета (см. также C.19). Значение кодируют, выполняя следующие действия (в указанном порядке).
Примечание - Кодирование данного типа всегда заканчивают на восьмом бите другого октета.
C.20.3 Значение компонента encoding-format кодируют, как описано в четырех следующих подпунктах.
C.20.3.1 При наличии альтернативы windows-1251 к потоку битов добавляют два бита '00' (дискриминант).
C.20.3.2 При наличии альтернативы utf-16 к потоку битов добавляют два бита '01' (дискриминант).
C.20.3.3 При наличии альтернативы restricted-alphabet к потоку битов добавляют два бита '10' (дискриминант) и restricted-alphabet кодируют, как описано в C.29.
C.20.3.4 При наличии альтернативы encoding-algorithm к потоку битов добавляют два бита '11' (дискриминант) и encoding-algorithm кодируют, как описано в C.29.
C.20.4 Компонент octets кодируют, как описано в C.24.
C.21.1 В данном пункте описывается кодирование длины типа sequence-of, который закодирован с полем длины, предшествующим элементам типа sequence-of.
Примечание - Данное кодирование всегда начинают с первого бита октета и заканчивают восьмым битого другого или того же октета.
C.21.2 Если значение находится в диапазоне от 1 до 128, то к потоку битов добавляют бит '0', значение минус нижняя граница диапазона кодируют как целое значение без знака в поле из семи битов и добавляют к потоку битов.
C.21.3 Если значение находится в диапазоне от 129 до 220, то к потоку битов добавляют бит '1' и три бита '000' (забивка), значение минус нижняя граница диапазона кодируют как целое значение без знака в поле из двадцати битов и добавляют к потоку битов.
C.22.1 Тип NonEmptyOctetString определен в 7.2 следующим образом:
NonEmptyOctetString ::= OCTET STRING (SIZE(1..four-gig))
C.22.2 В данном пункте (C.22) описано кодирование значения типа NonEmptyOctetString, когда кодирование должно начаться со второго бита октета (см. также C.23 и C.24). Значение кодируют, выполняя следующие действия (в указанном порядке).
Примечание - Кодирование данного типа всегда заканчивают на восьмом бите другого октета.
C.22.3 Длину строки октетов кодируют, как описано в трех следующих подпунктах.
C.22.3.1 Если длина находится в диапазоне от 1 до 64, то к потоку битов добавляют бит '0', длину минус нижняя граница диапазона кодируют как целое значение без знака в поле из шести битов и добавляют к потоку битов.
C.22.3.2 Если длина находится в диапазоне от 65 до 320, то к потоку битов добавляют два бита '10' и пять битов '00000' (забивка), длину минус нижняя граница диапазона кодируют как целое значение без знака в поле из восьми битов и добавляют к потоку битов.
C.22.3.3 Если длина находится в диапазоне от 321 до 232, то к потоку битов добавляют два бита '11' и пять битов '00000' (забивка), длину минус нижняя граница диапазона кодируют как целое значение без знака в поле из тридцати двух битов и добавляют к потоку битов.
C.22.4 Биты, образующие октеты строки октетов, добавляют к потоку битов (по порядку).
C.23.1 Тип NonEmptyOctetString определен в 7.2 следующим образом:
NonEmptyOctetString ::= OCTET STRING (SIZE(1..four-gig))
C.23.2 В данном пункте (C.23) описано кодирование значения типа NonEmptyOctetString, когда кодирование должно начаться с пятого бита октета (см. также C.22 и C.24). Значение кодируют, выполняя следующие действия (в указанном порядке).
Примечание - Кодирование данного типа всегда заканчивают на восьмом бите другого октета.
C.23.3 Длину строки октетов кодируют, как описано в трех следующих подпунктах.
C.23.3.1 Если длина находится в диапазоне от 1 до 8, то к потоку битов добавляют бит '0', длину минус нижняя граница диапазона кодируют как целое значение без знака в поле из трех битов и добавляют к потоку битов.
C.23.3.2 Если длина находится в диапазоне от 9 до 265, то к потоку битов добавляют два бита '10' и два бита '00' (забивка), длину минус нижняя граница диапазона кодируют как целое значение без знака в поле из восьми битов и добавляют к потоку битов.
C.23.3.3 Если длина находится в диапазоне от 265 до 232, то к потоку битов добавляют два бита '11' и два бита '00' (забивка), длину минус нижняя граница диапазона кодируют как целое значение без знака в поле из тридцати двух битов и добавляют к потоку битов.
C.23.4 Биты, образующие октеты строки октетов, добавляют к потоку битов (по порядку).
C.24.1 Тип NonEmptyOctetString определен в 7.2 следующим образом:
NonEmptyOctetString ::= OCTET STRING (SIZE(1..four-gig))
C.24.2 В данном пункте (C.24) описано кодирование значения типа NonEmptyOctetString, когда кодирование должно начаться с седьмого бита октета (см. также C.22 и C.23). Значение кодируют, выполняя следующие действия (в указанном порядке).
Примечание - Кодирование данного типа всегда заканчивают на восьмом бите другого октета.
C.24.3 Длину строки октетов кодируют, как описано в трех следующих подпунктах.
C.24.3.1 Если длина находится в диапазоне от 1 до 2, то к потоку битов добавляют бит '0', длину минус нижняя граница диапазона кодируют как целое значение без знака в поле из одного бита и добавляют к потоку битов.
C.24.3.2 Если длина находится в диапазоне от 3 до 258, то к потоку битов добавляют два бита '10', длину минус нижняя граница диапазона кодируют как целое значение без знака в поле из восьми битов и добавляют к потоку битов.
C.24.3.3 Если длина находится в диапазоне от 258 до 232, то к потоку битов добавляют два бита '11', длину минус нижняя граница диапазона кодируют как целое значение без знака в поле из тридцати двух битов и добавляют к потоку битов.
C.24.4 Биты, образующие октеты строки октетов, добавляют к потоку битов (по порядку).
C.25.1 В данном пункте (C.25) описано кодирование целых значений в диапазоне от 1 до 220, когда кодирование должно начаться со второго бита октета (см. также C.26, C.27 и C.28). Значение кодируют, выполняя следующие действия (в указанном порядке).
Примечание - Кодирование данного типа всегда заканчивают на восьмом бите другого октета.
C.25.2 Если значение находится в диапазоне от 1 до 64, то к потоку битов добавляют бит '0', значение минус нижняя граница диапазона кодируют как целое значение без знака в поле из шести битов и добавляют к потоку битов.
C.25.3 Если значение находится в диапазоне от 65 до 8256, то к потоку битов добавляют два бита '10', значение минус нижняя граница диапазона кодируют как целое значение без знака в поле из тринадцати битов и добавляют к потоку битов.
C.25.4 Если значение находится в диапазоне от 8257 до 220, то к потоку битов добавляют два бита '10' и бит '0' (забивка), значение минус нижняя граница диапазона кодируют как целое значение без знака в поле из двадцати битов и добавляют к потоку битов.
C.26.1 В данном пункте (C.26) описано кодирование целых значений в диапазоне от 0 до 220, когда кодирование должно начаться со второго бита октета (см. также C.25, C.27 и C.28). Значение кодируют, выполняя следующие действия (в указанном порядке).
Примечание - Кодирование данного типа всегда заканчивают на восьмом бите другого или этого же октета.
C.26.2 Если значение равно нулю, то к потоку битов добавляют семь битов '1111111'. В противном случае значение кодируют, как описано в C.25.
C.27.1 В данном пункте (C.27) описано кодирование целых значений в диапазоне от 1 до 220, когда кодирование должно начаться с третьего бита октета (см. также C.25, C.26 и C.28). Значение кодируют, выполняя следующие действия (в указанном порядке).
Примечание - Кодирование данного типа всегда заканчивают на восьмом бите другого октета.
C.27.2 Если значение находится в диапазоне от 1 до 32, то к потоку битов добавляют бит '0', значение минус нижняя граница диапазона кодируют как целое значение без знака в поле из пяти битов и добавляют к потоку битов.
C.27.3 Если значение находится в диапазоне от 33 до 2080, то к потоку битов добавляют три бита '100', значение минус нижняя граница диапазона кодируют как целое значение без знака в поле из одиннадцати битов и добавляют к потоку битов.
C.27.4 Если значение находится в диапазоне от 2081 до 526368, то к потоку битов добавляют три бита '101', значение минус нижняя граница диапазона кодируют как целое значение без знака в поле из девятнадцати битов и добавляют к потоку битов.
C.27.5 Если значение находится в диапазоне от 526369 до 220, то к потоку битов добавляют три бита '110' и семь битов '0000000' (забивка), значение минус нижняя граница диапазона кодируют как целое значение без знака в поле из двадцати битов и добавляют к потоку битов.
C.28.1 В данном пункте (C.28) описано кодирование целых значений в диапазоне от 1 до 220, когда кодирование должно начаться с четвертого бита октета (см. также C.25, C.26 и C.27). Данное значение кодируют, выполняя следующие действия (в указанном порядке).
Примечание - Кодирование данного типа всегда заканчивают на восьмом бите другого или того же октета.
C.28.2 Если значение находится в диапазоне от 1 до 16, то к потоку битов добавляют бит '0', значение минус нижняя граница диапазона кодируют как целое значение без знака в поле из четырех битов и добавляют к потоку битов.
C.28.3 Если значение находится в диапазоне от 17 до 1040, то к потоку битов добавляют три бита '100', значение минус нижняя граница диапазона кодируют как целое значение без знака в поле из десяти битов и добавляют к потоку битов.
C.28.4 Если значение находится в диапазоне от 1041 до 263184, то к потоку битов добавляют три бита '101', значение минус нижняя граница диапазона кодируют как целое значение без знака в поле из восемнадцати битов и добавляют к потоку битов.
C.28.5 Если значение находится в диапазоне от 263185 до 220, то к потоку битов добавляют три бита '100' и шесть битов '000000' (забивка), значение минус нижняя граница диапазона кодируют как целое значение без знака в поле из двадцати битов и добавляют к потоку битов.
C.29.1 В данном пункте (C.29) описано кодирование целых значений в диапазоне 1 до 256.
Примечание - Кодирование данного типа всегда начинают с пятого или с седьмого бита октета и заканчивают на четвертом или шестом бите следующего октета соответственно.
C.29.2 Значение минус нижняя граница диапазона кодируют как целое значение без знака в поле из восьми битов и добавляют к потоку битов.
(справочное)
ПРИМЕРЫ КОДИРОВАНИЯ
ИНФО-НАБОРОВ XML КАК ДОКУМЕНТОВ БЫСТРОГО ИНФО-НАБОРА
D.1 Общее описание примеров
D.1.1 В настоящем приложении используют следующие типографические условные обозначения для чисел:
a) для десятичных чисел используют полужирный шрифт Courier New с последующим нижним индексом "10" (например, 1110);
b) для шестнадцатеричных чисел используют полужирный шрифт Courier New с последующим нижним индексом "16" (например, 0b1f16);
c) если система счисления указана явно, то нижний индекс опускают.
D.1.2 В настоящем приложении приведены два примера возможных кодирований заказа на универсальном бизнес-языке (UBL) [1] в документ быстрого инфо-набора. UBL разработан для обеспечения универсально понятного и общепризнанного коммерческого синтаксиса для юридически значимых деловых документов.
D.1.3 Инфо-набор XML для примера заказа UBL приведен в D.3.
D.1.4 Первый документ быстрого инфо-набора имеет исходный словарь, который ссылается на внешний словарь. В D.4 описано содержимое внешнего словаря, октеты документа быстрого инфо-набора и объяснены некоторые последовательности октетов.
D.1.5 Второй быстрый инфо-набор не имеет исходного словаря. В D.5 описаны октеты документа быстрого инфо-набора и объяснены некоторые последовательности октетов.
Примечание - Окончательный словарь последнего документа быстрого инфо-набора тот же самый, что и окончательный словарь документа быстрого инфо-набора, описанного в D.4.
D.1.6 В D.4 и D.5 октеты представлены рядом таблиц по две графы в каждой. В первой графе перечислены в шестнадцатеричном виде начальные позиции 32 последовательных октетов документа быстрого инфо-набора, а во второй графе приведены эти октеты в шестнадцатеричной нотации. Шестнадцатеричные символы, содержащие биты, которые соответствуют идентификации и указателю конца информационных элементов, подчеркнуты.
D.1.7 Объяснения некоторых последовательностей октетов документов быстрого инфо-набора (в D.4 и D.5) представлены в таблицах в следующих графах:
a) графа 1 содержит в шестнадцатеричном виде позицию октета(ов), приведенного(ых) в графе 2;
b) графа 2 содержит октет(ы) документа быстрого инфо-набора, связанный(е) с соответствующим информационным элементом и его свойствами. Октет представлен в двоичном виде с последующим заключенным в скобки шестнадцатеричным представлением [например, 11110000 (f0)];
c) графа 3 содержит подробное описание приведенного в графе 2 октета и ссылки на пункты приложения C для дальнейших объяснений и уточнений;
d) графа 4 содержит часть инфо-набора XML или документа XML 1.0 (если применимо), соответствующую октету(ам), приведенному(ым) в графе 2.
D.1.8 В приведенных примерах все блоки информационных элементов character, содержащие менее 6 символов, добавлены в таблицу CONTENT CHARACTER CHUNK, а значения свойства [normalized value] всех информационных элементов attribute, содержащие менее 6 символов, добавлены в таблицу ATTRIBUTE VALUE.
D.1.9 Размеры документов XML 1.0 и быстрого инфо-набора, а также размеры этих сжатых (с помощью GZIP) документов приведены в D.2.
D.2.1 В таблице D.1 приведены размеры всех документов. В графе 1 приведены документы UBL, в графе 2 - размеры документов, в графе 3 - размеры документов, сжатых с помощью GZIP (с принятыми по умолчанию опциями) [2].
Примечания
1 Документ XML 1.0 UBL Order не содержит пробельных символов (см. D.3.1.2).
2 В каждом документе все символы закодированы с использованием кодирования символов windows-1251.
3 Для документов быстрого инфо-набора не сериализована декларация XML (см. 12.3).
Таблица D.1
после сжатия с помощью GZIP
D.2.2 Размер документа быстрого инфо-набора со ссылкой на внешний словарь является наименьшим, так же как и его размер после сжатия с помощью GZIP. Отношение размера сжатого GZIP документа к исходному размеру для документа быстрого инфо-набора указывает, что этот документ быстрого инфо-набора содержит мало избыточной информации.
D.2.3 Во всех случаях размер сжатых GZIP документов быстрого инфо-набора меньше размера сжатых GZIP документов XML 1.0. Более того, размер документа быстрого инфо-набора со ссылкой на внешний словарь меньше размера сжатого GZIP документа XML 1.0.
D.3.1 Пример Joinery Order
D.3.1.1 Пример порядка UBL взят из [1]. В частности, пример Joinery Order был выбран (см. xml/joinery/UBL-Order-1.0-Joinery-Example.xml) по следующим причинам:
a) он является примером из реального мира и разработан независимо от настоящего стандарта без учета быстрого инфо-набора;
b) он находится в свободном доступе;
c) в нем широко использованы пространства имен XML, и следовательно, это хороший пример представления того, как быстрый инфо-набор поддерживает пространства имен XML.
Примечание - Тем самым документ XML 1.0 был уменьшен до разумных размеров для представления в настоящем стандарте;
b) все пробельные символы были удалены.
Примечание - Это представляет более реалистичный случай использования инфо-наборов XML, которые могут быть сериализованы, переданы по сети и проанализированы.
Ниже приведен документ XML 1.0 Joinery Order с указанными в D.3.1.2, перечисление a) изменениями, но с сохранением пробельных символов для удобства чтения:
Внешний словарь документа быстрого инфо-набора приведен в D.4.1. Октеты (как шестнадцатеричные символы) приведены в D.4.2. Подробные объяснения некоторых последовательностей октетов в D.4.2 приведены в D.4.3. Документ быстрого инфо-набора не может рассматриваться как самоописывающийся, так как для создания полного инфо-набора XML требуется внешняя информация (внешний словарь).
Примечание - Документ быстрого инфо-набора может быть обработан синтаксическим анализатором быстрого инфо-набора, который не может получить словарные таблицы, заданные URI, но индексы словарных таблиц не будут перенаправлены для получения информации, необходимой для генерации свойств информационных элементов.
D.4.1.1 Внешний словарь документа быстрого инфо-набора по определению должен быть окончательным словарем, полученным из инфо-набора XML примера UBL Order (см. D.3.1.2) и после измененным для того, чтобы:
a) не содержать информационных элементов character;
b) содержать пустые свойства [normalized value] информационных элементов attribute.
Примечания
1 Эти изменения представляют реалистичный сценарий, когда заранее неизвестно, каким будет определяемое приложением содержимое (информационные элементы character и/или свойства [normalized value] информационных элементов attribute) инфо-набора XML.
2 На практике не ожидается, что подлежащий сериализации документ будет использован для создания внешнего словаря. Предполагается, что реализующие средства будут использовать схему и потенциально экземпляры инфо-набора XML схемы в результате частотного анализа строк и квалифицированных имен станут такими, что меньшие значения индексов будут присвоены более часто появляющейся информации (например, частота появления свойств [local name] в инфо-наборах XML может быть описана степенным рядом).
D.4.1.2 URI внешнего словаря: urn:oasis:names:tc:ubl:Order:1.0:joinery:example.
D.4.1.3 В таблице D.2 представлен словарь инфо-набора XML UBL Order (словарные таблицы). В графе 1 перечислены индексы словарных таблиц (индекс), в графе 2 - записи словарной таблицы PREFIX (запись префикса), в графе 3 - записи словарной таблицы NAMESPACE NAME (запись имени пространства имен), в графе 4 - записи словарной таблицы LOCAL NAME (запись локального имени), в графе 5 - записи словарной таблицы ELEMENT NAME (запись имени элемента), в графе 6 - записи словарной таблицы ATTRIBUTE NAME (запись имени атрибута). Значения индексов для записей идентификаторов имен таблиц ELEMENT NAME и ATTRIBUTE NAME представлены в порядке, определенном для компонентов типа NameSurrogate (prefix-name-string-index, namespace-name-string-index и local-name-string-index). Символ "_" указывает на отсутствие значения (что возможно только для значений компонентов prefix-name-string-index и namespace-name-string-index).
Примечания
1 Первая запись (индекс 1) для префикса и имени пространства имен, соответствующая префиксу XML ("xml") и имени пространства имен XML ("/template/go.php?url=https://www.w3.org/XML/1998/namespace"), является встроенной (см. 7.2.21 и 7.2.22).
2 Длинные записи имен пространств имен (URI) были урезаны.
3 Для первой записи имени элемента (индекс 1) нет ссылки на префикс (так как значение отсутствует, на что указывает "_"), есть ссылки на седьмую запись имени пространства имен (индекс 7) для свойства [namespace name] ("urn:oasis:names:tc:ubl:Order:1:0") и на первую запись локального имени (индекс 1) для свойства [local name] ("Order").
Таблица D.2
В таблице D.3 приведены октеты документа быстрого инфо-набора для примера UBL Order, представленного в D.3.
Примечание - В таблице D.3 подчеркнуты шестнадцатеричные символы, содержащие биты, которые соответствуют идентификации и указателю конца информационных элементов.
Таблица D.3
Октеты документа быстрого инфо-набора
(в виде шестнадцатеричных символов)
??????????????????????????????????????????????????????????????????
?000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f?
???????????????????????????????????????????????????????????????????????????
? 000000 ?e00100002010002f75726e3a6f617369733a6e616d65733a74633a75626c3a4f?
? ?---- ?
???????????????????????????????????????????????????????????????????????????
? 000020 ?726465723a313a303a6a6f696e6572793a6578616d706c6578cf8181cf8282cf?
? ? ---- --?
???????????????????????????????????????????????????????????????????????????
? 000040 ?8383cf8484cf8585cd86f00000083b75726e3a6f617369733a6e616d65733a74?
? ? -- -- -- ------ ?
???????????????????????????????????????????????????????????????????????????
? 000060 ?633a75626c3a4f726465723a313a30202e2e2f2e2e2f7873642f6d61696e646f?
? ? ?
???????????????????????????????????????????????????????????????????????????
? 000080 ?632f55424c2d4f726465722d312e302e787364f00182075330332d3033343235?
? ? ------ ?
???????????????????????????????????????????????????????????????????????????
? 0000a0 ?37f0028207323030332d30322d3033f003040506820e4a65727279204275696c?
? ? ------ ------------ ?
???????????????????????????????????????????????????????????????????????????
? 0000c0 ?64657220706c63ff070882074d61727368204c616e65f00982044e6f77686572?
? ? -------- ------ ?
???????????????????????????????????????????????????????????????????????????
? 0000e0 ?65f00a82054e52313820345858f00b82044e6f72666f6c6bff0c068206457661?
? ? ------ ------ -------- ?
???????????????????????????????????????????????????????????????????????????
? 000100 ?20427269636bffff0d04050682135370656369616c6973742057696e646f7773?
? ? -------------- ?
???????????????????????????????????????????????????????????????????????????
? 000120 ?20706c63ff070e820b536e6f7768696c6c20576f726b73f009820b4c6974746c?
? ? -------- ------ ?
???????????????????????????????????????????????????????????????????????????
? 000140 ?6520536e6f72696e67f00a8204534d3220334e57f00b82075768657265736869?
? ? ?
???????????????????????????????????????????????????????????????????????????
? 000160 ?7265ffff0f108210323030332d30322d32345430303a30303a3030f01108820a?
? ? ---------- -------- ?
???????????????????????????????????????????????????????????????????????????
? 000180 ?5269766572736964652052642ef00e8217506c6f742031372c20576869746577?
? ? ------ ?
???????????????????????????????????????????????????????????????????????????
? 0001a0 ?6174657220457374617465f00982065768657473746f6e65f00b82064d696464?
? ? ------ ------ ?
???????????????????????????????????????????????????????????????????????????
? 0001c0 ?6c65736578fff01213149041f0550143756e6974f09032f01617189202323336?
? ? ------------ ------ ---- ---------- ?
???????????????????????????????????????????????????????????????????????????
? 0001e0 ?5756f0191a9201776f6f64f01b9201736f6674ff191a820366696e697368f01b?
? ? -------- ------ -------- ----?
???????????????????????????????????????????????????????????????????????????
? 000200 ?82037072696d6564ff191a820566697474696e6773f01b9202736174696eff19?
? ?-- -------- ------ ----?
???????????????????????????????????????????????????????????????????????????
? 000220 ?1a8204676c617a696e67f01b820373696e676c65ffffff1213149042f0550180?
? ?---- ------ -------------- ------ ?
???????????????????????????????????????????????????????????????????????????
? 000240 ?f09033f016171892023334305457f0191a920168616e64f01b915248ff191aa3?
? ?---- -------- ------ --------?
???????????????????????????????????????????????????????????????????????????
? 000260 ?f01b920168617264ff191a820366696e697368f01b9202737461696eff191a82?
? ?------ -------- ------ --------?
???????????????????????????????????????????????????????????????????????????
? 000280 ?0566697474696e6773f01b92026272617373ff191a8204676c617a696e67f01b?
? ? ------ -------- ----?
???????????????????????????????????????????????????????????????????????????
? 0002a0 ?8203646f75626c65ffffffff ?
? ?-- -------- ?
???????????????????????????????????????????????????????????????????????????
? 0002ac ? ?
???????????????????????????????????????????????????????????????????????????
D.4.3.1 Кодирование информационных элементов document и Order element
Ниже приведено объяснение деталей исходного кодирования документа быстрого инфо-набора (включая URI внешнего словаря) и корневого информационного элемента. В частности, объяснено кодирование информационного элемента document, последовательности информационных элементов namespace, информационного элемента element и информационного элемента attribute. В таблице D.4 приведен фрагмент документа быстрого инфо-набора для кодирования информационных элементов document и Order element из D.3.2. В таблице D.5 данное кодирование подробно описано. Данный фрагмент в XML 1.0 представлен следующим образом:
<Order xmlns:res="urn:oasis:names:tc:ubl:codelist:AcknowledgementResponseCode:1:0"
xmlns:cbc="urn:oasis:names:tc:ubl:CommonBasicComponents:1:0"
xmlns:cac="urn:oasis:names:tc:ubl:CommonAggregateComponents:1:0"
xmlns:cur="urn:oasis:names:tc:ubl:codelist:CurrencyCode:1:0"
xmlns:xsi="/template/go.php?url=https://www.w3.org/2001/XMLSchema-instance"
xmlns="urn:oasis:names:tc:ubl:Order:1:0"
xsi:schemaLocation="urn:oasis:names:tc:ubl:Order:1:0 ../../xsd/maindoc/UBL-Order-1.0.xsd">
Таблица D.4
??????????????????????????????????????????????????????????????????
?000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f?
???????????????????????????????????????????????????????????????????????????
? 000000 ?e00100002010002f75726e3a6f617369733a6e616d65733a74633a75626c3a4f?
? ?---- ?
???????????????????????????????????????????????????????????????????????????
? 000020 ?726465723a313a303a6a6f696e6572793a6578616d706c6578cf8181cf8282cf?
? ? ---- --?
???????????????????????????????????????????????????????????????????????????
? 000040 ?8383cf8484cf8585cd86f00000083b75726e3a6f617369733a6e616d65733a74?
? ? -- -- -- ------ ?
???????????????????????????????????????????????????????????????????????????
? 000060 ?633a75626c3a4f726465723a313a30202e2e2f2e2e2f7873642f6d61696e646f?
? ? ?
???????????????????????????????????????????????????????????????????????????
? 000080 ?632f55424c2d4f726465722d312e302e787364f0 ?
? ? -- ?
???????????????????????????????????????????????????????????????????????????
Таблица D.5
D.4.3.2 Кодирование информационного элемента Address element из информационного элемента BuyerParty element
Ниже приведено объяснение деталей кодирования информационного элемента Address element из информационного элемента BuyerParty element документа быстрого инфо-набора. В частности, объяснено кодирование информационных элементов element и character. В таблице D.6 приведен фрагмент документа быстрого инфо-набора для кодирования информационного элемента Address element из информационного элемента BuyerParty element (D.3.2). В таблице D.7 описаны детали этого кодирования. Такой фрагмент в XML 1.0 выглядит следующим образом:
Таблица D.6
???????????????????????????????????????????????????????????????????
?000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f ?
???????????????????????????????????????????????????????????????????????????
?0000c0 ? 070882074d61727368204c616e65f00982044e6f77686572 ?
???????????????????????????????????????????????????????????????????????????
?0000e0 ?65f00a82054e52313820345858f00b82044e6f72666f6c6bff ?
???????????????????????????????????????????????????????????????????????????
Таблица D.7
Октеты (в виде шестнадцатеричных символов) документа быстрого инфо-набора приведены в D.5.1. Подробные объяснения некоторых последовательностей октетов из D.5.1 приведены в D.5.2. Окончательные словари данного и предыдущего документов быстрого инфо-набора должны быть одинаковы, поскольку индексы словарных таблиц во внешнем словаре генерируются в том же порядке. Так как строки встроены в документ быстрого инфо-набора, то размер его будет больше. Затраты на включение строк - 63510 байт (размер данного документа быстрого инфо-набора минус размер предыдущего), что составляет примерно половину размера документа (для документов большего размера эта разница будет меньше, так как словарь имеет тенденцию к фиксированному размеру). В отличие от предыдущего документа быстрого инфо-набора данный документ можно рассматривать как самоописывающийся, потому что инфо-набор XML может быть создан без какой-либо внешней информации (внешнего словаря).
В таблице D.8 приведены октеты документа быстрого инфо-набора для примера UBL Order, приведенного в D.3.
Примечание - В таблице D.8 подчеркнуты шестнадцатеричные символы, содержащие биты, которые соответствуют идентификации и указателю конца информационных элементов.
Таблица D.8
Октеты документа быстрого инфо-набора
(в виде шестнадцатеричных символов)
??????????????????????????????????????????????????????????????????
?000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f?
???????????????????????????????????????????????????????????????????????????
? 000000 ?e00100000078cf027265733e75726e3a6f617369733a6e616d65733a74633a75?
? ?---- ---- ?
???????????????????????????????????????????????????????????????????????????
? 000020 ?626c3a636f64656c6973743a41636b6e6f776c656467656d656e74526573706f?
? ? ?
???????????????????????????????????????????????????????????????????????????
? 000040 ?6e7365436f64653a313a30cf026362632f75726e3a6f617369733a6e616d6573?
? ? -- ?
???????????????????????????????????????????????????????????????????????????
? 000060 ?3a74633a75626c3a436f6d6d6f6e4261736963436f6d706f6e656e74733a313a?
? ? ?
???????????????????????????????????????????????????????????????????????????
? 000080 ?30cf026361633375726e3a6f617369733a6e616d65733a74633a75626c3a436f?
? ? ?
???????????????????????????????????????????????????????????????????????????
? 0000a0 ?6d6d6f6e416767726567617465436f6d706f6e656e74733a313a30cf02637572?
? ? -- ?
???????????????????????????????????????????????????????????????????????????
? 0000c0 ?2f75726e3a6f617369733a6e616d65733a74633a75626c3a636f64656c697374?
? ? ?
???????????????????????????????????????????????????????????????????????????
? 0000e0 ?3a43757272656e6379436f64653a313a30cf0278736928687474703a2f2f7777?
? ? -- ?
???????????????????????????????????????????????????????????????????????????
? 000100 ?772e77332e6f72672f323030312f584d4c536368656d612d696e7374616e6365?
? ? ?
???????????????????????????????????????????????????????????????????????????
? 000120 ?cd1f75726e3a6f617369733a6e616d65733a74633a75626c3a4f726465723a31?
? ? ?
???????????????????????????????????????????????????????????????????????????
? 000140 ?3a30f03d86044f726465727b85850d736368656d614c6f636174696f6e083b75?
? ? ---- -- ?
???????????????????????????????????????????????????????????????????????????
? 000160 ?726e3a6f617369733a6e616d65733a74633a75626c3a4f726465723a313a3020?
? ? ?
???????????????????????????????????????????????????????????????????????????
? 000180 ?2e2e2f2e2e2f7873642f6d61696e646f632f55424c2d4f726465722d312e302e?
? ? ?
???????????????????????????????????????????????????????????????????????????
? 0001a0 ?787364f03d8607427579657273494482075330332d303334323537f03f828208?
? ? ---- ---- ?
???????????????????????????????????????????????????????????????????????????
? 0001c0 ?4973737565446174658207323030332d30322d3033f03f838309427579657250?
? ? ---- ?
???????????????????????????????????????????????????????????????????????????
? 0001e0 ?617274793f83830450617274793f83830850617274794e616d653f8282034e61?
? ? -- -- -- ?
???????????????????????????????????????????????????????????????????????????
? 000200 ?6d65820e4a65727279204275696c64657220706c63ff3f838306416464726573?
? ? -- ---- ?
???????????????????????????????????????????????????????????????????????????
? 000220 ?733f8282095374726565744e616d6582074d61727368204c616e65f03f828207?
? ? -- -- ---- ?
???????????????????????????????????????????????????????????????????????????
? 000240 ?436974794e616d6582044e6f7768657265f03f828209506f7374616c5a6f6e65?
? ? -- ---- ?
???????????????????????????????????????????????????????????????????????????
? 000260 ?82054e52313820345858f03f82820f436f756e747279537562656e7469747982?
? ?-- ---- --?
???????????????????????????????????????????????????????????????????????????
? 000280 ?044e6f72666f6c6bff3f838306436f6e7461637406820645766120427269636b?
? ? ---- ?
???????????????????????????????????????????????????????????????????????????
? 0002a0 ?ffff3f83830a53656c6c6572506172747904050682135370656369616c697374?
? ?------ -------- ?
???????????????????????????????????????????????????????????????????????????
? 0002c0 ?2057696e646f777320706c63ff073f82820b4275696c64696e674e616d65820b?
? ? ------ -- ?
???????????????????????????????????????????????????????????????????????????
? 0002e0 ?536e6f7768696c6c20576f726b73f009820b4c6974746c6520536e6f72696e67?
? ? ------ ?
???????????????????????????????????????????????????????????????????????????
? 000300 ?f00a8204534d3220334e57f00b820757686572657368697265ffff3f83830744?
? ?------ ------ ------ ?
???????????????????????????????????????????????????????????????????????????
? 000320 ?656c69766572793f82821852657175657374656444656c697665727944617465?
? ? -- ?
???????????????????????????????????????????????????????????????????????????
? 000340 ?54696d658210323030332d30322d32345430303a30303a3030f03f83830e4465?
? ? -- ---- ?
???????????????????????????????????????????????????????????????????????????
? 000360 ?6c69766572794164647265737308820a5269766572736964652052642ef00e82?
? ? ---- ------?
???????????????????????????????????????????????????????????????????????????
? 000380 ?17506c6f742031372c205768697465776174657220457374617465f009820657?
? ? ------ ?
???????????????????????????????????????????????????????????????????????????
? 0003a0 ?68657473746f6e65f00b82064d6964646c65736578fff03f8383084f72646572?
? ? ------ ------ ?
???????????????????????????????????????????????????????????????????????????
? 0003c0 ?4c696e653f8383074c696e654974656d3f8383829041f07f8282075175616e74?
? ? -- -- -- ---- ?
???????????????????????????????????????????????????????????????????????????
? 0003e0 ?697479780f7175616e74697479556e6974436f646543756e6974f09032f03f83?
? ? -- ---- ---- ?
???????????????????????????????????????????????????????????????????????????
? 000400 ?83034974656d3f83831853656c6c6572734974656d4964656e74696669636174?
? ? -- ?
???????????????????????????????????????????????????????????????????????????
? 000420 ?696f6e3f838301494492023233365756f03f838310506879736963616c417474?
? ? -- -- ---- ?
???????????????????????????????????????????????????????????????????????????
? 000440 ?7269627574653f83830a41747472696275746549449201776f6f64f03f82820a?
? ? -- -- ---- ?
???????????????????????????????????????????????????????????????????????????
? 000460 ?4465736372697074696f6e9201736f6674ff191a820366696e697368f01b8203?
? ? -- -------- ------ ?
???????????????????????????????????????????????????????????????????????????
? 000480 ?7072696d6564ff191a820566697474696e6773f01b9202736174696eff191a82?
? ? -------- ------ --------?
???????????????????????????????????????????????????????????????????????????
? 0004a0 ?04676c617a696e67f01b820373696e676c65ffffff1213149042f0550180f090?
? ? ------ -------------- ------------?
???????????????????????????????????????????????????????????????????????????
? 0004c0 ?33f016171892023334305457f0191a920168616e64f01b915248ff191aa3f01b?
? ? ---------- -------- ------ ------------?
???????????????????????????????????????????????????????????????????????????
? 0004e0 ?920168617264ff191a820366696e697368f01b9202737461696eff191a820566?
? ?-- -------- ------ -------- ?
???????????????????????????????????????????????????????????????????????????
? 000500 ?697474696e6773f01b92026272617373ff191a8204676c617a696e67f01b8203?
? ? ------ -------- ------ ?
???????????????????????????????????????????????????????????????????????????
? 000520 ?646f75626c65ffffffff ?
? ? -------- ?
???????????????????????????????????????????????????????????????????????????
? 00052a ? ?
???????????????????????????????????????????????????????????????????????????
D.5.2.1 Кодирование информационных элементов document и Order element
Ниже приведено объяснение деталей исходного кодирования документа быстрого инфо-набора и корневого информационного элемента. В частности, объяснено кодирование информационного элемента document, последовательности информационных элементов namespace, информационных элементов element и attribute. В таблице D.9 приведен фрагмент документа быстрого инфо-набора для кодирования информационных элементов document и Order element из D.3.2. В таблице D.10 приведены детали данного кодирования. Фрагмент в XML 1.0 выглядит следующим образом:
<Order xmlns:res="urn:oasis:names:tc:ubl:codelist:AcknowledgementResponseCode:1:0"
xmlns:cbc="urn:oasis:names:tc:ubl:CommonBasicComponents:1:0"
xmlns:cac="urn:oasis:names:tc:ubl:CommonAggregateComponents:1:0"
xmlns:cur="urn:oasis:names:tc:ubl:codelist:CurrencyCode:1:0"
xmlns:xsi="/template/go.php?url=https://www.w3.org/2001/XMLSchema-instance>>
xmlns="urn:oasis:names:tc:ubl:Order:1:0"
xsi:schemaLocation="urn:oasis:names:tc:ubl:Order:1:0 ../../xsd/maindoc/UBL-Order-1.0.xsd">
Таблица D.9
??????????????????????????????????????????????????????????????????
?000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f?
???????????????????????????????????????????????????????????????????????????
? 000000 ?e00100000078cf027265733e75726e3a6f617369733a6e616d65733a74633a75?
? ?---- ---- ?
???????????????????????????????????????????????????????????????????????????
? 000020 ?626c3a636f64656c6973743a41636b6e6f776c656467656d656e74526573706f?
? ? ?
???????????????????????????????????????????????????????????????????????????
? 000040 ?6e7365436f64653a313a30cf026362632f75726e3a6f617369733a6e616d6573?
? ? -- ?
???????????????????????????????????????????????????????????????????????????
? 000060 ?3a74633a75626c3a436f6d6d6f6e4261736963436f6d706f6e656e74733a313a?
? ? ?
???????????????????????????????????????????????????????????????????????????
? 000080 ?30cf026361633375726e3a6f617369733a6e616d65733a74633a75626c3a436f?
? ? ?
???????????????????????????????????????????????????????????????????????????
? 0000a0 ?6d6d6f6e416767726567617465436f6d706f6e656e74733a313a30cf02637572?
? ? -- ?
???????????????????????????????????????????????????????????????????????????
? 0000c0 ?2f75726e3a6f617369733a6e616d65733a74633a75626c3a636f64656c697374?
? ? ?
???????????????????????????????????????????????????????????????????????????
? 0000e0 ?3a43757272656e6379436f64653a313a30cf0278736928687474703a2f2f7777?
? ? -- ?
???????????????????????????????????????????????????????????????????????????
? 000100 ?772e77332e6f72672f323030312f584d4c536368656d612d696e7374616e6365?
? ? ?
???????????????????????????????????????????????????????????????????????????
? 000120 ?cd1f75726e3a6f617369733a6e616d65733a74633a75626c3a4f726465723a31?
? ?-- ?
???????????????????????????????????????????????????????????????????????????
? 000140 ?3a30f03d86044f726465727b85850d736368656d614c6f636174696f6e083b75?
? ? ---- -- ?
???????????????????????????????????????????????????????????????????????????
? 000160 ?726e3a6f617369733a6e616d65733a74633a75626c3a4f726465723a313a3020?
? ? ?
???????????????????????????????????????????????????????????????????????????
? 000180 ?2e2e2f2e2e2f7873642f6d61696e646f632f55424c2d4f726465722d312e302e?
? ? ?
???????????????????????????????????????????????????????????????????????????
? 0001a0 ?787364f0 ?
? ? -- ?
???????????????????????????????????????????????????????????????????????????
Таблица D.10
D.5.2.2 Кодирование информационного элемента Address element информационного элемента BuyerParty element
Ниже приведено объяснение деталей кодирования информационного элемента Address element информационного элемента BuyerParty element документа быстрого инфо-набора. В частности, объяснено кодирование информационных элементов element и character. В таблице D.11 приведен фрагмент документа быстрого инфо-набора для кодирования информационного элемента Address element информационного элемента BuyerParty element (D.3.2). В таблице D.12 приведено описание деталей кодирования. Фрагмент в XML 1.0 выглядит следующим образом:
Таблица D.11
??????????????????????????????????????????????????????????????????
?000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f?
???????????????????????????????????????????????????????????????????????????
? 000200 ? 3f838306416464726573?
? ? -- ?
???????????????????????????????????????????????????????????????????????????
? 000220 ?733f8282095374726565744e616d6582074d61727368204c616e65f03f828207?
? ? -- -- ---- ?
???????????????????????????????????????????????????????????????????????????
? 000240 ?436974794e616d6582044e6f7768657265f03f828209506f7374616c5a6f6e65?
? ? ---- ?
???????????????????????????????????????????????????????????????????????????
? 000260 ?82054e52313820345858f03f82820f436f756e747279537562656e7469747982?
? ?-- ---- --?
???????????????????????????????????????????????????????????????????????????
? 000280 ?044e6f72666f6c6bff ?
? ? -- ?
???????????????????????????????????????????????????????????????????????????
Таблица D.12
D.5.2.3 Кодирование информационного элемента BuyersID element первого информационного элемента LineItem element
Ниже приведено объяснение деталей кодирования информационного элемента BuyersID element первого информационного элемента LineItem element документа быстрого инфо-набора. В частности, объяснено кодирование информационного элемента element, свойство [local name] которого было проиндексировано ранее. В таблице D.13 приведен фрагмент документа быстрого инфо-набора для кодирования информационного элемента BuyersID element первого информационного элемента LineItem element (D.3.2). В таблице D.14 приведено описание деталей кодирования. Фрагмент в XML 1.0 выглядит следующим образом:
Таблица D.13
??????????????????????????????????????????????????????????????????
?000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f?
???????????????????????????????????????????????????????????????????????????
? 0003c0 ? 3f8383074c696e654974656d3f8383829041f0 ?
? ? -- -- -- -- ?
???????????????????????????????????????????????????????????????????????????
Таблица D.14
(справочное)
ПРИСВОЕНИЕ ЗНАЧЕНИЙ ИДЕНТИФИКАТОРОВ ОБЪЕКТОВ
В настоящем стандарте присвоены следующие идентификаторы объектов и дескрипторы объектов:
{ joint-iso-itu-t(2) asn1(1) generic-applications(10) fast-infoset(0)
modules(0) fast-infoset(0)}
"Fast Infoset ASN.l Module"
{joint-iso-itu-t(2) asn1(1) generic-applications(10) fast-infoset(0)
modules(0) fast-infoset-edm(1)}
"Fast Infoset Encoding Definition Module"
{joint-iso-itu-t(2) asn1(1) generic-applications(10) fast-infoset(0)
modules(0)fast-infoset-elm(2)}
"Fast Infoset Encoding Link Module"
{joint-iso-itu-t(2) asn1(1) generic-applications(10) fast-infoset(0)
encodings(1) optional-xml-declaration(0)}
-- Определен как finf-doc-opt-decl в A.1
"А fast infoset document containing an XML declaration"
{joint-iso-itu-t(2) asn1(1) generic-applications(10) fast-infoset(0)
encodings(1) no-xml-declaration(1)}
-- Определен как finf-doc-no-decl в A.1
"А fast infoset document without an XML declaration"
(справочное)
О СООТВЕТСТВИИ МЕЖГОСУДАРСТВЕННЫХ СТАНДАРТОВ ССЫЛОЧНЫМ
МЕЖДУНАРОДНЫМ СТАНДАРТАМ (МЕЖДУНАРОДНЫМ ДОКУМЕНТАМ)
Таблица ДА.1
[2] IETF RFC 1952 (1996), GZIP file format specification version 4.3 (Формат файлов GZIP, спецификация версии 4.3)
Вернуться в "Каталог нормативных документов"
Источник информации: https://internet-law.ru/documents/prod/gost_gosudarstvennyj-standart/41/gost_72546.html
На правах рекламы:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||