XML Введение
============

XML - это язык разметки подобный HTML. Расшифровывается как (англ. Extensible Markup Language - Расширяемый Язык Разметки) и является рекомендацией сообщества W3C в качестве языка разметки общего назначения (W3C recommended). В отличии от остальных языков разметки, XML сам по себе не определён (это означает, что вы должны сами определять используемые теги). Основной целью XML является передача данных между разными системами (даже концептуально разными), такими как интернет.

Много языков базируются на XML; Некоторые примеры: XHTML, MathML, SVG, XUL, XBL, RSS, и RDF. Вы можете создать свой.

"Корректный" XML (правильно сформированный)
-------------------------------------------

### Правила оформления

Для корректного XML документа должны исполняться следующие условия:

* Правильное оформление документа.
* Соблюдаться все синтаксические правила XML.
* Документ должен соответствовать семантическим правилам языка (которые обычно заданны в схеме XML или DTD (англ. **Document Type Definition (en-US)**)).
### Пример

Пример ниже показывает документ с тегом, который не закрывает сам себя и не имеет закрывающего тега (это неправильно оформленный XML документ).


```xml
<message>
    <warning>
        Hello World
    <!--missing </warning> -->
</message>
```


Давайте посмотрим на корректную версию этого документа:


```xml
<message>
    <warning>
         Hello World
    </warning>
</message>
```


Документ содержащий неопределённый тег является не корректным. Например, если мы не определили тег `<warning>`, документ не корректен.

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

Сущности
--------

HTML и XML предлагают методы (которые называют сущности) для обращения к специальным зарезервированным символам (например угловые скобки, обозначающие начало и конец тега). Существует пять сущностей, которые вы обязательно должны знать:

| Сущность | Символ | Описание |
| --- | --- | --- |
| &lt; | < | Знак меньше (одна из угловых скобок) |
| &gt; | > | Знак больше (одна из угловых скобок) |
| &amp; | & | Амперсанд |
| &quot; | " | Двойная кавычка |
| &apos; | ' | Одинарная кавычка (апостроф) |

Не смотря на то, что по умолчанию создано всего пять сущностей, вы можете добавить в документ свои сущности используя Document Type Definition (en-US). Например, создать новую `&warning;` сущность, можно так:
```

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE body [
  <!ENTITY warning "Предупреждение: произошла ошибка, обновите и попробуте ещё раз.">
]>
<body>
  <message> &warning; </message>
</body>
```


Также вы можете использовать нумерические ссылки для специфический специальных символов. Например, &#xA9; - это символ "©".

Отображение XML
---------------

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

Один из методов отображения XML - указать CSS (чтобы использовать в документе нужно прописать инструкцию `xml-stylesheet`, как показано в примере ниже).
```

<?xml-stylesheet type="text/css" href="stylesheet.css"?>
```


Есть также много других мощных методов отображения XML, например, XSLT(англ. **Extensible Stylesheet Language Transformations**), который может использоваться для преобразование XML в другие языки такие, как HTML. Это делает XML очень универсальным.
```

<?xml-stylesheet type="text/xsl" href="transform.xsl"?>
```

Рекомендации
------------

Эта статья является очень маленьким введением в XML, с очень маленьким количеством примеров и ссылок для того, чтобы вы могли начать работать с этим языком. Чтобы больше узнать про XML, вам придётся искать информацию и более информативные статьи в интернете.

Изучайте HTML (англ. HyperText Markup Language), знание HTML поможет вам лучше понять XML.

Смотрите также
--------------

* XML.com
* Extensible Markup Language (XML) @ W3.org
* XML Example: A List Apart
* Using XML: A List Apart

Статья Using XML - отличный ресурс с большим количеством информации о создании своего языка на основе XML.