Учебное пособие (1075724), страница 20
Текст из файла (страница 20)
3.11. Преобразование XML-схемы в шаблон «матрешка».184В шаблоне Salami Slice (ломтики салями) все элементы объявленыглобальными. Типы вложены в элементы. Используются ссылки на элементы(атрибут ref).Пример 3.27.Файл XSD:<?xml version="1.0" encoding="UTF-8"?><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"><xsd:element name="languages"><xsd:complexType><xsd:sequence><xsd:element ref="language" maxOccurs="unbounded"/></xsd:sequence></xsd:complexType></xsd:element><xsd:element name="language"><xsd:complexType><xsd:sequence><xsd:element ref="name"/><xsd:element ref="year"/><xsd:element ref="howold"/></xsd:sequence><xsd:attribute name="id" use="required"type="xsd:string"/></xsd:complexType></xsd:element><xsd:element name="name" type="xsd:string"/><xsd:element name="year" type="xsd:string"/><xsd:element name="howold">185<xsd:simpleType><xsd:restriction base="xsd:integer"><xsd:enumeration value="10"/><xsd:enumeration value="15"/><xsd:enumeration value="20"/></xsd:restriction></xsd:simpleType></xsd:element></xsd:schema>Форма преобразования шаблона в NetBeans:Рис.
3.12. Преобразование XML-схемы в шаблон «ломтики салями».Шаблон Garden of Eden (Райский Сад, оптимальный шаблон) являетсякомбинацией шаблонов Venetian Blind и Salami Slice. Элементы и типыобъявляются глобальными, ссылки создаются по мере необходимости.186Пример 3.28.Файл XSD:<?xml version="1.0" encoding="UTF-8"?><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"><xsd:element name="languages" type="languagesType"/><xsd:complexType name="languagesType"><xsd:sequence><xsd:element ref="language" maxOccurs="unbounded"/></xsd:sequence></xsd:complexType><xsd:element name="language" type="languageType"/><xsd:complexType name="languageType"><xsd:sequence><xsd:element ref="name"/><xsd:element ref="year"/><xsd:element ref="howold"/></xsd:sequence><xsd:attribute name="id" use="required" type="xsd:string"/></xsd:complexType><xsd:element name="name" type="xsd:string"/><xsd:element name="year" type="xsd:string"/><xsd:element name="howold" type="NewHowoldTypeType"/><xsd:simpleType name="NewHowoldTypeType"><xsd:restriction base="xsd:integer"><xsd:enumeration value="10"/><xsd:enumeration value="15"/><xsd:enumeration value="20"/>187</xsd:restriction></xsd:simpleType></xsd:schema>Форма преобразования шаблона в NetBeans:Рис.
3.13. Преобразование XML-схемы в оптимальный шаблон.3.2.16 Профиль XML-схемСхемы XML являются достаточно сложной спецификацией. Далеко не всевозможности схем используются на практике.Было проведено исследование, в котором изучалось, какие возможности схемиспользуются на практике, а какие нет.
Результат исследования назвали профилемXML-схем.188Профиль содержит список наиболее редко используемых возможностей инаиболее часто используемых возможностей.1. Редко используемые конструкции (встречающиеся в схемах реже, чем в10% случаев). элемент xsd:all. Предпочтительно применять вместо него xsd:choiceили xsd:sequence; уникальность (Uniqueness): использование элемента unique требует,чтобы его содержимое отличалось от остальных элементов в пределахего области видимости.
Казалось бы, это удобно, ведь потребность вуникальныхидентификаторахвполне естественна. Однако, каквыяснилось, в большинстве случаев для таких элементов используютсястроковые данные. Возможно, уникальность используется на бизнесуровне передачи данных между системами; квалифицированные атрибуты (qualified attributes): использованиеконструкции attributeFormDefault="qualified". Она не применяетсяпрактически ни в одной схеме, хотя многие разработчики используютквалифицированные элементы; ключи (keys): использование элементов key и keyref; nillable:использованиеатрибутаnillable,обуславливающиеиспользование xsi:nil в экземпляре; mixed: установка атрибута mixed="true" позволяет комбинироватьданные и дочерние элементы в одном месте. Разработчики схем четкоразделили эти концепции на определенные типы; группы (groups): использование xsd:group позволяет определять группудля дальнейшего повторного использования.
Однако такие элементычаще всего употребляются с конструкцией "ref", а не добавляются вгруппы.2. Часто используемые конструкции (встречаются, по крайней мере, в третииз рассмотренных схем).189 квалифицированные элементы пространства имен: использованиеконструкцииelementFormDefault="qualified"дляявногозаданияпространства имен элемента; xsd:sequence: использование элемента xsd:sequence. Это наиболее частоиспользуемый композитор. Он рекомендуется вместо конструкцииxsd:all, поскольку устраняет двусмысленные модели, и дочерниеэлементы следуют в определенном порядке; расширение complexType : создание типа, которые расширяет другойтип, – одна из главных возможностей повторного использования ирасширяемости; анонимные типы (anonymous types): используются в тех случаях, когдасоздаваемые типы имеют локальный масштаб и, следовательно, у нихотсутствует атрибут name.
Это бывает очень часто; ограничение simpleType: производное от simpleType, ограничивающеебазовый тип; перечисления (enumerations): перечень значений – одна из наиболеечасто встречающихся конструкций.3.2.17 Способы описания XML-схемБолее подробно XML-схемы рассмотрены в спецификации. СпецификацияXML-схем состоит из трех частей:1.
[XML Schema Part 0 Primer, 2004] – введение в XML-схемы в видепримеров.Существуютнеофициальныерусскиепереводыэтойчастиспецификации.2. [XML Schema Part 1 Structures, 2004] – содержит описание конструкций,используемых в XML-схемах.3. [XML Schema Part 2 Datatypes, 2004] – содержит описание типов данных,используемых в XML-схемах.Кроме рассмотренных XSD-схем, которые являются стандартом вебконсорциума, можно встретить и другие варианты XML-схем.190XDR-схемы (XML Data-Reduced) упрощеный формат описания схем.Появился раньше, чем XSD-схемы, считается устаревшим.Также существуют RELAX NG схемы, которые имеют более простойсинтаксис по сравнению с XSD-схемами.3.3 Материалы для дальнейшего изученияРекомендуется ознакомиться со спецификацией XML-схем [XML SchemaPart 0 Primer, 2004] (существует русский перевод), [XML Schema Part 1 Structures,2004], [XML Schema Part 2 Datatypes, 2004].3.4 Контрольные вопросы1.
Что такое DTD и для чего используется эта технология?2. Как в DTD объявляются элементы XML-документа?3. Как в DTD объявляется последовательность и выбор элементов?4. Как в DTD объявляется количество вхождений элемента?5. Как в DTD объявляются атрибуты элементов XML-документа?6. В чем разница между встроенными и внешними DTD?7. В чем основное отличие в способах описания содержимого элементов вDTD и XML-схемах?8. Как присоединить XML-схему к документу XML?9.
Как используются простые типы и ограничения (фасеты) в XMLсхемах?10.Как объявляются списки и объединения в XML-схемах?11.Как объявляются атрибуты элементов в XML-схемах?12.Как объявляются сложные (составные) типы в XML-схемах? В чемотличие от DTD?13.Как объявляется количество вхождений элемента в XML-схемах? Вчем отличие от DTD?14.Как используются группы элементов и атрибутов в XML-схемах?19115.Как объявляется смешанная модель содержимого элемента в XMLсхемах?16.Как используются аннотации в XML-схемах?17.Как используются ключи и уникальность в XML-схемах?18.Как создавать XML-схемы, проверяющие пространства имен? Какпроверяются квалифицированные и неквалифицированные элементы иатрибуты?19.Как создавать XML-схемы, состоящие из нескольких файлов?20.ЧтотакоешаблоныпроектированияXML-схем?Вчемихособенности?1924 Глава 4. Введение в XML–ориентированные базыданных4.1 Естественные и приспособленные XML–ориентированныеСУБДВ настоящее время большинство современных СУБД позволяет работать сданными в формате XML, например, Microsoft SQL Server, Oracle, Cache.
Дляработы с XML используются различные расширения языка SQL, иногда XQuery.В этих СУБД XML не является основным форматом хранения данных. ТакиеСУБД называют «XML-enabled Database» – СУБД, приспособленные киспользованию XML.Существуют также специализированные XML-ориентированные СУБД, вкоторых XML является основным форматом хранения данных. Такие СУБДназывают «Native XML Database (NXD)» – естественные (прирожденные) XMLСУБД.Часто NXD СУБД вообще не поддерживают реляционную модель. К такимСУБД можно отнести коммерческую Tamino, а также свободно распространяемыеeXist и Sedna.В таких СУБД основным языком обработки данных, как правило, являетсяXQuery.Более подробно классификация XML-ориентированных СУБД рассмотрена встатье [Бурэ, 2002].4.2 Основы работы с СУБД «eXist»СУБД eXist является «естественной» XML-ориентированной СУБД.
ЭтаСУБД хранит данные только в формате XML и не использует другие форматыхранения данных (например, реляционные таблицы).Это свободно распространяемый программный продукт. Сайт СУБД «eXist»– «exist-db.org».193На этом сайте можно найти актуальную версию и инструкцию по установке.Версии обновляются достаточно часто, соответственно меняется инструкция поустановке, поэтому в данном пособии инструкция по установке не приводится.Традиционным способом установки является установка .exe или .jar файла.В случае необходимости eXist можно пересобрать в виде .war-архива (вебархива) и установить на веб-сервер Apache Tomcat.Если eXist установлен на локальном веб-сервере Apache Tomcat, то с нимможно работать как с веб-приложением с использованием браузера. Дляобращения к eXist используется URI – http://localhost:8080/existНа следующем рисунке представлена стартовая страница eXist.Рис.















