Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Турчин Д.Е. - Архитектура ИС. Самост. работа 20...doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.25 Mб
Скачать

Связывание документа xml с xsd-схемой.

Документ, проверяемый с помощью схемы, также должен содержать объявление пространства имен. Пространство имен всегда указывается в корневом элементе XML-документа с помощью атрибута xmlns. По общему соглашению для этого пространства имен используется префикс xsi (XML-schema instance):

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

Схему документа можно указать прямо в документе. Это делается одним из двух способов:

  • Если элементы документа не принадлежат никакому пространству имен и записаны без префикса, то в корневом элементе документа записывается атрибут noNamespaceSchemaLocation, указывающий расположение файла со схемой в форме URI:

    xsi:noNamespaceSchemaLocation="URI"

  • Если элементы документа относятся к некоторому пространству имен, то применяется атрибут schemaLocation корневого элемента. В этом атрибуте через пробел перечисляются пространство имён и расположение файла со схемой:

xsi:SchemaLocation="NameSpace URI"

Пример XML-схемы на языке XSD приведён в листинге 1.3. а XML-документ, соответствующий данной схеме, представлен в листинге 1.4.

Листинг 1.3. Код XML-схемы на языке XSD (simple.xsd)

<?xml version="1.0" encoding="UTF-8" ?>

<xs:schema

targetNamespace="http://tempuri.org/XMLSchema.xsd"

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

<xs:element name="order">

<xs:complexType>

<xs:sequence>

<xs:element name="good" minOccurs="1"

maxOccurs="unbounded">

<xs:complexType>

<xs:sequence>

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

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

<xs:element name="price">

<xs:complexType>

<xs:simpleContent>

<xs:extension base="xs:decimal">

<xs:attribute name="discount"

type="xs:int" use="optional" />

</xs:extension>

</xs:simpleContent>

</xs:complexType>

</xs:element>

</xs:sequence>

<xs:attribute name="id" type="xs:integer"

use="required" />

</xs:complexType>

</xs:element>

</xs:sequence>

</xs:complexType>

</xs:element>

</xs:schema>

Листинг 1.4. Код документа XML, соответствующего схеме из листинга 1.3

<?xml version="1.0" encoding="utf-8"?>

<order

xmlns="http://tempuri.org/XMLSchema.xsd"

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

xsi:noNamespaceSchemaLocation="H:\XSD\simple.xsd">

<good id="12503">

<name>Коробка конфет</name>

<amount>2</amount>

<price discount="15">123.50</price>

</good>

<good id="14097">

<name>Бутылка вина</name>

<amount>1</amount>

<price>210.00</price>

</good>

</order>