Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
4
Добавлен:
02.03.2016
Размер:
183.41 Кб
Скачать

Тема 4. Формат даних xml. Основи.

4.1. Вступ у xml

Розширювана мова розмітки (англ. eXtensible Markup Language, скорочено XML) − мова розмітки тексту. Розміткою є все те, що не відноситься до вмісту документу: структура документа, формат, вид, тощо. Розмітка здійснюється за допомогою тегів (дескрипторів) − керуючих елементів, поміщених у кутові дужки.

Зауваження. Сам по собі стандарт XML не містить ніяких тегів, призначених для розмітки, він просто визначає порядок їх створення. Таким чином, якщо, наприклад, ми вважаємо, що для позначення елемента бібіотека ВУЗу в документі необхідно використовувати тег <library>, то XML дозволяє вільно використовувати визначений користувачем тег і включати його в XML- документ.

Теги в XML завжди парні. Відкриваючий тег та відповідний закриваючий тег разом із даними, які містяться між цими тегами називається елементом. Самі ж дані між тегами називаються вмістом елемента.

При визначенні назв тегів слід пам’тати, що вони чутливі до регістру літер. Наприклад, наступна пара елементів коректна:

<title> Основи стандарту XML </title>

в той час як ця, — ні:

<Title> Основи стандарту XML </title>

Теги можуть містити атрибути − додаткові елементи виду ім’я_атрибута=“значення”, які уточнюють та доповнюють описання елемента. Атрибути розміщуються завжди у відкриваючому тезі елемента. Відкриваючий тег у елементі може містити декілька атрибутів розділених пробілами. Усі значення атрибутів мають бути обов’язково в лапках. Наприклад:

<text size=“12” style=“bold”> Завтра о 11.20 лекція з програмування </text>

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

<ім'я_елемента атрибути_елемента />

Наприклад:

<date month=“September” day=“19” year=“2009” />

Стандарт XML вимагає наявності одного і лише одного кореневого елемента − того, що містить решту всіх елементів. Всі елементи, які лежать (вкладені) у кореневому елементі, називаються дочірніми по відношенню до кореневого. При цьому XML допускає тільки правильне вкладення елементів. Це означає, що наступне вкладення є недопустиме:

<t1><t2> Це не є правильним вкладенням! </t1></t2>

Отже, XML − це мова розмітки, що описує цілий клас об’єктів даних, які називаються XML-документами. Кожен XML-документ має ієрархічну логічну структуру, і може представлятись у вигляді дерева. Вузлами цього дерева можуть бути:

  • Елементи, фізична структура яких складається із:

    • пари відкриваючого та закриваючого тегів;

    • тега порожнього елемента.

  • Атрибути, що мають вигляд пар ключ/значення.

  • Рядок декларації та коментарі.

Так наприклад XML-документу

<library>

<title>Каталог книг бібліотеки УжНУ</title>

<booklist>

<book author= “Г.Шилдт” year=“2011”>C# 4.0: полное руководство</book>

<book author= “А.П.Сергеев”>HTMLиXML.Профессиональная работа</book>

</booklist>

</library>

відповідає наступна деревоподібна структура:

Рис. 1. Деревоподібна структура XML-документа.

Для створення XML-документів можна використовувати будь-який текстовий редактор (редактор, який здатний зберігати дані формату ASCII). Проте існують спеціальні програмні засоби, які дозволяють вводити код і перевіряти синтаксис XML-документа, наприклад, Architag X-Rey Edition.

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

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

<?xml version= “1.0”?>

Оголошення XML-документа може містити також оголошення кодування (вказує на форму символів) та оголошення самостійності документа (може набувати значення yes або no). Отже, повний рядок декларації виглядає так:

<?xml version= “1.0” encoding= “utf-8” standalone=“yes”?>

XML-документ може містити також коментарі. Коментарі в XML додаються так як і в HTML. Наприклад:

<!-- це коментар -->

4.2. Простори імен XML

Після того як стандарт XML вкоренився, були створені десятки мов розмітки XML (які часто називають XML-граматиками). При цьому виникла проблема. Як поступати у випадку, якщо ви захочете скомбінувати дві XML-граматики, які використовують однойменні елементи? Як їх розрізняти?

Рішенням став стандарт XML Namespaces (простори імен XML). Головна ідея, покладена в основу цього стандарту, полягає в тому, що кожна мова розмітки XML має власний простір імен, який унікальним чином ідентифікує його елементи. Формально простори імен дозволяють неоднозначність, вносячи ясність про те, до якої мови розмітки елементи відносяться.

Всі простори імен XML використовують URI (Uniform Resource Identifier - універсальний ідентифікатор ресурсу). Зазвичай ці URI виглядають подібно URL веб-сторінок. Наприклад, http://www.mycompany.com/mystandard - типова назва простору імен. Хоча простори імен виглядають як звичайні веб-посилання, вони не обов'язково є такими. URI використовуються для просторів імен XML, оскільки в цьому випадку більш імовірно, що вони будуть унікальними. Зазвичай, якщо ви створюєте новий мову XML, то використовуєте URI, який вказує домен вашого веб-сайту. Це дозволить мати впевненість у тому, що ніхто інший не використовує цей URI. Однак простір імен не обов’язково має бути URI - допускається будь-яка текстова послідовність.

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

Наприклад, в показаному нижче XML- документі елементи <order> і <orderItem> поміщені в простір імен http://mycompany/OrderML:

<?xml version="1.0"?>

<order xmlns="http://mycompany/OrderML">

<orderItem>...</orderItem>

<orderItem>...</orderItem>

</order>

Зауваження. Назви просторів імен повинні відповідати в точності. Якщо змінити регістр в частині простору імен будь-яку іншу деталь, то парсер буде інтерпретувати результат як інший простір імен.

Новий простір імен можна оголосити для окремих частин документа. Найпростіший спосіб зробити це - скористатися префіксами просторів імен. Ці префікси представляють собою короткі послідовності символів, які можна вставити в початок імені дескриптора для позначення його простору імен. Префікси визначаються в атрибуті xmlns додаванням двокрапки (:), за яким слідують символи, які використовуються в якості префікса.

Нижче наведено приклад документу "Замовлення", в якому префікс простору імен використовується для відображення різних елементів на два різних простори імен:

<?xml version="1.0"?>

<ord:order xmlns:ord="http://mycompany/OrderML" xmlns:cli="http://mycompany/ClientML">

<cli:client>

<cli:firstName>...</cli:firstName>

<cli:lastName>...</cli:lastName>

</cli:client>

<ord:orderItem>...</ord:orderItem>

<ord:orderItem>...</ord:orderItem>

</ord:order>

Соседние файлы в папке веб-програмування - 1