--- language: xml filename: learnxml-ru.xml contributors: - ["João Farias", "https://github.com/JoaoGFarias"] translators: - ["Dmitry Bessonov", "https://github.com/TheDmitry"] lang: ru-ru --- XML - это язык разметки, предназначенный для хранения и передачи данных. В отличие от HTML, XML не определяет, как отображать или форматировать данные, он только содержит их. * XML-Синтаксис ```xml <!-- Комментарии в XML выглядят вот так --> <?xml version="1.0" encoding="UTF-8"?> <bookstore> <book category="КУЛИНАРИЯ"> <title lang="ru">Итальянская кухня каждый день</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book> <book category="ДЕТИ"> <title lang="ru">Гарри Поттер</title> <author>Дж. К. Роулинг</author> <year>2005</year> <price>29.99</price> </book> <book category="ВСЕМИРНАЯ ПАУТИНА"> <title lang="ru">Изучаем XML</title> <author>Эрик Рэй</author> <year>2003</year> <price>39.95</price> </book> </bookstore> <!-- Вышеописанный документ - типичный XML-файл. Он начинается с определения, объявляющего о некоторых метаданных (необязательно). XML использует древовидную структуру. У вышеописанного документа корневой узел - 'bookstore', который содержит три дочерних узла - все 'book'-узлы. Такие узлы содержат еще дочерние узлы и т.д. Узлы создаются с помощью открывающих/закрывающих тегов, а дочерние узлы - это узлы между открывающимися и закрывающимися тегами.--> <!-- XML содержит в себе два типа данных: 1 - Атрибуты -> Это метаданные узлов. Обычно XML-парсер использует эту информацию, чтобы хранить свойства данных. Атрибут изображается путем вписывания его в скобки в пределах открытого тега 2 - Элементы -> Это чистые данные. Это то, что парсер извлечет из XML-файла. Элементы идут между открытыми и закрытыми тегами без скобок. --> <!-- Ниже элемент с двумя атрибутами --> <file type="gif" id="4293">компьютер.gif</file> ``` * Хорошо отформатированный документ x Проверка достоверности XML-документ хорошо отформатирован, если он синтаксически верный. Впрочем, в документ возможно ввести больше ограничений, используя определения документа, вроде DTD и XML-схемы. XML-документ, который следует описанию документа, называется корректным, относительно этого документа. С таким инструментом вы можете проверить XML-данные вне логики приложения. ```xml <!-- Ниже вы можете увидеть упрощенную версию документа книжного магазина, с дополнением DTD-определения.--> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE note SYSTEM "Bookstore.dtd"> <bookstore> <book category="КУЛИНАРИЯ"> <title >Итальянская кухня каждый день</title> <price>30.00</price> </book> </bookstore> <!-- Этот DTD может быть чем-то вроде:--> <!DOCTYPE note [ <!ELEMENT bookstore (book+)> <!ELEMENT book (title,price)> <!ATTLIST book category CDATA "Литература"> <!ELEMENT title (#PCDATA)> <!ELEMENT price (#PCDATA)> ]> <!-- DTD начинается с объявления. Затем объявляется корневой узел, требующий 1 или более дочерних узлов 'book'. Каждый 'book' должен содержать точно один 'title' и 'price', и атрибут, называемый 'category', со значением "Литература" по умолчанию. Узлы 'title' и 'price' содержат анализируемые символьные данные.--> <!-- DTD может быть объявлен в самом XML-файле.--> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE note [ <!ELEMENT bookstore (book+)> <!ELEMENT book (title,price)> <!ATTLIST book category CDATA "Литература"> <!ELEMENT title (#PCDATA)> <!ELEMENT price (#PCDATA)> ]> <bookstore> <book category="КУЛИНАРИЯ"> <title >Итальянская кухня каждый день</title> <price>30.00</price> </book> </bookstore> ```