XSD элемент element

Элемент element определяет элемент.

  • Родительские элементы: schema, choice, all, sequence, group

Синтаксис элемента


<element
 id=идентификатор
 name=NCName
 ref=QName
 type=QName
 substitutionGroup=QName
 default=string
 fixed=string
 form=qualified | unqualified
 maxOccurs=целоеЧисло | unbounded
 minOccurs=целоеЧисло
 nillable=true|false
 abstract=true|false
 block=(#all | список (extension|restriction))
 final=(#all | список (extension|restriction))
 любые атрибуты
 >

 annotation?, (simpleType | complexType)?, (unique | key | keyref)*

</element>

(Знак ? указывает на то, что элемент может появляться ноль или один раз, знак * указывает на то, что элемент может появляться ноль, один или больше раз внутри элемента element.)

Атрибуты элемента

АтрибутОписание
idНе обязательный. Определяет уникальный идентификатор для элемента
nameНе обязательный. Определяет имя элемента. Этот атрибут требуется, если родительским элементом является элемент schema
refНе обязательный. Ссылается на имя другого элемента. Атрибут ref может включать префикс пространства имен. Этот атрибут нельзя использовать, если родительским элементом является элемент schema
typeНе обязательный. Определяет либо имя встроенного типа данных, либо имя элемента simpleType или complexType
substitutionGroupНе обязательный. Определяет имя элемента, который может быть замещен этим элементом. Этот атрибут нельзя использовать, если родительским элементом является не элемент schema
defaultНе обязательный. Определяет значение элемента по умолчанию (может использоваться только если содержимое элемента простого типа или текст)
fixedНе обязательный. Определяет фиксированное значение элемента (может использоваться только если содержимое элемента простого типа или текст)
formНе обязательный. Определяет форму элемента. Значение "qualified" указывает на то, что этот элемент должен уточняться префиксом пространства имен. Значение "unqualified" указывает на то, что этот элемент не требует уточнения префиксом пространства имен. Значением по умолчанию является значение атрибута elementFormDefault атрибута элемента schema. Этот атрибут нельзя использовать, если родительским элементом является элемент schema
maxOccursНе обязательный. Определяет, сколько раз максимально может появляться элемент в родительском элементе. Значением может быть любое целое число >= 0, если же нужно снять лимит на использование, то следует указать ключевое слово "unbounded". Значение по умолчанию 1. Этот атрибут нельзя использовать, если родительским элементом является элемент schema
minOccursНе обязательный. Определяет, сколько раз минимально может появляться элемент в родительском элементе. Значением может быть любое целое число >= 0. Значение по умолчанию 1. Этот атрибут нельзя использовать, если родительским элементом является элемент schema
nillableНе обязательный. Определяет, можно ли элементу присваивать явное нулевое значение nil. Значение true позволяет элементу устанавливать атрибут nil в значение true. Атрибут nil определен как часть пространства имен XML схемы. Значение по умолчанию false
abstractНе обязательный. Определяет, можно ли использовать этот элемент в документе. Значение true определяет, что элемент не может использоваться в документе. Вместо этого, на месте данного элемента должен появляться другой элемент, атрибут substitutionGroup которого содержит имя с префиксом (QName) этого элемента. Значение по умолчанию false
block

Не обязательный. Препятствует использованию элемента, который имеет заданный тип наследования, вместо данного элемента. Может принимать значение #all или список из расширений/ограничений/замещений:

  • extension — запрещает использование элементов, производных при помощи расширения
  • restriction — запрещает использование элементов, производных при помощи ограничения
  • substitution — запрещает использование замещенных элементов
  • #all — запрещает использование элементов, производных при помощи всех методов наследования
final

Не обязательный. Запрещает указанный метод наследования элемента. Может принимать значение #all или список из расширений/ограничений:

  • extension — запрещает наследование элемента при помощи расширения
  • restriction — запрещает наследование элемента при помощи ограничения
  • #all — запрещает все методы наследования
любые атрибутыНе обязательный. Любые другие атрибуты вне пространства имен схемы

Пример использования

Пример №1
В следующем примере декларируется XML схема с четырьмя простыми элементами "fname", "lname", "age" и "dateborn":


<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="fname" type="xs:string"/>
<xs:element name="lname" type="xs:string"/>
<xs:element name="age" type="xs:nonNegativeInteger"/>
<xs:element name="dateborn" type="xs:date"/>

</xs:schema>

Пример №2
В следующем примере декларируется XML схема с элементом "note" сложного типа. Элемент "note" содержит четыре простых элемента - "to", "from", "heading" и "body":


<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="note">
   <xs:complexType>
     <xs:sequence>
       <xs:element name="to" type="xs:string"/>
       <xs:element name="from" type="xs:string"/>
       <xs:element name="heading" type="xs:string"/>
       <xs:element name="body" type="xs:string"/>
     </xs:sequence>
   </xs:complexType>
</xs:element>

</xs:schema>

Пример №3
Следующий пример аналогичен примеру №2. Разница лишь в том, что для ссылки на имена элементов используется атрибут ref:


<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="note">
   <xs:complexType>
     <xs:sequence>
       <xs:element ref="to"/>
       <xs:element ref="from"/>
       <xs:element ref="heading"/>
       <xs:element ref="body"/>
     </xs:sequence>
   </xs:complexType>
</xs:element>

<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>

</xs:schema>