1 / 34

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

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

reeves
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Ограничения на структуру документа • XML предоставляет слишком большую свободу в организации корректного документа • Такая свобода может стать источником ошибок и путаницы • Решение — задать структурные и семантические ограничения

  3. Примеры ограничений на структуру документа • Структурное ограничение: элемент с именем А может содержать только элементы с именем В • Семантическое ограничение: атрибут a, содержащийся в элементе A, должен обладать уникальным значением среди множества значений атрибутов a

  4. Схемы XML-документов • Схема XML-документа — модель, отделенная от самого документа, в которой заданы его структурные и параметрические ограничения • Схема — модель типов • Наиболее популярными языками являются DTD, XML Schema (XSD), RelaxNG, XDR

  5. ВалидныеXML-документы • ВалидныйXML-документ по отношению к некоторой схеме — корректный XML-документ, удовлетворяющий всем ограничениям, определенным в схеме

  6. DTD. Аббревиатура и назначение • DTD — Document Type Definition • DTD —это язык описания, который позволяет определить, какие элементы должны быть в XML-документе, сколько раз они должны повторяться, какие атрибуты должны быть у этих элементов, какие атрибуты обязательные и какие не обязательные, а также какие сущности могут использоваться в документе

  7. DTD. Преимущества • DTD является де-факто стандартом спецификации схем (по крайней мере, пока стандарт XML Schema не будет окончательно утвержден) • схемы DTD можно однозначно отобразить на другие XML-схемы

  8. DTD. Объявление типа документа • <!DOCTYPEкорневой_элементURI_внешнего_подмножества [внутреннее_подмножество]>: • <!DOCTYPEroot"schemas/test.dtd"> или • <!DOCTYPEroot[ <!ELEMENT root (elem1)+> ]> или • <!DOCTYPEroot"schemas/test.dtd" [ <!ELEMENT root (elem1)+> ] >

  9. DTD. Объявление элементов • <!ELEMENT название элемента (что может содержать)> Специальные знаки: • «+» —один или несколько экземпляров объекта в скобках • «*» — ноль, один или несколько экземпляров объекта • «?» —допустимы ноль или один экземпляр объекта

  10. DTD. Объявление элементов • «EMPTY» — элемент должен быть пустым • «ALL» —элемент может содержать любые вложенные элементы и текстовые узлы • «#PCDATA» —элемент может содержать только текст, но не вложенные элементы

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

  12. DTD. Объявление атрибутов • <!ATTLIST родительский_элемент имя тип режим_использования> • Типы атрибутов: ID, CDATA, IDREF и т.д. • Режимы: #IMPLIED, #REQUIRED, «значение по умолчанию»

  13. DTD. Пример объявления атрибутов • <!ATTLIST снабжение номер CDATA#REQUIRED > • <!ATTLIST поставщик код ID#REQUIRED имя CDATA#REQUIRED статус CDATA"10" город CDATA#REQUIRED > • <!ATTLIST товар код ID#REQUIRED назвCDATA #REQUIRED цвет (синий | красный | белый | иной) #IMPLIED город CDATA # IMPLIED >

  14. DTD. Недостатки • Отличный от XML синтаксис языка • Нет проверки типов данных. В DTD есть только один тип – строка • В DTD нет пространств имен. Нельзя поставить в соответствие документу два и более DTD описаний

  15. XSD. Главные XML-схемы • XSD — альтернативный способ создания правил построения XML-документов • По сравнению с DTD схемы обладают более мощными средствами для определения сложных структур данных, обеспечивают более понятный способ описания грамматики языка, способны легко модернизироваться и расширяться. • XSD позволяют описывать правила для XML- документа средствами самого же XML

  16. XSD. Стандарты • XML DTD forXML-Data-Schema • Версия 1.0 была одобрена в качестве рекомендации консорциума W3C 2 мая 2001 года • 28 октября 2004 года была опубликована вторая редакция версии 1.0, исправляющая ряд ошибок

  17. XSD. Корневой элемент • schema — корневой элемент любой XSD-схемы • в XSD всегда пространство имензадается URL http://www.w3c.org/2001/XMLSchema • в XSDдля обозначения пространства имен принято использовать префикс xsd • <xsd:schemaxmlns:xsd=http://www.w3c.org/2001/XMLSchema>

  18. XSD. Сложные и простые типы • Элемент простого типа не может содержать другие элементы или атрибуты • Элемент простого типа задается конструкцией simpleType • Комплексный тип может создавать эффект встраивания элементов в другие элементы или может ассоциировать атрибуты с элементом • Элемент сложного типа задается конструкцией complexType

  19. XSD. Определение простых типов • Некоторые из простых типов, например string и decimal встроены в язык XML-схемы, в то время как другие определены специально для конкретных документов • Для определения имени и типа собственного простого типа используют оператор simpleType. • С помощью оператора restriction указывают прототип и идентифицируют фасеты

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

  21. XSD. Ограничение вхождений • minOccures — минимальное число экземпляров элемента (например, 0 ) • maxOccures— максимальное число экземпляров элемента (например, 1 или unbounded) • Пример: <xsd:element name="test" minOccurs="0" maxOccurs="unbounded">…</xsd:element>

  22. XSD. Ограничение вхождений • minOccures — минимальное число экземпляров элемента (например, 0 ) • maxOccures— максимальное число экземпляров элемента (например, 1 или unbounded) • Пример: <xsd:element name="test" minOccurs="0" maxOccurs="unbounded">…</xsd:element>

  23. XSD. Определение элементов • В определении элемента указываются: имя элемента, его тип, количество вхождений и структура • Совокупность дочерних элементов обозначается как sequence (характерно только для элементов сложного типа) • Совокупность атрибутов элемента задается непосредственно в элементе complexType

  24. 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>

  25. XSD. Определение атрибутов • В определении атрибута указываются: имя атрибута, тип данных и режим использования • Совокупность атрибутов элемента задается непосредственно в элементе complexType

  26. 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>

  27. RelaxNG. Почему XSD недостаточно? • XSD решает все проблемы DTD: он является XML приложением, и позволят описывать все мыслимые виды ограничений на структуру документа • XSD характеризуется излишней сложностью • На основе языков TREX и RELAX был разработан язык схем, названный RELAX NG • RELAX NG (REgularLAnguagefor XML NextGeneration)

  28. 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>

  29. 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>

  30. 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>

  31. RelaxNG. Смешанное содержимое <element name="subject"> <mixed> <element name="b"> <text /> </element> <element name="i"> <text /> </element> </mixed> </element> Элементtest может содержать как текст, так и один элемент b или один элемент i.

  32. RelaxNG. Опциональные элементы <element name="subject"> <mixed> <optional> <element name="b"> <text /> </element> </optional> <optional> <element name="i"> <text /> </element> </optional> </mixed> </element> Элементtest может содержать как текст, так и один элемент b или один элемент i.

  33. RelaxNG. Альтернатива <element name="location"> <choice> <element name="description"><text/></element> <element name="place"><text/></element> </choice> </element> Элементlocation может содержать или один элемент description, или один элемент place.

  34. RelaxNG. Множественные вхождения … <element name="Снабжение"> <oneOrMore> <element name="Поставщик"> <zeroOrMore> <element name="Поставка"> <oneOrMore> <element name="Товар"> </element> </oneOrMore> </element> </zeroOrMore> </element> </oneOrMore> </element> …

More Related