Лекция 4. · Лекция 4. XML Schema Курс «Языки разметки» ... ряд...

24
Лекция 4. XML Schema Курс «Языки разметки»

Transcript of Лекция 4. · Лекция 4. XML Schema Курс «Языки разметки» ... ряд...

Page 1: Лекция 4. · Лекция 4. XML Schema Курс «Языки разметки» ... ряд недостатков, которые выявляются при углубленной

Лекция 4.

XML Schema

Курс «Языки разметки»

Page 2: Лекция 4. · Лекция 4. XML Schema Курс «Языки разметки» ... ряд недостатков, которые выявляются при углубленной

Проблемы DTD

У определений DTD имеется ряд

недостатков, которые выявляются при

углубленной работе с XML:

программная обработка их метаданных

затруднена;

они не являются расширяемыми и не

поддерживают пространства имен;

они не поддерживают типов данных;

они не поддерживают наследование.

Аксенова Е.В. Языки разметки 3

Page 3: Лекция 4. · Лекция 4. XML Schema Курс «Языки разметки» ... ряд недостатков, которые выявляются при углубленной

Альтернативы DTD

В связи с необходимостью создания языка схем, призванного заменить и расширить DTD, было выдвинуто множество предложений. В их число входят:

RDF (Resource Description Framework)

XML-Data

Document Content Description (DCD)

Schema for Object-Oriented XML (SOX)

Document Definition Markup Language (DDML, ранее известный как XSchema)

Ни один из этих проектов не был формально поддержан консорциумом W3C, тем не менее, каждый из них рассматривается консорциумом в процессе его работы над схемами XML.

XML Schema стала W3C рекомендацией в 2001 году.

Аксенова Е.В. Языки разметки 4

Page 4: Лекция 4. · Лекция 4. XML Schema Курс «Языки разметки» ... ряд недостатков, которые выявляются при углубленной

XML Schema

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

<catalog

xmlns:xsi="http://www.w3.org/

2001/XMLSchema-instance"

xsi:schemaLocation="cd.xsd">

<cd>

<title>empire burlesque</title>

<artist>bob dylan</artist>

</cd>

...

</catalog>

Аксенова Е.В. Языки разметки 5

<?xml version="1.0„

encoding="UTF-8"?>

<xs:schema

xmlns:xs="http://www.w3.org/

2001/XMLSchema">

...

</xs:schema>

XSD-файл: cd.xsd

XML-файл: cd.xml

Page 5: Лекция 4. · Лекция 4. XML Schema Курс «Языки разметки» ... ряд недостатков, которые выявляются при углубленной

Типы данных элементов

Сложный (комплексный) тип - тип

элементов, которые могут иметь

вложенные элементы и атрибуты

Простой тип - тип элементов, которые

не могут иметь вложенных элементов

или атрибутов

Аксенова Е.В. Языки разметки 6

Page 6: Лекция 4. · Лекция 4. XML Schema Курс «Языки разметки» ... ряд недостатков, которые выявляются при углубленной

Определения и объявления

типов данных элементовОпределения создают новые типы элементов

(простые и сложные).

Объявления задают имена и содержимое элементов

и атрибутов (простых и комплексных типов), которые

могут использоваться в документах, соответствующих

данной схеме.

Элементы объявляются оператором element.

Аксенова Е.В. Языки разметки 7

Page 7: Лекция 4. · Лекция 4. XML Schema Курс «Языки разметки» ... ряд недостатков, которые выявляются при углубленной

Объявление элемента

<element

maxOccurs =

(nonNegativeInteger | unbounded)

minOccurs = nonNegativeInteger

name = NCName

ref = QName

type = Qname >

Content: (simpleType | complexType)?

</element>

Аксенова Е.В. Языки разметки 8

Page 8: Лекция 4. · Лекция 4. XML Schema Курс «Языки разметки» ... ряд недостатков, которые выявляются при углубленной

Типы данных элемента

Встроенные типы данных:

xs:boolean (логический тип)

xs:integer (целый тип)

xs:integer (целый тип)

xs:float и xs:double (вещественные типы)

xs:string (строковый тип)

xs:date (дата)

simpleType - простой тип элементов

complexType – сложный тип элементов

Аксенова Е.В. Языки разметки 9

Page 9: Лекция 4. · Лекция 4. XML Schema Курс «Языки разметки» ... ряд недостатков, которые выявляются при углубленной

Примеры определения типа

данных элемента<xs:element name="title" type="xs:string"/>

<xs:element name="cd">

<xs:simpleType> ... </xs:simpleType>

</xs:element>

<xs:element name="cd" type="myType">

<xs:complexType> ... </xs:complexType>

Аксенова Е.В. Языки разметки 10

Page 10: Лекция 4. · Лекция 4. XML Schema Курс «Языки разметки» ... ряд недостатков, которые выявляются при углубленной

Определение количества

появлений элементаmaxOccurs

Максимальное число появлений элемента в содержащем его

элементе. maxOccurs >= 0

Любое количество появлений элемента: maxOccurs="unbounded"

minOccurs

Минимальное число появлений элемента в содержащем его

элементе. minOccurs >= 0

Для необязательных элементов: minOccurs = 0

Пример: <xs:element name="cd" maxOccurs = "unbounded" />

<xs:element name="cd" minOccurs = "0" />

Аксенова Е.В. Языки разметки 11

Page 11: Лекция 4. · Лекция 4. XML Schema Курс «Языки разметки» ... ряд недостатков, которые выявляются при углубленной

Использование атрибута ref

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

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

<xs:element name="pets">

<xs:complexType>

<xs:choice>

<xs:element ref="cat"/>

<xs:element ref="dog"/>

</xs:choice>

</xs:complexType>

</xs:element>

Аксенова Е.В. Языки разметки 12

Page 12: Лекция 4. · Лекция 4. XML Schema Курс «Языки разметки» ... ряд недостатков, которые выявляются при углубленной

Простой тип элементов

(simpleType)

<simpleType name = NCName>

Content:(restriction | list | union)

</simpleType>

Аксенова Е.В. Языки разметки 13

Page 13: Лекция 4. · Лекция 4. XML Schema Курс «Языки разметки» ... ряд недостатков, которые выявляются при углубленной

Элемент restriction

Ограничивает диапазон значений встроенного типа данных.

<restriction base = QName>

Content: (minExclusive | minInclusive | maxExclusive

| maxInclusive | totalDigits |fractionDigits | length

| minLength | maxLength | enumeration | whiteSpace |

pattern)*)

</restriction>

minExclusive,maxExclusive - определяют исключающую нижнюю/верхнюю границу области значений типа.

minInclusive, maxInclusive - определяют включающую нижнюю/верхнюю границу области значений типа.

length - определяет количество символов в строковом типе, количество байтов в двоичном типе или количество элементов в списочном типе.

pattern - определяет шаблон, основанный на регулярном выражении, с которым должен совпадать тип.

enumeration - определяет фиксированное значение, с которым должен совпадать тип.

Аксенова Е.В. Языки разметки 14

Page 14: Лекция 4. · Лекция 4. XML Schema Курс «Языки разметки» ... ряд недостатков, которые выявляются при углубленной

Элемент restriction

Ограничивает диапазон значений встроенного типа данных.<restriction base = QName>Content: (minExclusive | minInclusive | maxExclusive | maxInclusive | totalDigits|fractionDigits | length | minLength | maxLength | enumeration | whiteSpace | pattern)*)</restriction>

Пример:

<xs:element name="cd">

<xs:simpleType>

<xs:restriction base="xs:string">

<xsd:enumeration value="Book"/> <xsd:enumeration value="Magazine"/> <xsd:enumeration value="Journal"/>

</xs:restriction>

</xs:simpleType>

</xs:element>

Аксенова Е.В. Языки разметки 15

Page 15: Лекция 4. · Лекция 4. XML Schema Курс «Языки разметки» ... ряд недостатков, которые выявляются при углубленной

Элемент list

list

Определяет простой тип, который

содержит разделенный пробелами

список значений наследуемого простого

типа.

Аксенова Е.В. Языки разметки 16

Page 16: Лекция 4. · Лекция 4. XML Schema Курс «Языки разметки» ... ряд недостатков, которые выявляются при углубленной

Элемент union

union

Определяет простой тип, который

содержит объединение множества

значений двух или более наследуемых

простых типов.

Аксенова Е.В. Языки разметки 17

Page 17: Лекция 4. · Лекция 4. XML Schema Курс «Языки разметки» ... ряд недостатков, которые выявляются при углубленной

Сложный тип элементов

<complexType

name = NCName>

Content:

simpleContent |

complexContent |

(

(group | all | choice | sequence)?,

((attribute|attributeGroup)*,anyAttribute?)

)

</complexType>

Аксенова Е.В. Языки разметки 18

Page 18: Лекция 4. · Лекция 4. XML Schema Курс «Языки разметки» ... ряд недостатков, которые выявляются при углубленной

Сложный тип элементов

При описании документов, имеющих

сложную иерархическую структуру, можно

сначала определить все элементы и

атрибуты, а затем ссылаться на них.

Аксенова Е.В. Языки разметки 19

Page 19: Лекция 4. · Лекция 4. XML Schema Курс «Языки разметки» ... ряд недостатков, которые выявляются при углубленной

group, all, choice, sequence

groupГруппирует набор объявлений элементов таким образом, что их можно включить в качестве группы в определения сложных типов.

Пример:<xs:group name="myGroup"> <xs:sequence> <xs:element ref="thing1"/> <xs:element ref="thing2"/> <xs:element ref="thing3"/>

</xs:sequence> </xs:group>

<xs:complexType name="myComplexType"> <xs:group ref="myGroup"/>

</xs:complexType>

Аксенова Е.В. Языки разметки 20

Page 20: Лекция 4. · Лекция 4. XML Schema Курс «Языки разметки» ... ряд недостатков, которые выявляются при углубленной

group, all, choice, sequence

allПозволяет элементам группы появляться (или не появляться) в содержащем элементе в любом порядке.

Пример:

<xs:complexType name="myComplexType">

<xs:all>

<xs:element ref="thing1"/>

<xs:element ref="thing2"/>

<xs:element ref="thing3"/>

</xs:all>

</xs:complexType>

Аксенова Е.В. Языки разметки 21

Page 21: Лекция 4. · Лекция 4. XML Schema Курс «Языки разметки» ... ряд недостатков, которые выявляются при углубленной

group, all, choice, sequence

choice

Позволяет присутствовать в элементе-контейнере

одному и только одному элементу из выбранной

группы.

Пример:

<xs:complexType name="myComplexType">

<xs:choice>

<xs:element ref="thing1"/>

<xs:element ref="thing2"/>

<xs:element ref="thing3"/>

</xs:choice>

</xs:complexType>

Аксенова Е.В. Языки разметки 22

Page 22: Лекция 4. · Лекция 4. XML Schema Курс «Языки разметки» ... ряд недостатков, которые выявляются при углубленной

group, all, choice, sequence

sequenceТребует, чтобы элементы группы появлялись в содержащем их элементе в указанной последовательности.

Пример:

<xs:complexType name="myComplexType">

<xs:sequence>

<xs:element ref="thing1"/>

<xs:element ref="thing2"/>

<xs:element ref="thing3"/>

</xs:sequence>

</xs:complexType>

Аксенова Е.В. Языки разметки 23

Page 23: Лекция 4. · Лекция 4. XML Schema Курс «Языки разметки» ... ряд недостатков, которые выявляются при углубленной

Объявление атрибута<attribute

default = string

fixed = string

name = NCName

ref = QName

type = QName

use = (optional | prohibited | required)>

Content: (simpleType?)

</attribute>

default - Атрибут со значением по умолчанию.

fixed - Атрибут с фиксированным значением.

Аксенова Е.В. Языки разметки 24

Page 24: Лекция 4. · Лекция 4. XML Schema Курс «Языки разметки» ... ряд недостатков, которые выявляются при углубленной

Параметр use

use - Указывает, как используется атрибут.optional - Атрибут является необязательным и может принимать

любое значение.

<xs:attribute name="myattr" type="xs:string" use="optional"/>

prohibited - Атрибут нельзя использовать. Этот атрибут

используется в ограничении другого сложного типа, чтобы

запретить использование существующих атрибутов.

required - Атрибут должен отобразиться один раз. Атрибут

необходим и может принимать любое значение, допускаемое

определением типа этого атрибута.

<xs:attribute name="myattr" type="xs:string" use="required"/>

Аксенова Е.В. Языки разметки 25