Правила выведения структуры и типов узлов схемы
В данном разделе описывается, как в процессе вывода схемы различные типы узлов 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, типа документа и узлов пространства имен.