learnxinyminutes-docs/ru-ru/xml-ru.html.markdown
LanaTim a191e77c94 DTD Compatibility and XML Schema Definitions (#2529)
DTD Compatibility and XML Schema Definitions
2016-10-28 12:01:57 +02:00

146 lines
6.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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>
```
## DTD совместимость и определение XML Schema(схем/структуры)
Поддержка DTDs является повсеместным, потому что это довольно старая технология. К сожалению, современные функции XML как пространств имен(namespaces) не поддерживаются DTDs. Определения XML-схемы (XSDs) предназначены для замены DTDs которая в свою очередь предназначена для определения грамматики XML-документа.
## Ресурсы
* [Валидатор XML (ссылка на английском языке)](http://www.xmlvalidation.com)
## Для будущего прочтения
* [XML Schema Definitions Tutorial (ссылка на английском языке)](http://www.w3schools.com/schema/)
* [DTD руководство (ссылка на английском языке)](http://www.w3schools.com/xml/xml_dtd_intro.asp)
* [XML руководство (ссылка на английском языке)](http://www.w3schools.com/xml/default.asp)
* [использование XPath запросов для парсинга XML (ссылка на английском языке)](http://www.w3schools.com/xml/xml_xpath.asp)