Смекни!
smekni.com

Стандарт XML. /Укр/ (стр. 5 из 5)

<elementType id="bouquet">

<attribute name="id" atttype="ID">

</elementType>

Якщо ж потрібно задати список можливих значень атрибута, то приклад будет виглядати в такий спосіб:

<attribute name="flower" atttype="ENUMERATION" values="red green blue" default="red">

Модель вмісту елемента

Під моделлю вмісту в схемі даних розуміють опис усіх припустимих об'єктів XML- документа, використання котрих усередині даного елемента є коректним. Модель вмісту визначається інструкціями, розташованими всередині блока <elementType>.

<elementType id="article">

<attribute name="id" atttype="ID">

<element type="#title">

<string/>

</elementType>

Для цього правила коректним буде бути такий фрагмент документа:

<article id="0">

<title>Психи і маніяки в Інтернет</title>

</article>

Вкладені елементи описуються за допомогою інструкції element, у якій параметром type указується клас об'єкта - посилання на його визначення:

<elementType id="article">

<element type="#title"/>

<element type="#author"/>

</elementType>

Якщо потрібно зазначити режим використання вкладеного елемента, то треба визначити параметр occurs:

<elementType id="article">

<element type="#title" occurs="REQUIRED"/>

<element type="#author" occurs="OPTIONAL"/>

<element type="#subject" occurs="ONEORMORE"/>

</elementType>

Можливі значення цього параметра такі:

REQUIRED - елемент повинний бути обов'язково визначений

OPTIONAL - використання елемента не є обов’язковим

ZEROORMORE - вкладений елемент може зустрічатися декілька разів або жодного разу

ONEORMORE - елемент повинний зустрічатися хоча б один раз

Приклади правильних XML-документів, що використовують приведену вище схему:

<article>

<title>Навіщо він потрібний, XML?</title>

<author>Іван Петров</author>

<subject>Що таке XML</subject>

<subject>потрібний чи він нам</subject>

</article>

або

<article>

<title>Навіщо він потрібний, XML?</title>

<subject>Що таке XML</subject>

</article>

Крім елементів, вмістом XML-документа можуть також бути звичайним текстом і областями CDATA. Для позначення типів вмісту поточного елемента в схемах використовуються такі інструкції:

<string/> - вказує на те, що вмістом елемента є тільки вільна текстова інформація (секція PCDATA) :

<elementType id="flower">

<string/>

</elementType>

<any/> - вказує на те, що вмістом елемента повинні бути тільки елементи, без тексту, незаключенного ні в один елемент:

<elementType id="issue">

<any/>

</elementType>

<mixed> - будь-яке сполучення елементів і тексту

<elementType id="contacts">

<mixed/>

</elementType>

<empty> - порожній елемент

Приклад:

<elementType id="title">

<string/>

</elementType>

<elementType id="chapter">

<string/>

</elementType>

<elementType id="chapters-list">

<any/>

</elementType>

<elementType id="content">

<element type="#chapters-list" occurs="OPTIONAL">

</elementType>

<elementType id="article">

<mixed><element type="#title"></mixed>

<element type="#content" occurs="OPTIONAL">

</elementType>

Що в імені твоєму?

Розширювана мова розмітки (Extensible Markup Language, XML) дозволяє вам створювати свої власні теги, документувати їх за допомогою визначень типів документів (Document Type Definition, DTD) або схеми XML і потім без проблем обмінюватися даними з іншими джерелами. Все це добре, але може виявитися, що інші використовують ті ж самі, що і ви, імена для елементів і атрибутів, але при цьому спираються на інші DTD. Це прямий шлях до проблем.

Щоб уникнути подібних конфліктів W3C розробив концепцію просторів імен і ключового слова xmlns. Завдяки їм в одному документі можуть використовуватися імена елементів і атрибутів, що інакше вступили б у конфлікт один з одним. Тепер же вони різняться різними префіксами простору імен і визначаються по різноманітним DTD або схемах.

От, наприклад, фрагмент коду XML із використанням просторів імен:

<inventory xmlns:storea=

“http://www.knowknew.com/

books.dtd” xmlns:storeb=

“http://www.amazon.com/schema”>

<storea:magazine>

<storea:title>Network

Magazine</storea:title>

</storea:magazine>

<storeb:magazine>

<storeb:magazine storeb:title=

“Data Communications”>

</storeb:magazine>

</inventory>

У визначенні DTD магазина А назва книги є піделементом часопису. У схемі магазина Б назва є атрибутом часопису.

Завдяки розрізненню імен за допомогою різних префіксів просторів імен вони можуть застосовуватися разом. Місцезнаходження DTD і схеми вказується в даному прикладі за допомогою URL, але воно може також визначатися за допомогою Uniform Resource Name (URN, див. RFC 2141) або Uniform Resource Identifier (URI, див. RFC 2396).

Використання для опису даних (Intelligent Enterprise, August 03, 1999, Volume 2, Number 11)

Однією з особливостей XML, що привертає увагу промисловості, є можливість опису структур даних і даних, що зберігаються. З використанням XML можна визначити нові теги спеціально для опису еквівалента таблиць і стовпчиків (або сутностей і атрибутів) у структурі реляційної бази даних. Ще більш істотно те, що теги для набору стовпчиків або атрибутів можуть зв'язуватися з тегами для їхньої батьківської таблиці або сутності. Хоча теговая структура здається гарним механізмом для опису і розуміння структури бази даних, спосіб організації даних потребує як ніколи раніше суворої дисципліни. XML не забороняє мати повторювані групи, жахливі структури даних і т.д.

OMG сформувала набір тегов, названий XML Metadata Interchange (XMI), із метою надання можливості опису в стандартних термінах структури даних про дані ("метаданих"). Цей стандарт буде корисний для обміну метаданими між CASE-засобами і для опису "репозиторія метаданих" у проектах сховищ даних. Рухаючись у тому ж напрямку, група компаній ( щовключає, зокрема, IBM і Oracle) знаходиться в процесі визначення Common Warehouse Metadata Interchange (CWMI), підмножини XMI для підтримки сховищ даних.

Це означає, що є два підходи до опису структури бази даних на XML:

По-перше, прикладну базу даних може описувати DTD XML-документа. У цьому випадку операційні дані бази даних можуть бути розміщені між наборами описаних тегів. Таке DTD може, наприклад, генеруватися одним CASE-засобом, а читатися іншим, забезпечуючи засіб передачі структури даних.

По-друге, можна розмістити самі визначення таблиці і стовпчиків між тегами XMI, визначеними на більш високому рівні абстракції. Цей підхід трохи більш хитрий, оскільки метамодель XMI дуже абстрактна, але використання метамоделі XMI дозволяє описувати набагато більше, чим таблиці і стовпчики.

Проте зауважимо, що проблема визначення репозиторія метаданих або обміну метаданими між CASE-засобами не пов'язаний із використанням XML або якогось іншої мови. Проблемою є структура і семантика бази даних. Важливе питання полягає не в тому, як буде представлятися універсальний репозиторій метаданих. (Можна легко уявити репозиторий у виді набору реляционных таблиць або діаграм сутність/зв'язок.) Питання полягає в тому, що знаходиться в репозиториї і що це означає? Які об'єкти є істотними і повинні бути описані? Це набагато складіша тема, і вона усе ще знаходиться в стадії обговорення. Наявність нової мови не вносить істотний внесок у це обговорення.

Насправді при наявності розуміння, що XML є гарним засобом для опису структури бази даних, найбільше очевидним висновком є те, що використання цієї мови накладає велику відповідальність на адміністраторів даних із приводу коректності визначення даних. XML не забезпечує таку коректність; XML усього лише реєструє будь-який проект даних, що надходить від розробника.

Поява XML підвищує важливість моделювання і проектування даних.