Учебники

XML — схемы

Схема XML широко известна как определение схемы XML (XSD) . Он используется для описания и проверки структуры и содержания данных XML. Схема XML определяет элементы, атрибуты и типы данных. Элемент схемы поддерживает пространства имен. Это похоже на схему базы данных, которая описывает данные в базе данных.

Синтаксис

Вам необходимо объявить схему в своем XML-документе следующим образом:

пример

В следующем примере показано, как использовать схему —

<?xml version = "1.0" encoding = "UTF-8"?>
<xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema">
   <xs:element name = "contact">
      <xs:complexType>
         <xs:sequence>
            <xs:element name = "name" type = "xs:string" />
            <xs:element name = "company" type = "xs:string" />
            <xs:element name = "phone" type = "xs:int" />
         </xs:sequence>
      </xs:complexType>
   </xs:element>
</xs:schema>

Основная идея XML-схем заключается в том, что они описывают допустимый формат, который может принимать XML-документ.

элементы

Как мы видели в главе « Элементы XML» , элементы являются строительными блоками документа XML. Элемент может быть определен в XSD следующим образом:

<xs:element name = "x" type = "y"/>

Типы определения

Вы можете определить элементы схемы XML следующими способами:

Простой тип

Элемент простого типа используется только в контексте текста. Некоторые из предопределенных простых типов: xs: целое число, xs: логическое значение, xs: строка, xs: дата. Например —

<xs:element name = "phone_number" type = "xs:int" />

Комплексный тип

Сложный тип — это контейнер для других определений элементов. Это позволяет вам указать, какие дочерние элементы может содержать элемент, и предоставить некоторую структуру в ваших XML-документах. Например —

<xs:element name = "Address">
   <xs:complexType>
      <xs:sequence>
         <xs:element name = "name" type = "xs:string" />
         <xs:element name = "company" type = "xs:string" />
         <xs:element name = "phone" type = "xs:int" /> 
      </xs:sequence> 
   </xs:complexType>
</xs:element> 

В приведенном выше примере элемент Address состоит из дочерних элементов. Это контейнер для других определений <xs: element> , который позволяет построить простую иерархию элементов в XML-документе.

Глобальные типы

С глобальным типом вы можете определить один тип в вашем документе, который может использоваться всеми другими ссылками. Например, предположим, что вы хотите обобщить человека и компанию для разных адресов компании. В таком случае вы можете определить общий тип следующим образом:

<xs:element name = "AddressType">
   <xs:complexType>
      <xs:sequence>
         <xs:element name = "name" type = "xs:string" />
         <xs:element name = "company" type = "xs:string" />
      </xs:sequence> 
   </xs:complexType>
</xs:element> 

Теперь давайте используем этот тип в нашем примере следующим образом:

<xs:element name = "Address1">
   <xs:complexType>
      <xs:sequence>
         <xs:element name = "address" type = "AddressType" />
         <xs:element name = "phone1" type = "xs:int" /> 
      </xs:sequence> 
   </xs:complexType>
</xs:element> 

<xs:element name = "Address2">
   <xs:complexType>
      <xs:sequence>
         <xs:element name = "address" type = "AddressType" />
         <xs:element name = "phone2" type = "xs:int" /> 
      </xs:sequence> 
   </xs:complexType>
</xs:element> 

Вместо того, чтобы определять имя и компанию дважды (один раз для Address1 и один раз для Address2 ), теперь у нас есть одно определение. Это упрощает обслуживание, т. Е. Если вы решили добавить элементы «Почтовый индекс» к адресу, вам нужно добавить их только в одном месте.

Атрибуты

Атрибуты в XSD предоставляют дополнительную информацию внутри элемента. Атрибуты имеют свойство name и type, как показано ниже —