Элемент XML Schema
Определение и использование
Элемент element определяет элемент.
Информация о элементе
Число出现的 | Количество элементов, определенных в схеме. |
Родительский элемент | schema, choice, all, sequence |
Содержимое | simpleType, complexType, key, keyref, unique |
Грамматика
<element id=ID name=NCName ref=QName type=QName substitutionGroup=QName default=string fixed=string form=qualified|unqualified maxOccurs=nonNegativeInteger|unbounded minOccurs=nonNegativeInteger nillable=true|false abstract=true|false block=(#all|список (extension|restriction)) final=(#all|список (extension|restriction)) любые атрибуты > annotation?,((simpleType|complexType)?,(unique|key|keyref)*)) </element>
(? Символ указывает на элемент element, который может出现的次数: 0 или 1, * Символ указывает на элемент, который может出现的次数: 0 или более.).
Атрибут
id
Выборочно. Определяет уникальный идентификатор для элемента.
name
Выборочно. Определяет имя элемента. Если родительский элемент является элементом schema, то этот атрибут является обязательным.
ref
Выборочно. Ссылка на другой элемент. Атрибут ref может содержать префикс имени пространства имен. Если родительский элемент является элементом schema, то этот атрибут не используется.
type
Выборочно. Определяет имя встроенного типа данных или имя элементов simpleType или complexType.
substitutionGroup
Выборочно. Определяет имя элемента, который может заменить текущий элемент. Этот элемент должен иметь такой же тип или быть типом, произошедшим от указанного элемента.
Этот атрибут недоступен, если родительский элемент не является элементом schema.
default
Выборочно. Устанавливает значение по умолчанию для элемента (используется только тогда, когда содержимое элемента является простым типом или textOnly).
fixed
Выборочно. Устанавливает фиксированное значение для элемента (используется только тогда, когда содержимое элемента является простым типом или textOnly).
form
допустимо. Форма элемента. Значением по умолчанию является значение атрибута elementFormDefault элемента схемы, содержащего этот атрибут. Значением может быть одна из следующих строк: "qualified" или "unqualified".
Если родительский элемент является элементом schema, то этот атрибут не может быть использован.
- Если это значение равно "unqualified", то элемент не должен быть ограничен префиксом пространства имен.
- Если это значение равно "qualified", то элемент должен быть ограничен префиксом пространства имен.
maxOccurs
допустимо. Определяет максимальное количество出现的 element в родительском элементе. Значением может быть целое число, большее или равное нулю. Если не хотите устанавливать ограничение на максимальное количество, используйте строку "unbounded". Значением по умолчанию является 1.
Если родительский элемент является элементом schema, то этот атрибут не может быть использован.
minOccurs
допустимо. Определяет минимальное количество出现的 element в родительском элементе. Значением может быть целое число, большее или равное нулю. Значением по умолчанию является 1.
Если родительский элемент является элементом schema, то этот атрибут не может быть использован.
nillable
допустимо. Указывает, можно ли присвоить явное нулевое значение этому элементу. Это правило применяется к содержимому элемента и не относится к свойствам элемента. Значением по умолчанию является false.
Если nillable равно true, экземпляр этого элемента может установить атрибут nil в true. Атрибут nil определен как часть XML схемы, представляющей пространство имен экземпляра.
Например, следующий раздел определяет один элемент и устанавливает nillable в true.
<xs:element name="myDate" type="xs:date" nillable="true"/>
Следующий раздел использует этот элемент и имеет явное нулевое значение (атрибут nil установлен в true).
<myDate xsi:nil="true"></myDate>
abstract
допустимо. Указывает, может ли элемент использоваться в документе экземпляра. Если значение равно true, элемент не может出现在 документе экземпляра. Напротив, элементы substitutionGroup, содержащие ограниченное имя (QName) этого элемента, должны出现在 его месте. Множественные элементы могут ссылаться на этот элемент в атрибуте substitutionGroup. Значением по умолчанию является false.
block
допустимо. Деривированный тип. Атрибут block предотвращает использование элементов с указанным типом расширения для замены исходного элемента. Значение может содержать #all или список, являющийся подмножеством extension, restriction или substitution:
- преимущественно - предотвращает использование элементов, полученных через расширение, для замены исходного элемента.
- restriction - предотвращает использование производных элементов через ограничения для замены этого элемента.
- substitution - предотвращает использование производных элементов для замены этого элемента.
- #all - предотвращает использование всех производных элементов для замены этого элемента.
final
Опционально. Устанавливает значение по умолчанию для атрибута final элемента. Если родительский элемент не является элементом schema, то этот атрибут не может быть использован. Значение может содержать #all или список, который является подмножеством extension или restriction:
- extension - предотвращает использование производных элементов через расширение для замены этого элемента
- restriction - предотвращает использование производных элементов через ограничения для замены этого элемента
- #all - предотвращает использование всех производных элементов для замены этого элемента
любые атрибуты
Опционально. Определяет любые другие атрибуты с non-schema именем пространства.
Пример
Пример 1
Следующий пример является схемой, которая содержит четыре простых элемента: "fname", "lname", "age" и "dateborn", типы которых являются string, nonNegativeInteger и date:
<?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
Следующий пример является схемой, которая содержит элемент сложного типа "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>