Определение XML элементов, содержащих только текст

Составные XML элементы типа "только текст" могут содержать только текст и атрибуты.

Этот тип элементов содержит только простой контент (текст и атрибуты), поэтому для определения контента добавляется тег simpleContent. При использовании простого контента необходимо использовать декларацию extension или restriction внутри тега simpleContent:


<xs:element name="somename">
   <xs:complexType>
      <xs:simpleContent>
         <xs:extension base="basetype">
            ...
         </xs:extension>
      </xs:simpleContent>
   </xs:complexType>
</xs:element>

ИЛИ


<xs:element name="somename">
   <xs:complexType>
      <xs:simpleContent>
         <xs:restriction base="basetype">
            ...
         </xs:restriction>
      </xs:simpleContent>
   </xs:complexType>
</xs:element>

Декларации extension/restriction используются для расширения или ограничения базового простого типа элемента.

Вот пример XML элемента "shoesize", который содержит только текст:


<shoesize country="france">35</shoesize>

Следующий пример декларирует тип при помощи тега complexType для элемента "shoesize". Контент определен, как целочисленное значение (integer), кроме этого элемент "shoesize" содержит атрибут с именем "country":


<xs:element name="shoesize">
   <xs:complexType>
      <xs:simpleContent>
         <xs:extension base="xs:integer">
            <xs:attribute name="country" type="xs:string" />
         </xs:extension>
      </xs:simpleContent>
   </xs:complexType>
</xs:element>

Также можно присвоить имя тегу complexType, а в элементе "shoesize" определить атрибут type с этим именем (при таком способе один и тот же составной тип могут использовать несколько элементов):


<xs:element name="shoesize" type="shoetype"/>
<xs:complexType name="shoetype">
   <xs:simpleContent>
      <xs:extension base="xs:integer">
         <xs:attribute name="country" type="xs:string" />
      </xs:extension>
   </xs:simpleContent>
</xs:complexType>