
- •Лабораторная работа № 14 Язык xml (extensible Markup Language, расширяемый язык разметки)
- •Листинг 14.1. Пример xml - документа
- •Листинг 14.2. Пример xml-документа с атрибутами в открывающем теге
- •Пространство имен тегов
- •Строки символов
- •Дата и время
- •Объединение
- •Описание элементов и их атрибутов
- •Определение сложных типов
- •Определение типа пустого элемента
- •Определение типа элемента с простым телом
- •Определение типа вложенных элементов
- •Определение типа со сложным телом
- •Пространства имен языка xsd
- •Листинг 14.5. Схема документа xml с целевым пространством имен
- •Включение файлов схемы в другую схему
- •Связь документа xml со своей схемой
- •Другие языки описания схем
- •Инструкции по обработке
- •Анализ документа xml
Пространства имен языка 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">