Лістинг 2: Фрагмент DTD, що описує елементи з лістингу 1
Лістинг 3: Фрагмент XML Schema, що описує елементи з лістингу
Використання просторів імен в XML Schema.
У реальному світі одна людина може обробляти документи від безлічі кореспондентів, які можуть хотіти по різному представляти свої дані. Більш того, в рамках одногодокумента вони можуть потребувати роздільному зверненні до елементів з одними і тими ж іменами, але в різних контекстах. Як розрізнити один від одного ці різні визначення, що мають одне і те ж ім'я? XML Schema дозволяє розрізняти такі визначення за допомогою поняття простору імен.
Обмеження шаблонів DTDНезважаючи на те, що шаблони DTD відмінно служили розробникам SGML і HTML протягом 20 років в якості механізму опису структурованої інформації, шаблони DTD мають строгі обмеження в порівнянні з XML Schema. DTD вимагає, щоб елементи складалися з одного з трьох понять:
- текстового рядка
- Текстового рядка, і інших дочірніх елементів
- Набору дочірніх елементовDTD не має синтаксису XML і пропонує тільки обмежену підтримку для типів або просторів імен.
Лістинг 4: Власні і використовуються простору імен
Малюнок 1: Простори назв лістингу 4
Лістинг 5: Множинні вихідні простору імен, які імпортують простір імен.
Лістинг 6: Використання безлічі просторів імен з безлічі схем
Малюнок 2: Простори назв для лістингу 5 та 6
Визначення елементів.
Визначити елемент означає визначити його ім'я і модель змісту. У XML Schema модель змісту елемента визначається за допомогою його типу. При цьому окремі елементи XML-документа можуть мати тільки значення, що задовольняють типам, визначеним у їх схемою.
прості типи
Специфікація XML Schema визначає набір простих типів, наведений в Таблиця 2: зумовленість прості типи.
Тип може бути простим або складним. Простий тип не може містити елементи або атрибути. Складний тип може містити вкладені елементів і атрибути. (Приклади наведені вище в цій статті є простими типами (див. ProductCode)). Специфікація XML Schema включає також зумовлені прості типи (див. Праворуч Прості типи). Похідний простий тип може набувати значень всередині безлічі допустимих значень свого базового типу. Наприклад, значення похідного простого типу ProductCode представляють собою підмножина значень базового типу string.
Прості невложенние елементи мають простий тип
Елемент, який не містить атрибутів або інших елементів може бути визначений як має простий тип, попередньо визначений або визначений користувачем так, як string. integer. decimal. time. ProductCode і ін.
Лістинг 7: Кілька простих типів для елементів
Елементи з атрибутами повинні мати складний тип
Якщо Ви спробуєте додати атрибут currency до простого елементу price з лістингу 7. то це призведе до помилки. Елемент простого типу не може мати атрибути. Якщо ви хочете додати атрибут, ви повинні визначити price як складний тип. У прикладі лістингу 8 ми визначили, що тип називається неіменованого (an anonymous type), якщо не задано явного імені. Іншими словами, атрибут name елемента complexType не визначений.
Лістинг 8: Складний тип елемента
Елементи, які мають вкладені елементи, повинні мати складний тип
Таблиця 1: Порівняння складних типів даних в DTD і XML Schema.
Лістинг 9: Складний тип, визначений за допомогою глобальних простих типів
У прикладах Таблиці 1 і лістингу 9 BookType є глобальним і може використовуватися для визначення інших елементів. На відміну від цього, Лістинг 10 визначає BookType локально в елементі Book і, крім того, робить його неіменованого. Зауважте, що фрагмент XML-документа в Таблиці 1 відповідає всім трьом фрагментами схеми в Таблиці 1. лістингу 9 і лістингу 10.
Лістинг 10: Приховування BookType як локального типу
Накладання складних умов на елементи
XML Schema надає набагато більшу гнучкість для завдання умов, що накладаються на модель змісту елементів, ніж DTD. На найпростішому рівні, як в DTD, ви можете пов'язувати атрибути з елементами і определітьколічество входжень елементів (тільки одне. Нуля або одного (?), Нуля або більше (*), або одного або більше (+) елементів з даного набору. У XML Schema ви можете висловити також додаткові обмеження, використовуючи, наприклад, атрибути minOccurs і maxOccurs елемента element. а також за допомогою елементів choice. group. і all.
Лістинг 11: Вираз обмежень на типи елементів
Лістинг 12: Індикація того, що для елемента повинні бути визначені всі типи
Ви можете продовжити дослідження схеми XML за допомогою документації на сайті W3C (див. Ресурси) і переглядаючи для кращого охоплення зону dW XML. Зараз, коли специфікація схеми XML була прийнята як рекомендація W3C, її буде використовувати все більше і більше число людей.