Теги початку і кінця елемента є основними використовуваними в XML розмітками, але ними справа не вичерпується. Наприклад, елементам можуть бути привласнені атрибути. Ця можливість аналогічна наявній в HTML, де, наприклад, елементу <table> може бути привласнений атрибут align=»center». У XML елемент може мати один або більше пов'язаних із ним атрибутів, причому при упорядкуванні документа ви можете видумати їх стільки, скільки побажнете, наприклад <publication topic=»networking» circulation=»controlled»>.
Документи XML можуть містити посилання на інші об'єкти. Посилання являють собою рядок, що починається з амперсанта і закінчується “;”. Ці посилання дозволяють, зокрема, вставити в документ спеціальні символи. Посилання XML на об'єкти надають набагато більше можливостей, тому що вони можуть посилатися на визначені автором розділи тексту в тому ж самому або в іншому документі.
Наприклад, посилання на об'єкти дозволяють застосувати об'єктно-орієнтований підхід при створенні журнальної статті:
<article>
&introduction;
&body;
&sidebar;
&conclusion;
&resources;
</article>
Найпростіший XML- документ може виглядати так, як це показано в Прикладі 1
<?xml version="1.0"?>
<list_of_items>
<item id="1"><first/>Перший</item>
<item id="2">Другий <sub_item>підпункт 1</sub_item></item>
<item id="3">Третій</item>
<item id="4"><last/>Останній</item>
</list_of_items>
У XML існують відкриваючі, закриваючі і порожні теги (у HTML поняття порожнього тэга теж існує, але спеціального його позначення не потрібно).
Тіло документа XML складається з елементів розмітки (markup) і безпосередньо вмісту документа - даних (content). XML - теги призначені для визначення елементів документа, їхніх атрибутів і інших конструкцій мови.
Любий XML-документ повинний завжди починатися з інструкції <? xml? >, усередині якої також можна задавати номер версії мови, номер кодової сторінки й інші параметри, необхідні програмі-аналізатору в процесі розбору документа.
Правила створення XML- документа
У загальному випадку XML- документи повинні задовольняти таким вимогам:
· У заголовку документа поміщається оголошення XML, у якому вказується мова розмітки документа, номер її версії і додаткова інформація
· Кожний відкриваючий тег, що визначає деяку область даних у документі обов'язково повинний мати відповідний закриваючий тег
· У XML враховується регістр символів
· Всі значення атрибутів, використовуваних у визначенні тегів, повинні бути взяті в лапки
· Вкладеність тегів у XML строго контролюється, тому необхідно стежити за порядком слідування відкриваючих і закриваючих тегів
· Вся інформація, що розташовується між початковим і кінцевими тегами, розглядається в XML як дані і тому враховуються всі символи форматування
Якщо XML- документ не порушує приведені правила, то він називається формально-правильним і всі аналізатори, призначені для розбору XML- документів, зможуть працювати з ним коректно.
З XML-документом пов'язані три рівні коректності:
· Правильно побудований XML-документ - це такий, у якому елементи правильно структуровані у вигляді дерева з коректно розставленими відкриваючих і закриваючих тегами.
· Діючий XML-документ правильно побудований і містить теги, що відповідають оголошенню типу документа. Він містить тільки елементи і значення атрибутів, що відповідають DTD. Хоча XML-документ може підготовлятися і читатися без DTD, DTD істотно для встановлення дієвості.
· Синтаксически коректний XML-документ знаходиться поза контролем XML. Розробник такого документа відповідає за його логічну структуризацію.
Проте крім перевірки на формальну відповідність граматиці мови, у документі можуть бути присутнім засоби контролю над вмістом документа, за дотриманням правил, що визначають необхідні співвідношення між елементами і формуючою структурою документа. Наприклад, наступний текст, будучи цілком правильним XML- документом, буде абсолютно безглуздим:
<country><title>Russia</title><city><title>Novosibirsk</country></title></city>
Для того, щоб забезпечити перевірку коректності XML-документів, необхідно використовувати аналізатори, що роблять таку перевірку і називаються верифікованими.
На сьогоднішній день існує два способи контролю правильності XML-документа: DTD - визначення (Document Type Definition) і схеми даних (Semantic Schema). Визначення DTD- правил у XML не є необхідністю.
Конструкції мови
Вміст XML- документа являє собою набір елементів, секцій CDATA, директив аналізатора, коментарів, спецсимволів, текстових даних.
Елементи даних
Елемент - це структурна одиниця XML- документа. Вкладаючи слово rose в у тэги <flower> </flower> , ми визначаємо непустий елемент, названий <flower>, вмістом якого є rose. У загальному випадку в якості вмісту елементів можуть виступати як простий текст, так і інші, вкладені, елементи документа, секції CDATA, інструкції з опрацювання, коментар, - тобто практично будь-які частини XML- документа.
Любий непустой елемент повинний складатися з початкового, кінцевого тегов і даних, між ними заключених. Наприклад, наступні фрагменти будуть бути елементами:
<flower>rose</flower>
<city>Novosibirsk</city>
,а ці - ні:
<rose>
<flower>
rose
Набором всіх елементів, що містяться в документі, задається його структура і визначаються всі ієрархічні співвідношення. Плоска модель даних перетворюється з використанням елементів у складну ієрархічну систему з множиною можливих зв'язків між елементами. Наприклад, у такому прикладі ми описуємо місце розташування Новосибірських університетів (вказуємо, що Новосибірський Університет розташований у місті Новосибірську, що, у свою чергу, знаходиться в Росії), використовуючи для цього вкладеність елементів XML :
<country id="Russia">
<cities-list>
<city>
<title>Новосибірськ</title>
<state>Siberia</state>
<universities-list>
<university id="2">
<title>Новосибірський Державний Технічний Університет</title>
<noprivate/>
<address URL="www.nstu.ru"/>
<description>дуже гарний інститут</description>
</university>
<university id="2">
<title>Новосибірський Державний Університет</title>
<noprivate/>
<address URL="www.nsu.ru"/>
<description>теж не поганої</description>
</university>
</universities-list>
</city>
</cities-list>
</country>
Проводячи пошук у цьому документі, програма клієнта буде спиратися на інформацію, закладену в його структуру - використовуючи елементи документа. Тобто, якщо, наприклад, потрібно знайти потрібний університет у потрібному місті, використовуючи приведений фрагмент документа, то необхідно буде переглянути вміст конкретного елемента <university>, що знаходиться всередині конкретного елемента <city>. Пошук при цьому, природно, буде набагато більш ефективним, ніж знаходження потрібної послідовності по всьому документу.