(справочное)
Это приложение детализирует алгоритм отображения определенных приложениями имен, таких как имена переменных или полей в языках программирования, в символы Unicode для того, чтобы имена были корректными именами элементов и атрибутов XML в соответствии со спецификацией пространств имен в XML [Namespaces in XML].
Шестнадцатеричные цифры
[5]hexDigit | ::= | [0-9A-F] |
B.1 Правила для отображения имен, определенных приложениями, в имена XML
1 XML имя состоит из двух частей: Prefix и LocalPart. Пусть Prefix определяется в соответствии с правилами и ограничениями, определенными в [Namespaces in XML].
2 Пусть T - это имя в приложении, представленное в виде последовательности символов, закодированных в определенной кодировке.
3 Пусть M - определенная реализацией функция для перекодирования символов, используемых в определенных приложениями именах, в эквивалентные строки символов Unicode.
Примечания
1 В идеальном варианте, если это перекодирование из не-Unicode кодировки, то оно должно быть и обратимым, и нормализующим по форме С Unicode (т.е. комбинирование последовательности представлены в предписанном каноническом порядке). Следует заметить, что некоторые перекодирования не могут быть совершенно обратимыми, и в некоторых случаях нормализация по форме С (NFC) может изменить исходную последовательность (см. [CharMod]). Для того, чтобы обеспечить соответствие имен после перекодировки, последовательности Unicode должны быть нормализованы с формы нормализации С Unicode.
2 Перекодирование преобразует в скалярные значения Unicode ("кодовые позиции"), а не в какую-либо определенную схему кодирования символов Unicode, такую как UTF-8 или UTF-16.
3 Корректные последовательности суррогатных пар должны быть преобразованы в соответствующие им скалярные значения ("кодовые позиции") (т.е. последовательность U+D800 U+DC00 должна быть перекодирована в символ U+10000). Если перекодирование определено для кодировки Unicode, то несоответствующие (не являющиеся самыми короткими формами) последовательности UTF-8 и UTF-16 должны быть преобразованы в соответствующие им скалярные значения.
4 Количество символов в Т не обязательно совпадает с количеством символов в М, потому что перекодирование может быть и таким, что один символ кодируется несколькими, и наоборот, несколько символов кодируются одним. Детали перекодирования могут определяться реализацией. В редких случаях нет никакого эквивалентного представления Unicode для Т. Такие случаи здесь не описаны.
1 Пусть C - последовательность скалярных значений Unicode (символов), составляющих М(Т).
2 Пусть N - число символов в C. Пусть C , C ... C - символы C, представленные в логическом порядке от наиболее значащего к наименее значащему.
3 Для каждого i между 1 (единицей) и N, пусть X - строка из символов Unicode, определенная по следующим правилам.
Варианты:
1) Если C не определен (т.е. некоторый символ или последовательность символов из символьной последовательности приложения T не содержат отображения в Unicode), то X определяется реализацией.
2) Если i<=N-1 и C ="_" (U+005F, НИЖНЕЕ ПОДЧЕРКИВАНИЕ), и C ="x" (U+0078, ЛАТИНСКАЯ СТРОЧНАЯ БУКВА Х), то можно полагать, что X , станет равным "_x005F_".
3) Если i=1, N>=3 и C ="x" (U+0078, ЛАТИНСКАЯ СТРОЧНАЯ БУКВА X) или "X" (U+0058, ЛАТИНСКАЯ ПРОПИСНАЯ БУКВА Х), и C ="m" (U+006D, ЛАТИНСКАЯ СТРОЧНАЯ БУКВА M) или "M" (U+004D, ЛАТИНСКАЯ ПРОПИСНАЯ БУКВА M), и C ="I" (U+006C, ЛАТИНСКАЯ СТРОЧНАЯ БУКВА L) или "L" (U+004C, ЛАТИНСКАЯ ПРОПИСНАЯ БУКВА L) (другими словами, в строке из трех или более символов, начинающейся с "xml", каждая буква может быть строчной или прописной). Если C - это "x" (U+0078, ЛАТИНСКАЯ СТРОЧНАЯ БУКВА X), то можно полагать, что Х станет равным "_x0078_". В противном случае, если C - это "X" (U+0058, ЛАТИНСКАЯ ПРОПИСНАЯ БУКВА Х), то можно полагать, что X станет равным "_x0058_".
4) Если C не является допустимым символом строк типа NCName (см. [Namespaces in XML]) или, если i=1 (один) и C не является допустимым первым символом строки типа NCName тогда:
Пусть U , U , ..., U - шесть шестнадцатеричных цифр (см. грамматическое правило [5] выше) таких, что скалярное значение Unicode C , есть "U+" U U ... U .
Варианты:
Если U =0, U =0, U =0, и U =0, тогда можно положим* X ="_x" U U "_".
___________________
* Текст документа соответствует оригиналу. - Примечание изготовителя базы данных.
Этот случай подразумевает, что C - символ в базовой многоязыковой плоскости (Basic Multilingual Plane, BMP, Плоскость 0) Unicode и он может быть полностью представлен одной "кодовой позицией" UTF-16 - последовательностью U+ U U .
В противном случае положим X , равным "_x" U U U U U U "_".
В противном случае положим X , равным M , т.е. любой символ из X, который является разрешенным символом для строки типа NCName, просто копируется.
1 Положим LocalPart, равной конкатенации строк X , X ,... , X в порядке от наиболее значимой к наименее значимой.
2 Положим XML имя, равным QName, согласно спецификации [Namespaces in XML].
B.2 Примеры
435 × 516 пикс.   Открыть в новом окне |
Приложение C (справочное). Использование W3C XML Schema с кодировкой SOAP
Приложение C
(справочное)
Как отмечалось в 5.1.4, узлы графа SOAP маркированы именами типов, но соответствующие процессоры для проверки корректности закодированных сообщений SOAP не требуются.
Данные разделы описывают методы, которые могут применяться, когда для использования приложениями SOAP желательна проверка корректности по отношению к W3C XML-схемам. Любые ошибки или отказы, выявленные во время такой проверки корректности, выходят за рамки данной Рекомендации W3C; с точки зрения SOAP такие отказы рассматриваются как отказы уровня приложения.
C.1 Проверка корректности с использованием минимальной схемы
Несмотря на то что XML-схемы W3C обычно передаются как документы на языке XML Schema [XML Schema Part 1], схема Рекомендации основана на абстрактном определении схем, которым должны соответствовать все процессоры. Схема Рекомендации обеспечивает, что все такие схемы включают определения для базового набора встроенных типов, таких как целые числа, даты, и т.д. (см. [XML Schema Part 1, подраздел 3.14]). Таким образом, возможна проверка корректности сообщения SOAP на соответствие такой минимальной схеме, которая получается при отсутствии дополнительных определений и объявлений (т.е. не является схемой документа) для процессора схемы.
При использовании минимальной схемы хорошо сформированный документ XML считается корректным, если для всех элементов, кроме элементов с xsi:type, именованный тип является встроенным, и соответствующий элемент является корректным по отношению к этому типу. Таким образом, проверка корректности сообщения SOAP 1.2 с использованием минимальной схемы приближает поведение встроенных типов SOAP 1.1.
C.2 Проверка корректности с использованием схемы кодирования SOAP
Проверка корректности в отношении минимальной схемы (см. раздел C.1) не будет успешно выполняться в случаях, где у закодированных узлов графа есть многократные входящие ребра. Это вызвано тем, что элементы, представляющие такие узлы графа, будут содержать информационные элементы-атрибуты id, которые недопустимы для элементов типа "xs:string", "xs:integer" и т.д. Кодирование SOAP таких графов МОЖЕТ быть проверено на корректность по отношению к схеме кодирования SOAP . Для проверки кодирования метки ребер и, следовательно, свойства [local name] и [namespace name] информационных объектов-элементов должны соответствовать меткам и свойствам, определенным в схеме кодирования SOAP. Корректность закодированного графа по отношению к схеме кодирования SOAP приведет к тому, что свойству "имя типа" узла в графе будет присвоено соответствующее имя типа.
________________
http://www.w3.org/2003/05/soap-encoding.
C.3 Проверка корректности с использованием более конкретных схем
Иногда схемы могут быть созданы для описания кодирования определенных графов. Корректность закодированного графа по отношению к такой схеме приведет к тому, что свойству "имя типа" узла в графе будет присвоено соответствующее имя типа. Такая схема может также предоставлять значения по умолчанию или фиксированные значения для одного или более информационных элементов-атрибутов itemType, arraySize или nodeType; значения по умолчанию атрибутов при десериализации графа обрабатываются таким же образом, как если были явно переданы в сообщении. Об ошибках или несогласованностях, представленных таким образом (например, если значение атрибута ошибочное или несоответствующее), нужно сообщать как об ошибках уровня приложения; об отказах из пространства имен "http://www.w3.org/2003/05/soap-encoding" следует сообщать только в случае, если нарушены нормативные части данной спецификации.
Приложение ДА (справочное). Сведения о соответствии ссылочных международных стандартов национальным стандартам Российской Федерации
Приложение ДА
(справочное)