Схема 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, как показано ниже —