Latest web development tutorials

экземпляр XML-схемы

Этот раздел покажет вам, как писать XML-схемы. Вы также узнаете различные способы, чтобы записать схему.


XML-документы

Давайте посмотрим на это, под названием "shiporder.xml" XML-документ:

<?xml version="1.0" encoding="ISO-8859-1"?>

<shiporder orderid="889923"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="shiporder.xsd">
<orderperson>John Smith</orderperson>
<shipto>
<name>Ola Nordmann</name>
<address>Langgt 23</address>
<city>4000 Stavanger</city>
<country>Norway</country>
</shipto>
<item>
<title>Empire Burlesque</title>
<note>Special Edition</note>
<quantity>1</quantity>
<price>10.90</price>
</item>
<item>
<title>Hide your heart</title>
<quantity>1</quantity>
<price>9.90</price>
</item>
</shiporder>

Выше XML-документ корневой элемент "shiporder", который содержит атрибут должен быть назван "OrderID" из. Элемент "Shiporder" содержит три различных дочерних элемента: "orderperson", "shipto" и "пункт". Элемент "Item" появляется дважды, и он содержит "заголовок", необязательный элемент "примечание", а "количество" и элементов "цена".

В строке выше XMLNS: XSI = "http://www.w3.org/2001/XMLSchema-instance", рассказал схему на основе XML-парсер для проверки этого документа. Линия: XSI: noNamespaceSchemaLocation = "shiporder.xsd" Схема определяет положение (в данном случае это "shiporder.xml" в той же папке).


Создание XML-схемы

Теперь нам нужно создать схему для документа XML выше.

Мы можем начать с открытия нового файла и этот файл называется "shiporder.xsd". Чтобы создать схему, нам просто нужно просто следовать структуре XML-документа, каждый элемент определения того, что мы нашли. Во-первых, мы начинаем определять стандартное объявление XML:

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

В приведенной выше схеме, мы используем стандартное пространство имен (XS), URI пространства, связанный с этим именем является определение языка Схема (определение языка схемы), его стандартное значение http://www.w3.org/ 2001 / XMLSchema.

Далее, нам необходимо определить элемент "shiporder". Этот элемент имеет свойство, которое содержит другие элементы, поэтому мы определили его как сложный тип. Элемент Суб-элемент "shiporder" является хз: последовательность элементов в окружении определяет порядок подэлементов:

<xs:element name="shiporder">
<xs:complexType>
<xs:sequence>
...
</xs:sequence>
</xs:complexType>
</xs:element>

Затем нам нужно элемент "orderperson" определяется как простой тип (так как она не содержит каких-либо атрибутов или других элементов). Тип (хз: строка) начинается с префикса пространства имен положений этого пространства имен и инструкции предопределенного схемы типов данных XML-схемы, связанные с:

<xs:element name="orderperson" type="xs:string"/>

Далее, мне нужны два элемента, определенные как сложного типа: "shipto" и "пункта". Мы начнем с определения начинается элемент "shipto":

<xs:element name="shipto">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="country" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>

По схеме, мы можем определить, сколько раз элемент может происходить с помощью MaxOccurs и атрибутов MinOccurs. MaxOccurs определить максимальное количество элементов появляются, и MinOccurs определяет минимальное число вхождений элемента. По умолчанию MaxOccurs и MinOccurs 1!

Теперь мы можем определить элемент "элемента". Этот элемент может появляться несколько раз внутри элемента "shiporder". Это делается с помощью "Элемент" элемента MaxOccurs значение атрибута установлено значение "неограниченная" добиться, так что элемент "элемент" может быть создателем появляется столько раз, сколько это необходимо. Обратите внимание, что "примечание" элемент не является обязательным. У нас есть атрибут MinOccurs этого элемента устанавливается равным 0 на:

<xs:element name="item" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="note" type="xs:string" minOccurs="0"/>
<xs:element name="quantity" type="xs:positiveInteger"/>
<xs:element name="price" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
</xs:element>

Теперь мы можем объявить "shiporder" атрибут элемента. Поскольку это является обязательным атрибутом, мы указываем использование = "требуется".

Примечание: Это свойство должно быть объявлено на последнем:

<xs:attribute name="orderid" type="xs:string" use="required"/>

Это список документов, который называется "shiporder.xsd" файл схемы:

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

<xs:element name="shiporder">
<xs:complexType>
<xs:sequence>
<xs:element name="orderperson" type="xs:string"/>
<xs:element name="shipto">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="country" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="item" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="note" type="xs:string" minOccurs="0"/>
<xs:element name="quantity" type="xs:positiveInteger"/>
<xs:element name="price" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="orderid" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>

</xs:schema>


Сплит-схемы

В передней части метода проектирования очень легко, но это трудно читать и поддерживать документы являются сложными Shique.

Далее, на основе метода проектирования, описанного в первом определении всех элементов и атрибутов, а затем использовать атрибут ссылок ссылаться на них.

Этот новый подход разработан файл схемы ( "shiporder.xsd"):

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

<!-- definition of simple elements -->
<xs:element name="orderperson" type="xs:string"/>
<xs:element name="name" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="country" type="xs:string"/>
<xs:element name="title" type="xs:string"/>
<xs:element name="note" type="xs:string"/>
<xs:element name="quantity" type="xs:positiveInteger"/>
<xs:element name="price" type="xs:decimal"/>

<!-- definition of attributes -->
<xs:attribute name="orderid" type="xs:string"/>

<!-- definition of complex elements -->
<xs:element name="shipto">
<xs:complexType>
<xs:sequence>
<xs:element ref="name"/>
<xs:element ref="address"/>
<xs:element ref="city"/>
<xs:element ref="country"/>
</xs:sequence>
</xs:complexType>
</xs:element>

<xs:element name="item">
<xs:complexType>
<xs:sequence>
<xs:element ref="title"/>
<xs:element ref="note" minOccurs="0"/>
<xs:element ref="quantity"/>
<xs:element ref="price"/>
</xs:sequence>
</xs:complexType>
</xs:element>

<xs:element name="shiporder">
<xs:complexType>
<xs:sequence>
<xs:element ref="orderperson"/>
<xs:element ref="shipto"/>
<xs:element ref="item" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="orderid" use="required"/>
</xs:complexType>
</xs:element>

</xs:schema>


Использование указанного типа (Названный типы)

Метод третий дизайн определяет класс или тип, так что мы имеем возможность определять повторно используемые элементы. Конкретные подход: первый элемент простого и сложного названия элементов, а затем введите атрибут элемента, чтобы указать на них

Этот третий метод является использование файла проектирования схемы ( "shiporder.xsd"):

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

<xs:simpleType name="stringtype">
<xs:restriction base="xs:string"/>
</xs:simpleType>

<xs:simpleType name="inttype">
<xs:restriction base="xs:positiveInteger"/>
</xs:simpleType>

<xs:simpleType name="dectype">
<xs:restriction base="xs:decimal"/>
</xs:simpleType>

<xs:simpleType name="orderidtype">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{6}"/>
</xs:restriction>
</xs:simpleType>

<xs:complexType name="shiptotype">
<xs:sequence>
<xs:element name="name" type="stringtype"/>
<xs:element name="address" type="stringtype"/>
<xs:element name="city" type="stringtype"/>
<xs:element name="country" type="stringtype"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="itemtype">
<xs:sequence>
<xs:element name="title" type="stringtype"/>
<xs:element name="note" type="stringtype" minOccurs="0"/>
<xs:element name="quantity" type="inttype"/>
<xs:element name="price" type="dectype"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="shipordertype">
<xs:sequence>
<xs:element name="orderperson" type="stringtype"/>
<xs:element name="shipto" type="shiptotype"/>
<xs:element name="item" maxOccurs="unbounded" type="itemtype"/>
</xs:sequence>
<xs:attribute name="orderid" type="orderidtype" use="required"/>
</xs:complexType>

<xs:element name="shiporder" type="shipordertype"/>

</xs:schema>

ограничение элемент, показывающий тип данных, полученных из пространства имен типов данных W3C XML-схемы. Таким образом, следующий фрагмент означает, что значение значения элемента или атрибута должен быть типом строки:

<xs:restriction base="xs:string">

Элемент ограничение часто используется для введения ограничений на элементы. Рассмотрим следующий фрагмент из приведенной выше схемы:

<xs:simpleType name="orderidtype">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{6}"/>
</xs:restriction>
</xs:simpleType>

Этот код указывает на то, что значение элемента или атрибута должно быть строкой, и должны быть последовательными шесть символов, а эти символы должны быть 0-9.