1 Синтаксис

Матеріал з Wiki TNEU
Перейти до: навігація, пошук

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

 <?xml version="1.0" encoding="UTF-8"?>
 <recipe name="хліб" preptime="5" cooktime="180">
 <title>Простий хліб</title>
 <ingredient amount="3" unit="стакан">Мука</ingredient>
 <ingredient amount="0.25" unit="грамм">Дріжджі</ingredient>
 <ingredient amount="1.5" unit="стакан">Тепла вода</ingredient>
 <ingredient amount="1" unit="чайна ложка">Сіль</ingredient>
 <instructions>
  <step> Змішати всі інгредієнти і ретельно замісити.</step>
  <step>Закрити тканиною і лишити на одну годину  в теплому приміщені.</step>
  <step> Замісити ще раз, покласти на деко і поставити в духовку.</step>
 </instructions>
 </recipe>

Оголошення XML

Перший рядок XML-документа називається оголошення XML (англ. XML declaration) - це рядок, що вказує версію XML. У версії 1.0 оголошення XML може бути опущено, у версії 1.1 воно обов'язково. Також тут може бути вказана кодування символів і наявність зовнішніх залежностей.

 <?xml version="1.0" encoding="UTF-8"?>

Специфікація вимагає, щоб процесори XML обов'язково підтримували Юнікод-кодування UTF-8 і UTF-16 (UTF-32 не обов'язковий). Визнаються допустимими, підтримуються і широко використовуються (але не обов'язкові) інші кодування, засновані на стандарті ISO / IEC 8859, також допустимі інші кодування, наприклад, російські Windows-1251, KOI-8. Часто в тегах принципово не використовують не-латинські літери, в цьому випадку UTF-8 є дуже зручним кодуванням - обсяг, як правило, менше, ніж при UTF-16; декодування може бути виконано як для всього документа, так і для конкретних атрибутів і текстів; весь документ не містить заборонених символів при спробі розбору з неправильною кодуванням.

Кореневий елемент

Найважливіш обов'язкова синтаксична вимога полягає в тому, що документ має тільки один кореневий елемент (англ. root element) (також іноді званий елемент документа (англ. document element)). Це означає, що текст чи інші дані всього документа повинні бути розташовані між єдиним початковим кореневим тегом і відповідним йому кінцевим тегом. Наступний найпростіший приклад - правильно побудований документ XML:

 <book>Це книга: "Книжечка"</book>

Наступний приклад не є коректним XML-документом, бо має два кореневих елементи:

 <thing>Річ  №1</thing>
 <thing>Річ  №2</thing>

Коментар У будь-якому місці дерева може бути розміщений елемент-коментар. XML-коментарі розміщуються всередині спеціального тега, що починається з символів <! -- І закінчується символами -->. Два знака дефіс (--) всередині коментаря не можуть бути присутні. Теги всередині коментаря оброблятися не повинні.

Теги

Інша частина цього XML-документа складається з вкладених елементів, деякі з яких мають атрибути і вміст. Елемент зазвичай складається з відкриваючого і закриваючого тегів, що обрамляють текст та інші елементи. Відкриваючий тег складається з імені елемента в кутових дужках, наприклад, <step>, а закриваючий тег складається з того ж імені в кутових дужках, але перед ім'ям ще додається коса риска, наприклад, </ step>. Імена елементів, як і імена атрибутів, не можуть містити пробіли, але можуть бути будь-якою мовою, що підтримується кодуванням XML-документа. Ім'я може починатися з літери, підкреслення, двокрапки. Рештою символами імені можуть бути ті ж символи, а також цифри, дефіс, крапка.

Вмістом елемента (англ. content) називається все, що розташоване між відкриваючим і закриваючим тегами, включаючи текст та інші (вкладені) елементи. Нижче наведено приклад XML-елементу, який містить відкриваючий тег, закриваючий тег і вміст елемента:

 <step> Замісити ще раз, покласти на деко і поставити в духовку.</step>

Окрім змісту у елемента можуть бути атрибути - пари ім'я-значення, що додаються в відкриваючий тег після назви елемента. Значення атрибутів завжди беруться в лапки (одинарні або подвійні), одне і те ж ім'я атрибута не може зустрічатися двічі на одному елементі. Не рекомендується використовувати різні типи лапок для значень атрибутів одного тега.

 <ingredient amount="3" unit="стакан">Мука</ingredient>

У наведеному прикладі у вікні "ingredient» є два атрибути: «amount», що має значення «3», і «unit», що має значення «стакан». З точки зору XML-розмітки, наведені атрибути не несуть ніякого сенсу, а є просто набором символів.

Крім тексту, елемент може містити інші елементи:

 <instructions>
  <step> Змішати всі інгредієнти і ретельно замісити.</step>
  <step>Закрити тканиною і лишити на одну годину  в теплому приміщені.</step>
  <step> Замісити ще раз, покласти на деко і поставити в духовку.</step>
 </instructions>

В даному випадку елемент «instructions» містить три елементи «step».

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

Для позначення елемента без змісту, званого порожнім елементом, необхідно застосовувати особливу форму запису, що складається з одного тега, в якому після імені елемента ставиться коса риса. Якщо в DTD елемент не оголошено порожнім, але в документі він не має змісту, для нього допускається застосовувати наступні (три) форми запису. наприклад:

 <foo></foo>
 <foo />
 <foo/>   
 

Спецсимволи

У XML визначені два методи запису спеціальних символів: посилання на сутність і посилання на номер символу. Сутністю (англ. entity) в XML називаються іменовані дані, які зазвичай текстові, зокрема, спецсимволи. Посилання на сутність (англ. entity references) вказується в тому місці, де повинна бути сутність і складається з амперсанда (&), імені сутності та крапки з комою (;).

У XML є кілька визначених сутностей, таких як lt (посилатися на неї можна написавши <) для лівої кутової дужки і amp (посилання - &) для амперсанда. Можливо також визначати власні сутності. Крім запису за допомогою сутностей окремих символів, їх можна використовувати для запису текстових блоків які часто зустрічаються.

Нижче наведено приклад використання зумовленої суті для уникнення використання знака амперсанда у назві:

 <company-name>AT&T</company-name>

Повний список зумовлених сутностей складається з & (&), < (<),> (>), ' (') та " (") - останні дві корисні для запису роздільників всередині значень атрибутів. Визначити свої суті можна в DTD-документі.

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

Посилання за номером символу (англ. numeric character reference) виглядає як посилання на сутність, але замість імені суті вказується символ # і число (в десятковій або шістнадцятковій запису), що є номером символу в кодової таблиці Юнікод. Це звичайно символи, які неможливо закодувати безпосередньо, наприклад, буква арабського алфавіту в ASCII-кодованому документі. Амперсанд може бути представлений таким чином:

 <company-name>AT&T</company-name>

Існують і інші правила, що стосуються складання коректного XML-документа.

Особисті інструменти
Простори назв

Варіанти
Дії
Навігація
Інструменти