跳到主要内容

JEP 268:XML 目录

概括

开发支持OASIS XML 目录标准 v1.1 的标准 XML 目录 API 。 API 将定义目录和目录解析器抽象,这些抽象可以与接受解析器的 JAXP 处理器一起使用。

非目标

新 API 无意复制现有的内部目录实现。换句话说,无意提供兼容的 API 或维护源代码或二进制兼容性。使用内部 API 的现有库或应用程序需要迁移到新 API 才能利用新功能。

动机

XML 目录在解析 XML/XSD/XSL 中的外部引用时非常有用,无需重复检索外部资源。在某些情况下,需要 XML 目录来确保应用程序在导入的 XML 资源的源与原始资源不同的本地环境中正常工作。

XML 目录还可以通过将远程外部引用定向到本地目录然后禁止检索外部资源来提高应用程序安全性。

从 JDK 6 开始,JDK 中就包含了内部目录解析器。由于缺乏公共 API,它已被外部库/应用程序直接使用或引用。它还在 Maven 存储库中捆绑和交付,并由 JAX-WS/JAXB 等应用程序使用(请参见com.sun.xml.ws.util.xml.XmlUtil)。需要一个标准的 API,这样该功能才能真正得到支持。

描述

XML Catalog API 将根据OASIS XML Catalogs 标准 v1.1定义以下接口。它将为 Catalog 标准的核心功能提供直接支持,实现EntityResolverURIResolver接口:

  • 将管理 XML Catalog 和s 以及功能和属性CatalogManager的创建。CatalogResolver

  • ACatalog将实现 OASIS Open Catalog 文件的语义。它将定义一个实体目录,将外部标识符和 URI 引用映射到(其他)URI 引用,并委托给其他目录。

  • ACatalogResolver将实现 JAXP 的现有EntityResolverURIResolver接口。解析器将支持 OASIS 标准处理指令作为 SAX XMLFilter

该 JEP 还建议在公共 API 交付后删除内部目录解析器实现。

新的 API 将符合当前规范版本 1.1,该版本与OASIS 技术决议 9401:1997(TR 9401 的修正案 2)兼容,这是内部目录解析器所基于的。