XML Schema

Так же как DTD схема XML Schema определяет допустимые строительные блоки XML документа.

XML Schema:

  • элементы, входящие в документ
  • атрибуты, допустимые в документе
  • дочерние элементы
  • порядок дочерних элементов
  • количество дочерних элементов
  • может ли элемент быть пустым или может содержать текст
  • типы элементов и атрибутов
  • фиксированные и значения по умолчанию элементов и атрибутов

Предполагается, что в перспективе DTD схемы будут замещены XML Schema в большинстве веб-приложений поскольку XML Schema:

  • Расширяема для будущих добавлений.
  • Более богатые и мощные выразительные возможности.
  • Является реализацией XML.
  • Поддерживает типы данных.
  • Поддерживают пространства имен.

XML Schema стала W3C рекомендацией в 2001 году.

Рассмотрим в качестве примера XML документ:

<?xml version="1.0" encoding="Windows-1251"?>

<mail>

<to>user1@domain.ru</to>

<from>user2@domain.ru </from>

<subject>Встреча</heading>

<body>Позвони мне завтра утром</body>

</mail>

Структура данного документа может быть рассмотрена с помощью следующей XML Schema:

<?xml version="1.0"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"

targetNamespace="http://www.myhp.edu"

xmlns=" http://www.myhp.edu"

elementFormDefault="qualified">

<xs:element name="mail">

<xs:complexType>

<xs:sequence>

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

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

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

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

</xs:sequence>

</xs:complexType>

</xs:element>

</xs:schema>

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

Ссылка на схему в XML документе выглядит следующим образом:

<?xml version="1.0"?>

<mail

xmlns="http:// www.myhp.edu "

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.myhp.edu mail.xsd">

<to>user1@domain.ru</to>

<from>user2@domain.ru </from>

<subject>Встреча</heading>

<body>Позвони мне завтра утром</body>

</mail>

Элемент <schema> является корневым элементом любой схемы XML Schema.

Данный элемент может содержать несколько атрибутов, например:

<?xml version="1.0"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"

targetNamespace="http://www.myhp.edu"

xmlns="http://www.myhp.edu"

elementFormDefault="qualified">

...

...

</xs:schema>

Следующий фрагмент:

xmlns:xs="http://www.w3.org/2001/XMLSchema"

указывает на то, что элементы и типы данных, используемые в схеме входят в пространство http://www.w3.org/2001/XMLSchema. Причем, все элементы и типы данных из этого пространства имен должны иметь префикс xs.

Фрагмент:

targetNamespace="http://www.myhp.edu"

указывает на то, что элементы, определяемые в схеме входят в пространство "http://www.myhp.edu".

Во фрагменте:

xmlns="http://www.myhp.edu"

указывается, что пространством имен по умолчанию является "http://www.myhp.edu"

Следующий фрагмент:

elementFormDefault="qualified"

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

Ссылка на внешнюю схему может выглядеть следующим образом:

<?xml version="1.0"?>

<mail xmlns=" http://www.myhp.edu "

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation=" http://www.myhp.edu mail.xsd">

<to>user1@domain.ru</to>

<from>user2@domain.ru </from>

<subject>Встреча</heading>

<body>Позвони мне завтра утром</body>

</mail>

Здесь строка

xsi:schemaLocation=" http://www.myhp.edu mail.xsd">

указывает на местоположение файла схемы.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: