Последние учебники веб-разработки
×

XML Руководство

XML ГЛАВНАЯ XML Введение XML Как использовать XML дерево XML Синтаксис XML элементы XML Атрибуты XML Пространства имен XML дисплей XML XSLT XML XPath XML XLink XML Оценщик XML DTD XML схема XML сервер XML Приложения XML Примеры XML викторина XML сертификат

XML DOM

DOM вступление DOM Вершины DOM XMLHttpRequest DOM Доступ к DOM Узел информация DOM Список узлов DOM Пересекая DOM навигационный DOM Получить значения DOM Change Вершины DOM Remove Вершины DOM Replace Вершины DOM Create Вершины DOM Add Вершины DOM Clone Вершины DOM Примеры

DOM Справка

DOM Типы узлов DOM Узел DOM NodeList DOM NamedNodeMap DOM Документ DOM Элемент DOM Атрибут DOM Текст DOM CDATA DOM Комментарий DOM XMLHttpRequest DOM синтаксический анализатор

XML DTD

DTD вступление DTD Строительные блоки DTD элементы DTD Атрибуты DTD Элементы против Attr DTD юридические лица DTD Примеры

XSD Schema

XSD вступление XSD Как XSD <schema> XSD элементы XSD Атрибуты XSD ограничения

XSD Сложный

XSD элементы XSD пустой XSD Элементы только XSD Только текст XSD смешанный XSD индикаторы XSD <any> XSD <anyAttribute> XSD подмена XSD пример

XSD Data

XSD строка XSD Дата XSD числовой XSD Разное XSD Справка

Web Сервисы

XML Сервисы XML WSDL XML SOAP XML RDF XML RSS

 

XSD Элемент Замена


С помощью XML-схемы, один элемент может заменить другой элемент.


Элемент Замена

Давайте предположим, что у нас есть пользователи из двух разных стран: Англии и Норвегии. Мы хотели бы возможность позволить пользователю выбрать, будет ли он или она хотела бы использовать норвежские имена элементов или имена английских элементов в документе XML.

Чтобы решить эту проблему, мы могли бы определить substitutionGroup в схеме XML. Во-первых, мы объявляем элемент головки, а затем мы объявляем другие элементы которые утверждают, что они являются взаимозаменяемыми для элемента головки.

<xs:element name="name" type="xs:string"/>
<xs:element name="navn" substitutionGroup="name"/>

В приведенном выше примере, "name" элемент является головной элемент и "navn" элемент взаимозаменяемы для "name" .

Посмотрите на этот фрагмент схемы XML с:

<xs:element name="name" type="xs:string"/>
<xs:element name="navn" substitutionGroup="name"/>

<xs:complexType name="custinfo">
  <xs:sequence>
    <xs:element ref="name"/>
  </xs:sequence>
</xs:complexType>

<xs:element name="customer" type="custinfo"/>
<xs:element name="kunde" substitutionGroup="customer"/>

Действительный документ XML (according to the schema above) в (according to the schema above) может выглядеть следующим образом :

<customer>
  <name>John Smith</name>
</customer>

или как это:

<kunde>
  <navn>John Smith</navn>
</kunde>

Блокирующий элемент Замена

Для того, чтобы предотвратить другие элементы из подстановки с указанным элементом, используйте block атрибута:

<xs:element name="name" type="xs:string" block="substitution"/>

Посмотрите на этот фрагмент схемы XML с:

<xs:element name="name" type="xs:string" block="substitution"/>
<xs:element name="navn" substitutionGroup="name"/>

<xs:complexType name="custinfo">
  <xs:sequence>
    <xs:element ref="name"/>
  </xs:sequence>
</xs:complexType>

<xs:element name="customer" type="custinfo" block="substitution"/>
<xs:element name="kunde" substitutionGroup="customer"/>

Действительный документ XML (according to the schema above) в (according to the schema above) выглядит следующим образом :

<customer>
  <name>John Smith</name>
</customer>

НО ЭТО НЕ ДОЛЬШЕ ДЕЙСТВИТЕЛЕН:

<kunde>
  <navn>John Smith</navn>
</kunde>

Использование substitutionGroup

Тип замещаемых элементов должны быть такими же, как, или полученный из, типа головного элемента. Если тип замещаемого элемента является такой же, как от типа головного элемента вы не должны указывать тип замещаемых элемента.

Обратите внимание, что все элементы в substitutionGroup (головной элемент и замещаемые элементы) должны быть объявлены как глобальные элементы, в противном случае она не будет работать!


Какие глобальные элементы?

Глобальные элементы являются элементами , которые являются непосредственными потомками "schema" элемент! Локальные элементы представляют собой элементы, вложенные в другие элементы.