Основы работы с DTD и XSD

Основы работы с и .

Для описания данных можно использовать (Document Type Definition) или схемы .

Схемы создаются на одном из языков описания схем , например, или .

Schema Definition – схемы от W3C.
- -Data Reduced – схемы от Microsoft.

(Document Type Definition) задает правила формирования теговой разметки.

Например, для описания набора компьютеров можно использовать следующее :

<!ELEMENT productList (product)+ >
<!ELEMENT computer (hdd?, processor*, morherboard) >
<!ELEMENT hdd (#PCDATA) >
<!ELEMENT processor (#PCDATA) >
<!ELEMENT motherboard (#PCDATA) >

Использование знаков ? + * накладывает на элементы ограничения:

"+" - используется для определения одного или большего количества дочерних элементов
"*" - используется для определения нуля и большего количества дочерних элементов
"?" - используется для определения нуля или одного дочернего элемента (элемент обязателен или нет)

Последовательность использования элементов (порядок определения дочерних элементов) в теговой разметке определяется так:

<!ELEMENT computer (hdd?, processor*, motherboard) >.

Сначала должен быть определён элемент hdd, processor, и только потом motherboard.

Помимо последовательностей можно использовать альтернативы.

Альтернатива позволяет показать, что в конкретном месте должен появится один из множества элементов. При использовании альтернатив синтаксический анализатор знает, что в документе может применятся только один элемент из перечисления.

Определяются альтернативы так - (P4|AMD|Celeron) - <!ELEMENT computer (hdd?, (P4|AMD| Celeron) , motherboard) >

Для определения смешанного типа содержимого элементов (текст или дочерние элементы), можно воспользоваться альтернативами такого вида (добавлено #PCDATA):

<!ELEMENT computer (hdd?, (#PCDATA|P4|AMD| Celeron) , morherboard) >

Атрибуты элементов определяются с помощью конструкции <!ATTLIST>

<!ATTLIST имя_элемента имя_атрибута тип_атрибута значение_по_умолчанию >

В все типы атрибутов основаны на строковом типе данных.

Наиболее распространенные типы атрибута:

CDATA – символьные данные;
ID - уникальный идентификатор;
(value1|value2|value3) – перечисление возможных значений атрибутов, т.е. возможным значением атрибута будет одно из перечисляемых.

Например, можно определить атрибут "model" элемента "computer" так:

<!ATTLIST computer model CDATA>

к можно подключить так:

<!DOCTYPE productList SYSTEM "products.">

или можно определить конструкции внутри документа, например, так:

<!DOCTYPE productList
[
<!ELEMENT productList (product)+ >
<!ELEMENT computer (hdd, processor, morherboard) >
<!ELEMENT hdd (#PCDATA) >
<!ELEMENT processor (#PCDATA) >
<!ELEMENT motherboard (#PCDATA) >
]>

Схемы – это альтернативный способ определения типа документа. Наиболее часто используемые языки схем – это от W3C и от Microsoft.

В схеме определяются элементы и их атрибуты. Кроме того, в схеме задаются правила порождения элементов (порядок вложенности элементов, последовательность их появления), и, конечно, типизация элементов и атрибутов с возможностью установления ограничений на значения элементов и их атрибутов.

Элементы обладают обязательными атрибутами name и type, определяющими имя элемента и его тип. Например:

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

В схемах поддерживаются все наиболее распространенные в языках программирования типы данных, а именно:

xs:string - строковый тип
xs:decimal - десятичное число
xs:boolean – true/false
xs:float – число с плавающей точки
xs:date (1950-03-26) - дата
xs:time (15:30:01) - время
и др.

Кроме того, атрибут элемента minOccurs=”0” определяет минимальное число вхождений элемента, а maxOccurs=”число” - максимальное число вхождений элементов.

Элементы бывают простыми и сложными.

Простые элементы не могут иметь атрибуты и содержимое смешанного типа, а сложные – могут.

Содержимое смешанного типа – это возможность использовать внутри элемента дочерние элементы и текст (смешанное содержимое) .

Простые определяются с помощью вложенного элемента <xs:simpleType>, сложные - <xs:complexType>

Ограничения на значение элемента можно устанавливать с помощью конструкции <xs:restriction>. Например:

<xs:element name=”возраст”>
<xs:simpleType>
<xs:restriction base=”xs:integer”> <!-- ограничения:-->
<xs:minInclusive value=”25”> <!—мин. значение-->
<xs:maxInclusive=”41” ><!—макс. значение>
</xs:restriction>
</xs:simpleType>
</xs:element>

Ограничения на значения элемента (используются множества допустимых значений) устанавливаются с помощью <xs:restriction> и <xs:enumeration>

Например:

<xs:element name=”Processor”>
<xs:simpleType>
<xs:restriction base=”xs:string”>
<xs:enumeration value=”P4”/>
<xs:enumeration value=”AMD”/>
<xs:enumeration value=”CoreDuo”/>
</xs:restriction>
</xs:simpleType>
</xs:element>

Для того, чтобы можно было использовать ограничение вне определения элемента Processor (например, еще в элементе "Platform" ), нужно следующим образом модифицировать определение элемента Processor:

<xs:element name=”Processor” type=”processorType”>
<xs:simpleType name=”processorType”>
<xs:restriction base=”xs:string”>
<xs:enumeration value=”P4”/>
<xs:enumeration value=”AMD”/>
<xs:enumeration value=”CoreDuo”/>
</xs:restriction>
</xs:simpleType>
</xs:element>

В отличие от простых элементов сложные элементы могут иметь атрибуты и содержимое смешанного типа.

Последовательность появления дочерних элементов определяется с помощью конструкции <xs:sequence>

Например, сложный элемент Computer с установленной последовательностью появления элементов (сначала HDD, потом Motherboard) можно определить так:

<xs:complexType name=”Computer”>
<xs:sequence>
<xs:element name=”HDD” type=”xs:string”/>
<xs:element name=”Motherboard” type=”xs:string”/>
</xs:sequence>
<xs:attribute name=”model” type=”xs:string” fixed=”NewModel”/>
<:complexType>

Подключить XMLSchema к документу можно так:

<ProductList xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="products.">

</ProductList>

Вместо «products.» может быть любой допустимый URL, а вместо ProductList любой ваш корневой элемент документа.

Более подробно об и можно почитать здесь Школы XML.

А введение в можно почитать здесь !

P.S. При использовании примеров с этой странички - может быть - придётся изменить кавычки :!:

Оставить комментарий




XHTML: Вы можете использовать теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Please copy the string iqQhCL to the field below: