Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 14.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
102.29 Кб
Скачать

Пространства имен языка xsd

Имена элементов и атрибутов, используемые при записи схем. определены в пространстве имен с идентификатором http://www.w3.org/2001/XMLSchema. Префикс имен, относящихся к этому пространству, часто называют xs или xsd, как в листингах 14.3 и 14.4. Каждый анализатор, читающий документ XML, "знает" это пространство имен и "понимает" имена из этого пространства.

Можно сделать это пространство имен пространством по умолчанию, но тогда надо определить пространство имен для определяемых в схеме типов и элементов. Для удобства такого определения введено понятие целевого пространства имен (target namespace). Идентификатор целевого пространства имен определяется атрибутом targetNamespace, например

<xsd:schema targetNamespace="http: //some. firm.com/2003/ntbNames">

После такого определения имена, определяемые в этой схеме, будут относиться к новому пространству имен с идентификатором http://some.firm.com/ 2003/ntbNames. В листинге 14.5 вводится целевое пространство имен, а для упрощения записи листинга 14.4 стандартное пространство имен схемы XML с идентификатором http://www.w3.org/2001 /XМLSchema сделано пространством имен по умолчанию. Имена, относящиеся к целевому пространству, снабжены префиксом ntb, чтобы они не попали в пространство имен по умолчанию.

Листинг 14.5. Схема документа xml с целевым пространством имен

<?xml version=”1.0” ?>

< schema xmlns=“http://www.w3.org/2001 /XMLSchema”

targetNamespace=http://some.firm.ccm/2003/ntbNames xmlns:ntb='http://some.firm.com/2003/ntbNames’”>

<element name=”ntb:notebook”>

<complexType>

<sequence>

<element name=”person” maxOccurs=”unbounded”>

<complexType>

<sequence>

<element name=”name” >

<complexType>

<attribute name=”first”

type=”string” use=”optional” />

<attribute name=”second”

type=”string” use=”optional” />

attribute name=”surname”

type=”string” use=”required" />

</сomplexType>

</element>

<element name=”birthday” >

<simpleType>

<restriction base=”string” >

<pattern value=”[0-9] {2}. [0-9] {2}. [0-9] {4}” />

</restriction>

</simpleType>

</element>

<element name=”address” maxOccurs=”unbounded”>

<complexType>

< sequence>

<element name=”street” type=”string” />

<element name=”city” type=”string” />

<element name=”zip” type=”positiveInteger”/>

</sequence>

</complexType>

</element>

<element name=”phone-list”>

<complexType>

<sequence>

<element name=”work-phone” type=”string” minOccurs=”0” maxQccurs=”unbounded” />

<element name=”home-phone” type=”string minOccurs=”0” maxOccurs=”unbounded”/>

</sequence>

</ complexType>

</element>

</sequence>

</соmplexType>

</element>

</sequence>

</complexType>

</element>

</schema>

Поскольку в листинге 14.5 пространством имен по умолчанию сделано пространство http://www.w3.org/200l/XMLSchema, префикс xsd не нужен.

Следует заметить, что в целевое пространство имен попадают только глобальные имена, чьи описания непосредственно вложены в элемент <schema>. Это естественно, потому что только глобальными именами можно воспользоваться далее в этой или другой схеме. В листинге 14.5 только одно глобальное имя <notebook>. Вложенные имена name, address и другие только ассоциированы с глобальными именами.

В схемах и документах XML часто применяется еще одно стандартное пространство имен. Рекомендация языка XSD определяет несколько атри­бутов: type, nil, schema Location, noNamespaceSchemaLocation, которые применяются не только в схемах, а и непосредственно в описываемых этими схемами документах XML, называемых экземплярами схем (XML schema instance). Имена этих атрибутов относятся к пространству имен http://www.w3.org/2001/XMLSchema-instance. Этому пространству имен чаще всего приписывают префикс xsi, например:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema” xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">