Главная » Java, Web, XML » Пространства имен языка XSD

0

Имена элементов и атрибутов, используемые при записи схем, определены в пространстве имен с идентификатором

XMLSchema. Префикс имен, относящихся к этому пространству, часто называют хs или xsd, как в листингах 1.4 и 1.5. Каждый анализатор "знает" это пространство имен и "понимает" имена из этого пространства.

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

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

После такого определения имена, определяемые в этой схеме, будут относиться к новому пространству имен с идентификатором http://some.firm.com/ 2003/ntbNames. В листинге 1.6 вводится целевое пространство имен, а для упрощения записи листинга 1.5 стандартное пространство имен схемы XML с идентификатором                                                      сделано пространством

имен по умолчанию. Имена, относящиеся к целевому пространству, снабжены префиксом ntb, чтобы они не попали в пространство имен по умолчанию.

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

<?xml version=’1.0’?>

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

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

<element name=’ntb:notebook’>

<complexType> <sequence>

<element name=’person’ maxOccurs=’unbounded1>

<complexType> <sequence>

<element name=’name’>

<complexType>

<attribute name=’first’

type=’string’ use=’optional’ />

<attribute

type=’string’ use=’optional’ />

<attribute name=’surname’

type=’string’ use=’required’ />

</complexType> </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’ />

/>

</sequence> </complexType» </element>

<element name=’phone-list’» <complexType>

<sequence>

<element name=’work-phone’ type=’string’ minOccurs=’ 0′ raaxOccurs= ‘ unbounded’ />

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

</sequence> </coraplexType> </element>

</sequence> </complexType> </element>

</sequence> </complexType>

</element>

</schema>

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

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

В схемах и документах XML часто применяется еще одно стандартное пространство имен. Рекомендация языка XSD определяет несколько атрибутов: type, nil, schemaLocation, noNamespaceSchemaLocation, которые применяются не только в схемах, а и непосредственно в описываемых этими схемами документах XML, называемых экземплярами схем (XML schema instance). Имена этих атрибутов относятся к пространству имен

Этому пространству имен чаще всего приписывают префикс xsi, например:

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

Литература:

Хабибуллин И. Ш. Разработка Web-служб средствами Java. — СПб.: БХВ-Петербург, 2003. — 400 с: ил.

По теме:

  • Комментарии