XML
Что такое DOM и SAX?
SAX
- Парсер, основанный на событиях (последовательность событий).
- SAX анализирует файл по мере его чтения, то есть разбирает узел по узлу.
- Нет ограничений памяти, так как он не хранит содержимое XML в памяти.
- SAX доступен только для чтения, т. Е. Не может вставить или удалить узел.
- Используйте синтаксический анализатор SAX, когда объем содержимого большой.
- SAX читает XML-файл сверху вниз, а обратная навигация невозможна.
- Быстрее во время выполнения.
Как выбрать между SAX и DOM
Использовать вам DOM или SAX, зависит от нескольких факторов:
- Назначение приложения: Если вы собираетесь делать изменения в данных и выводить их как XML, то в большинстве случаев способом для этого является DOM. Нельзя сказать, что вы не можете делать изменения при использовании SAX, но этот процесс значительно более сложен, так как вы должны делать изменения в копии данных, а не в самих данных.
- Объем данных: Для больших файлов SAX является лучшим выбором.
- Как будут использованы данные: Если на самом деле будет использована только небольшая часть данных, вам, возможно, лучше применить SAX, чтобы выделить ее в ваше приложение. С другой стороны, если вы знаете, что вам придется ссылаться назад в большом объеме информации, которая уже была обработана, SAX, возможно, не является правильным выбором.
- Требования к быстродействию: реализации SAX обычно быстрее, чем реализации DOM.
Важно помнить, что SAX и DOM не являются взаимоисключающими. Вы можете использовать DOM для создания потока событий SAX, и вы можете использовать SAX для создания дерева DOM. Фактически, большинство парсеров, применяемых для создания дерева DOM, используют SAX, чтобы сделать это!
XSD - умный XML
XSD - это язык описания структуры XML документа. Его также называют XML Schema. При использовании XML Schema XML парсер может проверить не только правильность синтаксиса XML документа, но также его структуру, модель содержания и типы данных.
Такой подход позволяет объектно-ориентированным языкам программирования легко создавать объекты в памяти, что, несомненно, удобнее, чем разбирать XML как обычный текстовый файл.
Кроме того, XSD расширяем, и позволяет подключать уже готовые словари для описания типовых задач, например веб-сервисов, таких как SOAP.
Стоит также упомянуть о том, что в XSD есть встроенные средства документирования, что позволяет создавать самодостаточные документы, не требующие дополнительного описания.
XSLT
XSLT (eXtensible Stylesheet Language Transformations) - язык преобразования XML-документов. Спецификация XSLT входит в состав XSL и является рекомендацией W3C.
При применении таблицы стилей XSLT, состоящей из набора шаблонов, к XML-документу (исходное дерево) образуется конечное дерево, которое может быть сериализовано в виде XML-документа, XHTML-документа (только для XSLT 2.0), HTML-документа или простого текстового файла. Правила выбора (и, отчасти, преобразования) данных из исходного дерева пишутся на языке запросовXPath.
XSLT имеет множество различных применений, в основном в области веб-программирования и генерации отчётов. Одной из задач, решаемых языком XSLT, является отделение данных от их представления, как часть общей парадигмы MVC (англ. Model-view-controller). Другой стандартной задачей является преобразование XML-документов из одной XML-схемы в другую.
Процесс выполнения XSLT-преобразования
В процессе выполненияXSLT-преобразования задействованы:
- один или несколько входных XML-документов;
- одна или несколько таблиц стилей XSLT;
- XSLT-процессор;
- один или несколько выходных документов.
В простейшем случае XSLT-процессор получает на входе два документа - входной XML-документ и таблицу стилей XSLT - и создаёт на их основе выходной документ.
XPath
XPath (XML Path Language) - язык запросов к элементам XML-документа. Разработан для организации доступа к частям документа XML в файлах трансформации XSLT и является стандартом консорциума W3C. XPath призван реализовать навигацию по DOM в XML. В XPath используется компактный синтаксис, отличный от принятого в XML.
На данный момент самой популярной версией является XPath 1.0. Это связано с отсутствием поддержки XPath 2.0 со стороны открытых библиотек. В частности, речь идёт о LibXML, от которой зависит поддержка языка в браузерах, с одной стороны, и поддержка со стороны серверного интерпретатора, с другой.
XML имеет древовидную структуру. В самостоятельном XML,-документе всегда имеется один корневой элемент (инструкция <?xml version="1.0"?> к дереву элементов отношения не имеет), в котором допустим ряд вложенных элементов, некоторые из которых тоже могут содержать вложенные элементы. Так же могут встречаться текстовые узлы, комментарии и инструкции. Можно считать, что XML-элемент содержит массив вложенных в него элементов и массив атрибутов.
У элементов дерева бывают элементы-предки и элементы-потомки (у корневого элемента предков нет, а у тупиковых элементов (листьев дерева) нет потомков). Каждый элемент дерева находится на определённом уровне вложенности (далее - "уровень"). Элементы упорядочены в порядке расположения в тексте XML, и поэтому можно говорить об их предыдущих и следующих элементах. Это очень похоже на организацию каталогов в файловой системе.
Строка XPath описывает способ выбора нужных элементов из массива элементов, которые могут содержать вложенные элементы. Начинается отбор с переданного множества элементов, на каждом шаге пути отбираются элементы, соответствующие выражению шага, и в результате оказывается отобрано подмножество элементов, соответствующих данному пути.
XSLT и XPath
XSLT использует язык XPath для доступа к отдельным частям входного XML-документа и для организации вычислений.
XSLT 1.0 использует XPath 1.0, а XSLT 2.0 использует XPath 2.0.