XML- ТЕХНОЛОГИИ

34
XML-ТЕХНОЛОГИИ Лекция 2 Схемы XML-документа

description

XML- ТЕХНОЛОГИИ. Лекция 2 Схемы XML -документа. Ограничения на структуру документа. XML предоставляет слишком большую свободу в организации корректного документа Такая свобода может стать источником ошибок и путаницы Решение — задать структурные и семантические ограничения. - PowerPoint PPT Presentation

Transcript of XML- ТЕХНОЛОГИИ

Page 1: XML- ТЕХНОЛОГИИ

XML-ТЕХНОЛОГИИ

Лекция 2Схемы XML-документа

Page 2: XML- ТЕХНОЛОГИИ

Ограничения на структуру документаXML предоставляет слишком

большую свободу в организации корректного документа

Такая свобода может стать источником ошибок и путаницы

— Решение задать структурные и семантические ограничения

Page 3: XML- ТЕХНОЛОГИИ

Примеры ограничений на структуру документа :Структурное ограничение

элемент с именем Аможет содержать только элементы с

именем В

:Семантическое ограничение a, атрибут содержащийся в

A, элементе должен обладать уникальным значением среди

aмножества значений атрибутов

Page 4: XML- ТЕХНОЛОГИИ

Схемы XML-документов Схема XML- — , документа модель

, отделенная от самого документа в которой заданы его структурные и

параметрические ограничения

— Схема модель типов

Наиболее популярными языками DTD, XML Schema (являются XSD),

RelaxNG, XDR

Page 5: XML- ТЕХНОЛОГИИ

Валидные XML-документы Валидный XML- документ по

— отношению к некоторой схеме корректный XML- , документ

удовлетворяющий всем, ограничениям определенным в

схеме

Page 6: XML- ТЕХНОЛОГИИ

DTD. Аббревиатура и назначениеDTD — Document Type Definition

DTD — , это язык описания который , позволяет определить какие элементы

XML- , должны быть в документе сколько , раз они должны повторяться какие

атрибуты должны быть у этих, элементов какие атрибуты

, обязательные и какие не обязательные а также какие сущности могут

использоваться в документе

Page 7: XML- ТЕХНОЛОГИИ

DTD. ПреимуществаDTD - является де факто стандартом

( спецификации схем по крайней, XML Schema мере пока стандарт не ) будет окончательно утвержден

DTD схемы можно однозначно XML- отобразить на другие схемы

Page 8: XML- ТЕХНОЛОГИИ

DTD. Объявление типа документа<!DOCTYPE _ корневой элемент

URI_ _ внешнего подмножества[ _ ]>внутреннее подмножество :

<!DOCTYPE root "schemas/test.dtd">или<!DOCTYPE root [

<!ELEMENT root (elem1)+>]>

или<!DOCTYPE root "schemas/test.dtd" [

<!ELEMENT root (elem1)+>] >

Page 9: XML- ТЕХНОЛОГИИ

DTD. Объявление элементов<!ELEMENT ( название элемента что

)>может содержать :Специальные знаки

«+» — один или несколько экземпляров объекта в скобках

«*» — ноль, один или несколько экземпляров объекта

«?» — допустимы ноль или один экземпляр объекта

Page 10: XML- ТЕХНОЛОГИИ

DTD. Объявление элементов«EMPTY» — элемент должен быть

пустым

«ALL» — элемент может содержать любые вложенные элементы и текстовые узлы

«#PCDATA» — элемент может содержать только текст, но не вложенные элементы

Page 11: XML- ТЕХНОЛОГИИ

DTD. Примеры объявления элементов<!ELEMENT ( )+>снабжение поставщик

<!ELEMENT ( )*>поставщик поставка

<!ELEMENT ( )>поставка товар

<!ELEMENT товар EMPTY>

Page 12: XML- ТЕХНОЛОГИИ

DTD. Объявление атрибутов<!ATTLIST _родительский элемент

_имя тип режим использования>

: Типы атрибутов ID, CDATA, IDREF . .и т д

: #Режимы IMPLIED, #REQUIRED, « »значение по умолчанию

Page 13: XML- ТЕХНОЛОГИИ

DTD. Пример объявления атрибутов <!ATTLIST снабжение

номер CDATA #REQUIRED >

<!ATTLIST поставщик код ID #REQUIRED имя CDATA #REQUIRED

статус CDATA "10" город CDATA #REQUIRED >

<!ATTLIST товар код ID #REQUIRED

назв CDATA #REQUIRED ( цвет синий | красный | белый | ) иной #IMPLIED

город CDATA # IMPLIED >

Page 14: XML- ТЕХНОЛОГИИ

DTD. Недостатки XML Отличный от синтаксис языка

. DTD Нет проверки типов данных В – есть только один тип строка

DTD   . В нет пространств имен Нельзя поставить в соответствие документу

DTD два и более описаний

Page 15: XML- ТЕХНОЛОГИИ

XSD. Главные XML-схемыXSD — альтернативный способ создания

XML-правил построения документов

DTD По сравнению с схемы обладают более мощными средствами для определения

, сложных структур данных обеспечивают более понятный способ описания

, грамматики языка способны легко .модернизироваться и расширяться

XSD XML- позволяют описывать правила для XMLдокумента средствами самогоже

Page 16: XML- ТЕХНОЛОГИИ

XSD. СтандартыXML DTD for XML-Data-Schema

1.0 Версия была одобрена в качестве  W3C 2 рекомендации консорциума

 2001 мая года

28  2004   октября года была опубликована 1.0, вторая редакция версии

исправляющая ряд ошибок

Page 17: XML- ТЕХНОЛОГИИ

XSD. Корневой элементschema — корневой элемент любой XSD-схемы

в XSD всегда пространство имен задается URL http://www.w3c.org/2001/XMLSchema

в XSD для обозначения пространства имен принято использовать префикс xsd

<xsd:schema xmlns:xsd=http://www.w3c.org/2001/XMLSchema>

Page 18: XML- ТЕХНОЛОГИИ

XSD. Сложные и простые типы Элемент простого типа не может содержать

другие элементы или атрибуты

Элемент простого типа задается конструкциейsimpleType

Комплексный тип может создавать эффект встраивания элементов в другие элементы или

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

Элемент сложного типа задается конструкцией complexType

Page 19: XML- ТЕХНОЛОГИИ

XSD. Определение простых типов

, Некоторые из простых типов напримерstring decimal XML- , и встроены в язык схемы в

то время как другие определены специально для конкретных документов

Для определения имени и типа собственного простого типа используют

simpleType.оператор

С помощью оператора restriction указывают прототип и идентифицируют фасеты

Page 20: XML- ТЕХНОЛОГИИ

XSD. Примеры простых типов

Page 21: XML- ТЕХНОЛОГИИ

XSD. Ограничение вхожденийminOccures — минимальное число

( , 0 )экземпляров элемента например

maxOccures — максимальное число ( , экземпляров элемента например 1 или

unbounded)

:Пример<xsd:element name="test" minOccurs="0" maxOccurs="unbounded">…</xsd:element>

Page 22: XML- ТЕХНОЛОГИИ

XSD. Ограничение вхожденийminOccures — минимальное число

( , 0 )экземпляров элемента например

maxOccures — максимальное число ( , экземпляров элемента например 1 или

unbounded)

:Пример<xsd:element name="test" minOccurs="0" maxOccurs="unbounded">…</xsd:element>

Page 23: XML- ТЕХНОЛОГИИ

XSD. Определение элементов : В определении элемента указываются имя

, , элемента его тип количество вхождений иструктура

Совокупность дочерних элементов обозначается как sequence ( характерно

только для элементов сложного типа)

Совокупность атрибутов элемента задается непосредственно в элементе complexType

Page 24: XML- ТЕХНОЛОГИИ

XSD. Пример определения элементов

<xsd:element name="Снабжение"><xsd:complexType><xsd:sequence><xsd:element name="Поставщик"> <xsd:complexType> <xsd:sequence> <xsd:element name="Поставка">… </xsd:element> </xsd:sequence></xsd:complexType></xsd:element></xsd:sequence></xsd:complexType>

</xsd:element>

Page 25: XML- ТЕХНОЛОГИИ

XSD. Определение атрибутов

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

использования

Совокупность атрибутов элемента задается непосредственно в элементе complexType

Page 26: XML- ТЕХНОЛОГИИ

XSD. Пример определения атрибутов

<xsd:element name="Снабжение">

<xsd:complexType>

<xsd:sequence>

<xsd:element name="Поставщик">

<xsd:complexType>

<xsd:attribute name="ID" type="xsd:string“ use="required"/>

<xsd:attribute name=“name" type="xsd:string“ use="required"/>

<xsd:attribute name=“status" type="xsd:positiveInteger" />

</xsd:complexType>

</xsd:element>

</xsd:sequence>

<xsd:attribute name="ID" type="xsd:string“ use="required"/>

</xsd:complexType>

</xsd:element>

Page 27: XML- ТЕХНОЛОГИИ

RelaxNG. Почему XSD недостаточно?

XSD решает все проблемы DTD: он XML  , является приложением ипозволят

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

XSD характеризуетсяизлишней сложностью

 TREX   RELAX  Наоснове языков и был ,  RELAX NGразработан язык схем названный

RELAX NG (REgular LAnguage for XML Next Generation)

Page 28: XML- ТЕХНОЛОГИИ

RelaxNG. Корневой элемент — Корневой элемент grammar

Описание конструкций Relax NG — start

Пространство имен в Relax NG относится кURL http://relaxng.org/ns/structure/1.0

<?xml version="1.0"?> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> </start> </grammar>

Page 29: XML- ТЕХНОЛОГИИ

RelaxNG. Элементы<?xml version="1.0"?> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="Снабжение"> <element name="Поставщик"><element name="Поставка"><element name="Товар"></element></element></element></element></start> </grammar>

Page 30: XML- ТЕХНОЛОГИИ

RelaxNG. Атрибуты<?xml version="1.0"?> <grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start> <element name="Снабжение"> <attribute name="ID"> <text /> </attribute>

<element name="Поставщик"><attribute name="ID"> <text /> </attribute><attribute name="name"> <text /> </attribute><attribute name="status"> <text /> </attribute><element name="Поставка"><element name="Товар"></element></element></element></element></start> </grammar>

Page 31: XML- ТЕХНОЛОГИИ

RelaxNG. Смешанное содержимое

<element name="subject">

<mixed>

<element name="b">

<text />

</element>

<element name="i">

<text />

</element>

</mixed>

</element>

 Элемент test  , может содержать как текст так и  b   i.один элемент или один элемент

Page 32: XML- ТЕХНОЛОГИИ

RelaxNG. Опциональные элементы <element name="subject"> <mixed> <optional><element name="b"><text /></element> </optional><optional><element name="i"><text /></element> </optional></mixed> </element>

 Элемент test  ,  b   i.может содержать как текст так и один элемент или один элемент

Page 33: XML- ТЕХНОЛОГИИ

RelaxNG. Альтернатива<element name="location">

<choice>

<element name="description"><text/></element>

<element name="place"><text/></element>

</choice>

</element>

 Элемент location  может содержать или  один элемент description,  или один

 элемент place.

Page 34: XML- ТЕХНОЛОГИИ

RelaxNG. Множественные вхождения

<element name="Снабжение">

<oneOrMore>

<element name="Поставщик">

<zeroOrMore>

<element name="Поставка">

<oneOrMore>

<element name="Товар">

</element>

</oneOrMore>

</element>

</zeroOrMore>

</element>

</oneOrMore>

</element>