Приклад xml схеми

У цьому розділі буде показано, як писати XML схеми. Також ви дізнаєтеся, що схеми можна писати різними способами.

XML документ

Давайте подивимося на наступний XML документ під назвою "shiporder.xml":

Наведений вище XML документ складається з кореневого елемента shiporder з обов'язковим атрибутом orderid. Елемент shiporder містить три дочірніх елемента: orderperson. shipto і item. Елемент item використовується двічі і містить елемент title. необов'язковий елемент note. а також елементи quantity і price.

Створення XML схеми

Тепер для наведеного вище XML документа створимо XML схему.

Створимо новий файл, який назвемо "shiporder.xsd". Для створення XML схеми будемо просто слідувати за структурою XML документа і визначати кожен зустрінутий елемент. Почнемо зі стандартною XML декларації, за якою опишемо елемент xs: schema. який і визначає саму схему:

Тепер ми повинні визначити елемент shiporder. У цього елемента є атрибут, і він містить інші елементи, тому ми розглядаємо його як елемент складеного типу. Визначення дочірніх елементів елемента shiporder помістимо в декларацію xs: sequence. що задає жорстку послідовність піделементи:

Тепер визначимо елемент orderperson. який буде простого типу (так як він не містить ні атрибути, ні інші елементи). Його тип (xs: string) має префікс простору імен, асоційованого з XML схемою, що вказує на використання визначеного типу даних:

За допомогою схем ми можемо визначити число можливих входжень будь-якого елементу. У цьому нам допоможуть атрибути maxOccurs і minOccurs. Атрибут maxOccurs задає максимальне число входжень елемента, а атрибут minOccurs задає мінімальне число входжень. За замовчуванням значення обох атрибутів дорівнює 1.

Тепер ми можемо декларувати атрибут елемента shiporder. Оскільки це обов'язковий атрибут, використовуємо визначення use = "required".

Примітка: Атрибути повинні завжди декларуватися останніми:

Ось повний код файлу схеми "shiporder.xsd":

поділ схеми

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

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

Нижче наводиться нове компонування файлу схеми ( "shiporder.xsd"):

Використання поименование типів

Третій спосіб компонування схеми передбачає визначення класів або типів, які дозволяють повторне використання визначень елементів. Це стає можливим, якщо дати імена елементам simpleTypes і complexTypes. а потім вказати на них за допомогою атрибута type.

Третій спосіб компонування файлу схеми ( "shiporder.xsd"):

Елемент restriction вказує на те, що тип даних є похідним від типів даних з простору імен W3C XML Schema. Таким чином, наступний фрагмент коду означає, що значення елемента або атрибута повинно бути строковим:

Однак набагато частіше елемент restriction використовується для накладання обмежень на елементи. Подивіться на наступні рядки з наведеної вище схеми:

Цей фрагмент коду вказує, що значення елемента або атрибута повинно бути строковим, рівно шість символів в довжину, і цими символами повинні бути цифри від 0 до 9.