Так же как 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"?>
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">
указывает на местоположение файла схемы.