跳到主要内容

JEP 268:XML 目录

QWen Max 中英对照

概述

开发一个支持 OASIS XML Catalogs 标准 v1.1 的标准 XML Catalog API。该 API 将定义 catalog 和 catalog-resolver 抽象,可以与接受解析器的 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 目录 API 将根据 OASIS XML 目录标准 v1.1 定义以下接口。它将为核心目录标准的功能提供直接支持,实现 EntityResolverURIResolver 接口:

  • CatalogManager 将管理 XML 目录和 CatalogResolver 的创建,以及相关特性和属性。

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

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

该 JEP 还建议在公共 API 推出后移除内部目录解析器实现。

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