我正在使用兼容 OASIS v 1.1 的解析器(Norm Walsh 的XMLResolver以及下面的目录。但是,我很确定我在这里犯了某种明显的错误(这是我第一次需要使用v 1.1 features),因为尝试解决 OxChapML.dtd 失败。任何人都可以看到明显的错误吗?甚至是微妙的错误?
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE catalog PUBLIC "-//OASIS//DTD XML Catalogs V1.1//EN"
"http://www.oasis-open.org/committees/entity/release/1.1/catalog.dtd">
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
<group xml:base="file:///Volumes/Ac-EDP/DTG/SP%20DTD%20management/OUP_DTD/">
<public publicId="-//OXFORD//DTD OXCHAPML//EN" uri="OxChapML.dtd"/>
<public publicId="-//OXFORD//DTD OXENCYCLML//EN" uri="xEncyclML.dtd"/>
<public publicId="-//OXFORD//DTD OXLAWML//EN" uri="OxLawML.dtd"/>
<public publicId="-//OXFORD//DTD OXSTRUCTML//EN" uri="OxStructML.dtd"/>
<public publicId="-//OXFORD//DTD OXLAWREPML//EN" uri="OxLawRepML.dtd"/>
<public publicId="-//OXFORD//DTD OXBILINGML//EN" uri="OxBilingML.dtd"/>
<public publicId="-//OXFORD//DTD OXMONOLINGML//EN" uri="OxMonolingML.dtd"/>
<public publicId="-//OXFORD//DTD TIMELINES//EN" uri="timelines.dtd"/>
<systemSuffix OxChapML.dtd" systemIdSuffix="OxChapML.dtd"/>
<systemSuffix uri="xEncyclML.dtd" systemIdSuffix="xEncyclML.dtd"/>
<systemSuffix systemIdSuffix="OxLawML.dtd" uri="OxLawML.dtd"/>
<systemSuffix systemIdSuffix="OxStructML.dtd" uri="OxStructML.dtd"/>
<systemSuffix systemIdSuffix="OxLawRepML.dtd" uri="OxLawRepML.dtd"/>
<systemSuffix systemIdSuffix="OxBilingML.dtd" uri="OxBilingML.dtd"/>
<systemSuffix systemIdSuffix="OxMonolingML.dtd" uri="OxMonolingML.dtd"/>
<systemSuffix systemIdSuffix="timelines.dtd" uri="timelines.dtd"/>
</group>
</catalog>
更新:使用元素上的集合,所有public
元素都可以很好地解析。只有那些应该使用失败的元素来解决的元素。因此,如果我有一个使用 PUBLIC 标识符声明其 DocType 的文档,它将毫无问题地解决(我的 CatalogManager.properties 中有一个设置)。但是,如果我只有一个 SYSTEM 标识符(例如“OxChapML.dtd”),这应该与适当的匹配,但事实并非如此。在解析器上打开调试表明它甚至没有尝试通过.xml:base
group
systemSuffix
prefer=public
systemSuffix
systemSuffix