xml.md

Личный сайт Go-разработчика из Казани

XML - это язык разметки, предназначенный для хранения и передачи данных.

В отличие от HTML, XML не определяет, как отображать или форматировать данные, он только содержит их.

  • XML-Синтаксис
1<!-- Это комментарий. --> 2 3<?xml version="1.0" encoding="UTF-8"?> 4<bookstore> 5 <book category="КУЛИНАРИЯ"> 6 <title lang="ru">Итальянская кухня каждый день</title> 7 <author>Giada De Laurentiis</author> 8 <year>2005</year> 9 <price>30.00</price> 10 </book> 11 <book category="ДЕТИ"> 12 <title lang="ru">Гарри Поттер</title> 13 <author>Дж. К. Роулинг</author> 14 <year>2005</year> 15 <price>29.99</price> 16 </book> 17 <book category="ВСЕМИРНАЯ ПАУТИНА"> 18 <title lang="ru">Изучаем XML</title> 19 <author>Эрик Рэй</author> 20 <year>2003</year> 21 <price>39.95</price> 22 </book> 23</bookstore> 24 25<!-- Вышеописанный документ - типичный XML-файл. 26 Он начинается с определения, объявляющего о некоторых метаданных (необязательно). 27 28 XML использует древовидную структуру. У вышеописанного документа 29 корневой узел - 'bookstore', который содержит три дочерних узла - все 'book'-узлы. 30 Такие узлы содержат еще дочерние узлы и т.д. 31 32 Узлы создаются с помощью открывающих/закрывающих тегов, 33 а дочерние узлы - это узлы между открывающимися и закрывающимися тегами.--> 34 35 36<!-- XML содержит в себе два типа данных: 37 1 - Атрибуты -> Это метаданные узлов. 38 Обычно XML-парсер использует эту информацию, чтобы хранить свойства данных. 39 Атрибут изображается путем вписывания его в скобки в пределах открытого тега 40 2 - Элементы -> Это чистые данные. 41 Это то, что парсер извлечет из XML-файла. 42 Элементы идут между открытыми и закрытыми тегами без скобок. --> 43 44 45<!-- Ниже элемент с двумя атрибутами --> 46<file type="gif" id="4293">компьютер.gif</file>
  • Хорошо отформатированный документ x Проверка достоверности

XML-документ хорошо отформатирован, если он синтаксически верный. Впрочем, в документ возможно ввести больше ограничений, используя определения документа, вроде DTD и XML-схемы.

XML-документ, который следует описанию документа, называется корректным, относительно этого документа.

С таким инструментом вы можете проверить XML-данные вне логики приложения.

1<!-- Ниже вы можете увидеть упрощенную версию документа книжного магазина, 2 с дополнением DTD-определения.--> 3 4<?xml version="1.0" encoding="UTF-8"?> 5<!DOCTYPE note SYSTEM "Bookstore.dtd"> 6<bookstore> 7 <book category="КУЛИНАРИЯ"> 8 <title >Итальянская кухня каждый день</title> 9 <price>30.00</price> 10 </book> 11</bookstore> 12 13<!-- Этот DTD может быть чем-то вроде:--> 14 15<!DOCTYPE note 16[ 17<!ELEMENT bookstore (book+)> 18<!ELEMENT book (title,price)> 19<!ATTLIST book category CDATA "Литература"> 20<!ELEMENT title (#PCDATA)> 21<!ELEMENT price (#PCDATA)> 22]> 23 24 25<!-- DTD начинается с объявления. 26 Затем объявляется корневой узел, требующий 1 или более дочерних узлов 'book'. 27 Каждый 'book' должен содержать точно один 'title' и 'price', и атрибут, 28 называемый 'category', со значением "Литература" по умолчанию. 29 Узлы 'title' и 'price' содержат анализируемые символьные данные.--> 30 31<!-- DTD может быть объявлен в самом XML-файле.--> 32 33<?xml version="1.0" encoding="UTF-8"?> 34 35<!DOCTYPE note 36[ 37<!ELEMENT bookstore (book+)> 38<!ELEMENT book (title,price)> 39<!ATTLIST book category CDATA "Литература"> 40<!ELEMENT title (#PCDATA)> 41<!ELEMENT price (#PCDATA)> 42]> 43 44<bookstore> 45 <book category="КУЛИНАРИЯ"> 46 <title >Итальянская кухня каждый день</title> 47 <price>30.00</price> 48 </book> 49</bookstore>

DTD совместимость и определение XML Schema(схем/структуры)

Поддержка DTDs является повсеместным, потому что это довольно старая технология. К сожалению, современные функции XML как пространств имен(namespaces) не поддерживаются DTDs. Определения XML-схемы (XSDs) предназначены для замены DTDs которая в свою очередь предназначена для определения грамматики XML-документа.

Ресурсы

Для будущего прочтения