Элемент 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>