Веб-технологии (09.03.02. Информационные системы и технологии)
XML- ТЕХНОЛОГИИ
description
Transcript of XML- ТЕХНОЛОГИИ
XML-ТЕХНОЛОГИИ
Лекция 2Схемы XML-документа
Ограничения на структуру документаXML предоставляет слишком
большую свободу в организации корректного документа
Такая свобода может стать источником ошибок и путаницы
— Решение задать структурные и семантические ограничения
Примеры ограничений на структуру документа :Структурное ограничение
элемент с именем Аможет содержать только элементы с
именем В
:Семантическое ограничение a, атрибут содержащийся в
A, элементе должен обладать уникальным значением среди
aмножества значений атрибутов
Схемы XML-документов Схема XML- — , документа модель
, отделенная от самого документа в которой заданы его структурные и
параметрические ограничения
— Схема модель типов
Наиболее популярными языками DTD, XML Schema (являются XSD),
RelaxNG, XDR
Валидные XML-документы Валидный XML- документ по
— отношению к некоторой схеме корректный XML- , документ
удовлетворяющий всем, ограничениям определенным в
схеме
DTD. Аббревиатура и назначениеDTD — Document Type Definition
DTD — , это язык описания который , позволяет определить какие элементы
XML- , должны быть в документе сколько , раз они должны повторяться какие
атрибуты должны быть у этих, элементов какие атрибуты
, обязательные и какие не обязательные а также какие сущности могут
использоваться в документе
DTD. ПреимуществаDTD - является де факто стандартом
( спецификации схем по крайней, XML Schema мере пока стандарт не ) будет окончательно утвержден
DTD схемы можно однозначно XML- отобразить на другие схемы
DTD. Объявление типа документа<!DOCTYPE _ корневой элемент
URI_ _ внешнего подмножества[ _ ]>внутреннее подмножество :
<!DOCTYPE root "schemas/test.dtd">или<!DOCTYPE root [
<!ELEMENT root (elem1)+>]>
или<!DOCTYPE root "schemas/test.dtd" [
<!ELEMENT root (elem1)+>] >
DTD. Объявление элементов<!ELEMENT ( название элемента что
)>может содержать :Специальные знаки
«+» — один или несколько экземпляров объекта в скобках
«*» — ноль, один или несколько экземпляров объекта
«?» — допустимы ноль или один экземпляр объекта
DTD. Объявление элементов«EMPTY» — элемент должен быть
пустым
«ALL» — элемент может содержать любые вложенные элементы и текстовые узлы
«#PCDATA» — элемент может содержать только текст, но не вложенные элементы
DTD. Примеры объявления элементов<!ELEMENT ( )+>снабжение поставщик
<!ELEMENT ( )*>поставщик поставка
<!ELEMENT ( )>поставка товар
<!ELEMENT товар EMPTY>
DTD. Объявление атрибутов<!ATTLIST _родительский элемент
_имя тип режим использования>
: Типы атрибутов ID, CDATA, IDREF . .и т д
: #Режимы IMPLIED, #REQUIRED, « »значение по умолчанию
DTD. Пример объявления атрибутов <!ATTLIST снабжение
номер CDATA #REQUIRED >
<!ATTLIST поставщик код ID #REQUIRED имя CDATA #REQUIRED
статус CDATA "10" город CDATA #REQUIRED >
<!ATTLIST товар код ID #REQUIRED
назв CDATA #REQUIRED ( цвет синий | красный | белый | ) иной #IMPLIED
город CDATA # IMPLIED >
DTD. Недостатки XML Отличный от синтаксис языка
. DTD Нет проверки типов данных В – есть только один тип строка
DTD . В нет пространств имен Нельзя поставить в соответствие документу
DTD два и более описаний
XSD. Главные XML-схемыXSD — альтернативный способ создания
XML-правил построения документов
DTD По сравнению с схемы обладают более мощными средствами для определения
, сложных структур данных обеспечивают более понятный способ описания
, грамматики языка способны легко .модернизироваться и расширяться
XSD XML- позволяют описывать правила для XMLдокумента средствами самогоже
XSD. СтандартыXML DTD for XML-Data-Schema
1.0 Версия была одобрена в качестве W3C 2 рекомендации консорциума
2001 мая года
28 2004 октября года была опубликована 1.0, вторая редакция версии
исправляющая ряд ошибок
XSD. Корневой элементschema — корневой элемент любой XSD-схемы
в XSD всегда пространство имен задается URL http://www.w3c.org/2001/XMLSchema
в XSD для обозначения пространства имен принято использовать префикс xsd
<xsd:schema xmlns:xsd=http://www.w3c.org/2001/XMLSchema>
XSD. Сложные и простые типы Элемент простого типа не может содержать
другие элементы или атрибуты
Элемент простого типа задается конструкциейsimpleType
Комплексный тип может создавать эффект встраивания элементов в другие элементы или
может ассоциировать атрибуты с элементом
Элемент сложного типа задается конструкцией complexType
XSD. Определение простых типов
, Некоторые из простых типов напримерstring decimal XML- , и встроены в язык схемы в
то время как другие определены специально для конкретных документов
Для определения имени и типа собственного простого типа используют
simpleType.оператор
С помощью оператора restriction указывают прототип и идентифицируют фасеты
XSD. Примеры простых типов
XSD. Ограничение вхожденийminOccures — минимальное число
( , 0 )экземпляров элемента например
maxOccures — максимальное число ( , экземпляров элемента например 1 или
unbounded)
:Пример<xsd:element name="test" minOccurs="0" maxOccurs="unbounded">…</xsd:element>
XSD. Ограничение вхожденийminOccures — минимальное число
( , 0 )экземпляров элемента например
maxOccures — максимальное число ( , экземпляров элемента например 1 или
unbounded)
:Пример<xsd:element name="test" minOccurs="0" maxOccurs="unbounded">…</xsd:element>
XSD. Определение элементов : В определении элемента указываются имя
, , элемента его тип количество вхождений иструктура
Совокупность дочерних элементов обозначается как sequence ( характерно
только для элементов сложного типа)
Совокупность атрибутов элемента задается непосредственно в элементе complexType
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>
XSD. Определение атрибутов
: В определении атрибута указываются имя, атрибута тип данных и режим
использования
Совокупность атрибутов элемента задается непосредственно в элементе complexType
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>
RelaxNG. Почему XSD недостаточно?
XSD решает все проблемы DTD: он XML , является приложением ипозволят
описывать всемыслимые видыограничений на структуру документа
XSD характеризуетсяизлишней сложностью
TREX RELAX Наоснове языков и был , RELAX NGразработан язык схем названный
RELAX NG (REgular LAnguage for XML Next Generation)
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>
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>
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>
RelaxNG. Смешанное содержимое
<element name="subject">
<mixed>
<element name="b">
<text />
</element>
<element name="i">
<text />
</element>
</mixed>
</element>
Элемент test , может содержать как текст так и b i.один элемент или один элемент
RelaxNG. Опциональные элементы <element name="subject"> <mixed> <optional><element name="b"><text /></element> </optional><optional><element name="i"><text /></element> </optional></mixed> </element>
Элемент test , b i.может содержать как текст так и один элемент или один элемент
RelaxNG. Альтернатива<element name="location">
<choice>
<element name="description"><text/></element>
<element name="place"><text/></element>
</choice>
</element>
Элемент location может содержать или один элемент description, или один
элемент place.
RelaxNG. Множественные вхождения
…
<element name="Снабжение">
<oneOrMore>
<element name="Поставщик">
<zeroOrMore>
<element name="Поставка">
<oneOrMore>
<element name="Товар">
</element>
</oneOrMore>
</element>
</zeroOrMore>
</element>
</oneOrMore>
</element>
…