📃 XML
Синтаксис, атрибуты, пространства имён, XPath, XSD и сравнение с JSON.
Шпаргалки · Данные · #xml #markup #data
Пример
<?xml version="1.0" encoding="UTF-8"?>
<catalog xmlns="http://example.com/shop">
<book id="1" lang="ru">
<title>Война и мир</title>
<price currency="RUB">500.00</price>
<!-- комментарий -->
<description><![CDATA[Текст с <символами> & без экранирования]]></description>
</book>
</catalog>
Правила корректности
- Один корневой элемент.
- Каждый открывающий тег закрывается, теги вкладываются правильно.
- Регистр важен:
<Price>и<price>разные. - Значения атрибутов в кавычках.
- Спецсимволы:
<>&"'. - Корректный (well-formed) XML соответствует синтаксису; валидный (valid) ещё и схеме.
XPath
| Выражение | Результат |
|---|---|
/catalog/book |
книги от корня |
//title |
все title в документе |
//book[@id='1'] |
книга с атрибутом |
//book[price>100] |
по условию |
//book[1] |
первая книга (нумерация с 1) |
//book/title/text() |
текст заголовка |
//book/@id |
значение атрибута |
count(//book) |
количество |
Схема XSD (фрагмент)
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="book">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="price" type="xs:decimal"/>
</xs:sequence>
<xs:attribute name="id" type="xs:int" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
Инструменты
xmllint --noout file.xml # проверка синтаксиса
xmllint --schema s.xsd file.xml --noout # проверка по схеме
xmllint --xpath "//title/text()" file.xml
XML или JSON
XML: схемы, пространства имён, XSLT, смешанное содержимое (документы), SOAP, конфиги Java. JSON: компактнее, нативен для JavaScript и REST.