XPath 1.0 — это язык запросов для адресации узлов в документе XML. Его ввели и приняли в качестве рекомендации W3C в 1999 году. Первоначально он мотивировался желанием обеспечить общий синтаксис для XPointer и XSLT. XPath 1.0 может быть использован непосредственно внутри Java или встроен в такие языки, как XSLT, XQuery или схема XML.
Миссия проекта XML Query заключается в предоставлении гибкой системы запросов для извлечения данных из документов. Развитие XQuery 1.0 усилиями рабочей группы XML Query было тесно скоординировано с развитием XSLT 2.0 рабочей группой XSL. Эти две группы несут общую ответственность за XPath 2.0, которая представляет собой подмножество XQuery 1.0. XQuery 1.0 стал рекомендацией W3C 23 января 2007 года.
DOM — это древоподобный интерфейс для представления и взаимодействия с содержимым, структурами и стилями в HTML-, XHTML- и XML-документах. В начале существования DOM был попыткой разработать стандарт для языков сценариев, используемый в браузерах. Текущая версия спецификации DOM, DOM Level 3, поддерживает XPath, а также интерфейс для сериализации документов в формате XML.
SAX является первым широко принятым API для XML в Java. Это потоковый, основанный на событиях интерфейс для анализа XML-данных. SAX был первоначально реализован в Java, но теперь поддерживается почти во всех основных языках программирования.
С самого начала разработка спецификаций XML была связана с повышением удобства использования XML.
В табл. 12.3 приведены некоторые спецификации для технологий XML.
Таблица 12.3.Спецификации W3C для XML
Спецификация |
Версия |
URL |
Extensible Markup Language (XML) |
1.1 |
http://www.w3.org/TR/xml11/ |
XML Schema |
1.0 |
http://www.w3.org/TR/xmlschema-1 |
Extensible Stylesheet (XSLT) |
1.0 |
http://www.w3.org/TR/xslt |
XML Path (XPath) |
1.0 |
http://www.w3.org/TR/xpath |
Document Object Model (DOM) |
level 3 |
http://www.w3.org/TR/DOM-Level-3-Core/ |
Simple API for XML (SAX) |
2.0.2 |
http://sax.sourceforge.net/
Спецификации XML в Java
Экосистема XML была создана W3C. Однако поскольку она работает рука об руку с Java, есть несколько связанных с XML спецификаций, которые были созданы в рамках JCP. Примеров множество — от обработки XML до связывания документов с объектами Java.
JAXP (Java Architecture for XML Processing — архитектура Java для обработки XML) — это низкоуровневая спецификация (JSR 206), которая дает возможность очень гибко обрабатывать XML, а также позволяет использовать SAX, DOM или XSLT. Этот API также применяется JAXB и StAX.
Спецификация JAXB обеспечивает набор API-интерфейсов и аннотаций для представления XML-документов как артефактов Java, что позволяет работать с соответствующими объектами Java. JAXB (JSR 222) обрабатывает демаршалинг документов XML в объекты и наоборот. Даже если JAXB можно использовать для работы с XML, он тесно интегрирован с JAX-WS (смотрите главу 14).
StAX (Streaming API for XML — потоковый API для XML) версии 1.0 (JSR 173) представляет собой API для чтения и записи XML-документов. Основным направлением его деятельности является использование преимуществ древоподобных API (анализаторов DOM) и API, основанных на событиях (анализаторов SAX). Первые позволяют получить произвольный, неограниченный доступ к документу, в то время как вторые занимают меньше памяти и предъявляют меньше требований к процессору.
В табл. 12.4 перечислены все спецификации Java, связанные с XML.
Таблица 12.4.Спецификации, связанные с XML
Спецификация |
Версия |
JSR |
URL |
JAXP |
1.3 |
206 |
http://jcp.org/en/jsr/detail?id=206 |
JAXB |
2.2 |
222 |
http://jcp.org/en/jsr/detail?id=222 |
StAX |
1.0 |
173 |
http://jcp.org/en/jsr/detail?id=173
Примеры реализаций
Основная цель примеров реализаций (Reference Implementation, RI) — это поддержка разработки спецификаций и их проверка. StAX RI является примером реализации для спецификации JSR-173, которая основана на стандартном анализаторе потоковой модели. StAX был включен в JDK, начиная с версии 1.6, и может быть загружен отдельно для JDK версий 1.4 и 1.5. RI для спецификации JAXP интегрирован в Java SE, как и Metro, который является примером реализации JAXB. Metro — это высококачественная реализация JAXB, которая используется в некоторых продуктах компании Oracle.
Архитектура Java для обработки XML
Архитектура Java для обработки XML (Java Architecture for XML Processing, JAXP) представляет собой API, который обеспечивает общий, независимый от реализации интерфейс для создания и использования SAX, DOM и XSLT API в Java.
До появления JAXP существовали разные несовместимые версии анализаторов и преобразователей XML от различных поставщиков. JAXP предоставил уровень абстракции поверх этих реализаций конкретных производителей API для анализа и преобразования XML-ресурсов.
|
|
Читать дальше