Правила выведения структуры и типов узлов схемы

Правила выведения структуры и типов узлов схемы

В данном разделе описывается, как в процессе вывода схемы различные типы узлов XML-документа преобразуются в структуру языка XSD.

Правила вывода элементов

В данном разделе описаны правила вывода для декларации элементов. Могут быть выведены восемь структур деклараций элементов.

Элемент простого типа

Пустой элемент с атрибутами

Элемент с атрибутами и простым содержимым

Элемент с последовательностью дочерних элементов

Элемент с последовательностью дочерних элементов и атрибутов

Элемент с последовательностью выборов дочерних элементов

Элемент с последовательностью выборов дочерних элементов и атрибутов

Все декларации элементов complexType выводятся как анонимные типы. Единственный выводимый глобальный элемент - корневой элемент; все остальные элементы локальны.

Простой типизированный элемент

В следующей таблице показаны входные XML-данные для метода InferSchema и созданная XML-схема. Элемент, выделенный полужирным шрифтом, показывает схему, выведенную для элемента простого типа.

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xml

Пустой элемент

В следующей таблице показаны входные XML-данные для метода InferSchema и созданная XML-схема. Элемент, выделенный полужирным шрифтом, показывает схему, выведенную для пустого элемента.

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xml

Пустой элемент с атрибутами

В следующей таблице показаны входные XML-данные для метода InferSchema и созданная XML-схема. Элементы, выделенные полужирным шрифтом, показывают схему, выведенную для пустого элемента с атрибутами.

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xml

Элемент с атрибутами и простым содержимым

В следующей таблице показаны входные XML-данные для метода InferSchema и созданная XML-схема. Элементы, выделенные полужирным шрифтом, показывают схему, выведенную для элемента с атрибутами и простым содержимым.

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xml

Элемент с последовательностью дочерних элементов

В следующей таблице показаны входные XML-данные для метода InferSchema и созданная XML-схема. Элементы, выделенные полужирным шрифтом, показывают схему, выведенную для элемента с последовательностью дочерних элементов.

Даже если элемент содержит только один дочерний элемент, он все равно интерпретируется как последовательность.

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xml

Элемент с последовательностью дочерних элементов и атрибутов

В следующей таблице показаны входные XML-данные для метода InferSchema и созданная XML-схема. Элементы, выделенные полужирным шрифтом, показывают схему, выведенную для элемента с последовательностью дочерних элементов и атрибутов.

Даже если элемент содержит только один дочерний элемент, он все равно интерпретируется как последовательность.

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xml

Элемент с последовательностью и выбором дочерних элементов

В следующей таблице показаны входные XML-данные для метода InferSchema и созданная XML-схема. Элементы, выделенные полужирным шрифтом, показывают схему, выведенную для элемента с последовательностью и выбором дочерних элементов.

Для атрибута maxOccurs элемента xs:choice устанавливается в выводимой схеме значение "unbounded" .

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xml

Элемент с последовательностью и выбором дочерних элементов и атрибутов

В следующей таблице показаны входные XML-данные для метода InferSchema и созданная XML-схема. Элементы, выделенные полужирным шрифтом, показывают схему, выведенную для элемента с последовательностью и выбором дочерних элементов и атрибутов.

Для атрибута maxOccurs элемента xs:choice устанавливается в выводимой схеме значение "unbounded" .

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xml

Обработка атрибутов

Каждый раз, когда в узле встречается новый атрибут, он добавляется к выведенному определению узла с помощью атрибута use="required" . В следующий раз, когда в экземпляре обнаружится этот узел, процесс вывода сравнит атрибуты текущего экземпляра с уже выведенными. Если в данном экземпляре отсутствуют некоторые из уже выведенных атрибутов, к определению атрибута добавляется атрибут use="optional" . Новые атрибуты добавляются к существующим декларациям с атрибутом use="optional" .

Ограничения вхождений

При выводе схемы формируются атрибуты minOccurs и maxOccurs для выведенных компонентов схемы, имеющие значения "0" или "1" и "1" или "unbounded" . Значения "1" и "unbounded" используются только в случае, когда не удается выполнить проверку XML-документа со значениями "0" и "1" (например, если MinOccurs="0" не описывает действительное состояние элемента, используется значение minOccurs="1" ).

Смешанное содержимое

Для элемента, имеющего смешанное содержимое (например, текст, перемежающийся элементами), для выводимого определения сложного типа будет создан атрибут mixed="true" .

Другие правила определения типов узлов

В следующей таблице описаны правила вывода для инструкций по обработке, комментариев, ссылок на сущности, данных типа CDATA, типа документа и узлов пространства имен.

📎📎📎📎📎📎📎📎📎📎