JAXP1.3 и синтаксический анализ XML

Начиная с самых ранних версий, JAXP-спецификации, также как и лежащие в их основе спецификации XML и XML Namespaces, были привязаны к конкретным версиям DOM и SAX для гарантии максимальной переносимости построенных на их основе приложений. За три года, прошедших с момента выпуска последней основной версии JAXP (JAXP 1.1), ни одна из этих спецификаций не оставалась статичной. JAXP1.3 основан на самых последних версиях каждой из этих спецификаций, позволяя им пройти свой путь к J2SE и J2EE.

Эволюция стандартов XML
W3C завершил XML 1.0 3rd Edition, XML 1.1, и XML Namespaces 1.1 в начале 2004. JAXP 1.3 требует реализации всех трех спецификаций в совместимых синтаксических анализаторах. В то время как XML 1.0 3rd Edition содержит главным образом разъяснения, которые будут замечены только самыми изощренными XML-приложениями, XML 1.1 должна иметь большое позитивное влияние на мир XML благодаря значительному расширению количества символов, которые могут использоваться в XML-именах. Это достигается прямой совместимостью XML с Unicode Standard, приведением XML и Unicode к общим знакам конца строки и предоставлением включения ссылок на все символы ASCII за исключением 0 (включая все управляющие символы). XML Namespaces 1.1 разрешает префиксам пространства имен не быть объявленными внутри фрагментов документа, что, естественно, соответствует XML 1.1. Дополнительную информацию по этим спецификациям вы можете получить в статье developerWorks «XML 1.1 and Namespaces 1.1 revealed.»

Еще одним продуктом консорциума W3C является XML Inclusions (XInclude) 1.0, в данный момент находящаяся в стадии Proposed Recommendation. XInclude обеспечивает средства, при помощи которых XML-документы могут включать в себя полностью или частично другие XML-документы и текстовые ресурсы. В отличие от XML-сущностей это делается полностью вне среды Document Type Definitions (DTD), и, таким образом, является удобным для проверки корректности XML Schema. Это также сделано и ради пространства имен. Авторы XML-ресурсов с содержимым, общим для многих документов, найдут XInclude бесценным. JAXP 1.3 обеспечивает соответствие всех совместимых реализаций этой спецификации еще до того, как она получит статус W3C Recommendation.

Что касается собственно API синтаксического анализа XML, JAXP поддерживает SAX 2.0.2 и SAX Extensions 1.1, а также DOM Level 3 Core и DOM Level 3 Load and Save. Спецификации DOM Level 3 сами по себе представляют значительную часть новой функциональности, поэтому их рассмотрение выходит за рамки данной статьи. На сайте developerWorks уже присутствуют замечательные статьи по DOM Level 3 Core (см. раздел «Ресурсы»), к которым может обратиться заинтересованный читатель.

Как и каждое незначительное изменение в номере версии, SAX 2.0.2 не отличается радикально от SAX 2.0, который поддерживался в JAXP 1.1. SAX 2.0.1 содержала некоторое количество изменений в совместимости сигнатур (что мешало ее поддержке в JAXP 1.2), таких как добавление конструкторов по умолчанию в определенных в SAX классах exception и добавление IOExceptions в предложение throws обратного вызова EntityResolver#resolveEntity — иначе она была бы фактически идентичной SAX 2.0. Среди других нововведений SAX 2.0.2 определяет:

Спецификация Extensions 1.1 представляет собой значительное улучшение оригинальных расширений SAX. Вот некоторые из нововведений:

Добавить комментарий