элемент 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|список (расширение|ограничение))
final=(#all|список (расширение|ограничение))
любые атрибуты
>
annotation?,((simpleType|complexType)?,(unique|key|keyref)*))
</element>

(? Знак вопроса означает, что элемент может出现 нулевой или один раз, * знак означает, что элемент может出现 нулевой или несколько раз.).

Атрибуты

id

Выборочно. Определяет уникальный ID элемента.

name

Выборочно. Определяет имя элемента. Если родительский элемент является элементом schema, то этот атрибут является обязательным.

ref

Выборочно. Ссылка на другой элемент. Атрибут ref может содержать префикс имени пространства имен. Если родительский элемент является элементом schema, то этот атрибут не используется.

type

Выборочно. Определяет имя встроенного типа данных или имя элементов simpleType или complexType.

substitutionGroup

Выборочно. Определяет имя элемента, который может заменить этот элемент. Этот элемент должен иметь такой же тип или быть派яным от указанного типа элемента.

Если родительский элемент не является элементом schema, то этот атрибут не может быть использован.

default

Выборочно. Устанавливает значение по умолчанию элемента (используется только когда содержимое элемента является простым типом или textOnly).

fixed

Выборочно. Устанавливает фиксированное значение элемента (используется только когда содержимое элемента является простым типом или textOnly).

form

Выборочно. Форма элемента. Значением по умолчанию является значение атрибута elementFormDefault элемента schema, содержащего этот атрибут. Значением может быть одна из следующих строк: "qualified" или "unqualified".

Если родительский элемент является элементом schema, то использовать этот атрибут нельзя.

  • Если это значение равно "unqualified", то элемент не ограничивается префиксом имени пространства имен.
  • Если это значение равно "qualified", то элемент должен быть ограничен префиксом имени пространства имен.

maxOccurs

Выборочно. Определяет максимальное количество的出现次数 element элемента в родительском элементе. Значение может быть любым целым числом, равным или большим нуля. Если не хотите устанавливать никаких ограничений на максимальное количество, используйте строку "unbounded". По умолчанию значение равно 1.

Если родительский элемент является элементом schema, то использовать этот атрибут нельзя.

minOccurs

Выборочно. Определяет минимальное количество раз, которое элемент может появляться в родительском элементе. Значение может быть целым числом, не менее нуля. Значение по умолчанию 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, то элемент не может出现在 документе实例. Напротив, элементы с ограниченным именем (QName) substitutionGroup, содержащим это имя, должны出现在 этом месте. Множественные элементы могут ссылаться на этот элемент в атрибуте substitutionGroup. Значение по умолчанию false.

block

Выборочно. Производный тип. Атрибут block предотвращает использование элементов с указанным производным типом для замены данного элемента. Значение может содержать #all или список, который является подмножеством расширений, ограничений или замен.

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

final

Выборочно. Установите значение по умолчанию для атрибута final элемента element. Если родительский элемент не является элементом schema, то использовать этот атрибут нельзя. Значение может содержать #all или список, который является подмножеством расширений или ограничений:

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