Вы здесь

XSD элемент extension

Элемент extension расширяет существующий элемент simpleType или complexType.

  • Родительские элементы: simpleContent, complexContent
Синтаксис

<extension
 id=идентификатор
 base=QName
 любые атрибуты
 >

 (annotation?, ((group | all | choice | sequence)?,
 ((attribute | attributeGroup)*, anyAttribute?)))

</extension>

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

Атрибуты
Атрибут Описание
id Не обязательный. Определяет уникальный идентификатор для элемента
base Обязательный. Определяет имя встроенного типа данных, элемента simpleType или элемента complexType
любые атрибуты Не обязательный. Любые другие атрибуты вне пространства имен схемы
Примеры использования элемента

Пример №1
В следующем примере расширяется существующий simpleType. Добавляется атрибут:


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

<xs:simpleType name="size">
   <xs:restriction base="xs:string">
     <xs:enumeration value="small" />
     <xs:enumeration value="medium" />
     <xs:enumeration value="large" />
   </xs:restriction>
</xs:simpleType>

<xs:complexType name="jeans">
   <xs:simpleContent>
     <xs:extension base="size">
       <xs:attribute name="sex">
         <xs:simpleType>
           <xs:restriction base="xs:string">
             <xs:enumeration value="male" />
             <xs:enumeration value="female" />
           </xs:restriction>
         </xs:simpleType>
       </xs:attribute>
     </xs:extension>
   </xs:simpleContent>
</xs:complexType>

</xs:schema>

Пример №2
В следующем примере расширяется существующий complexType тремя новыми элементами:


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

<xs:element name="employee" type="fullpersoninfo"/>

<xs:complexType name="personinfo">
   <xs:sequence>
     <xs:element name="firstname" type="xs:string"/>
     <xs:element name="lastname" type="xs:string"/>
   </xs:sequence>
</xs:complexType>

<xs:complexType name="fullpersoninfo">
   <xs:complexContent>
     <xs:extension base="personinfo">
       <xs:sequence>
         <xs:element name="address" type="xs:string"/>
         <xs:element name="city" type="xs:string"/>
         <xs:element name="country" type="xs:string"/>
       </xs:sequence>
     </xs:extension>
   </xs:complexContent>
</xs:complexType>

</xs:schema>