如果您查看 DITA-OT 的根安装文件夹,您会发现一个名为 catalog-dita.xml 的文件。这是一个XML catalog,旨在为 XML 实体提供解析方案。摘自 XML 目录规范的摘要:
此 OASIS 标准定义了一个实体目录,它将外部标识符和任意 URI 引用映射到 URI 引用。
打开 catalog-dita.xml 文件,然后搜索 plugin:org.dita.xhtml。你会发现这个条目:
<rewriteURI uriStartString='plugin:org.dita.xhtml:' rewritePrefix='plugins/org.dita.xhtml/'/>
因此,任何<xsl:import href="...">(以及<xsl:include href="..."> 和document() 函数)具有以plugin:org.dita.xhtml: 开头的引用uri 将被“重定向”文件夹plugins/org.dita.xhtml/,因此在您的情况下,文件@ 987654330@,相对于DITA-OT安装文件夹,会被搜索到。
但是这个目录是如何使用的呢?
例如在$DITAOT_DIR$\plugins\org.dita.xhtml\build_general.xml 中(它在 DITA-OT 中被广泛使用,因此可能会在几乎所有 build_xxx.xml 文件中找到这些说明),您会发现类似:
<xslt basedir="${dita.temp.dir}" destdir="${output.dir}" includesfile="${dita.temp.dir}${file.separator}${fullditatopicfile}" reloadstylesheet="${dita.xhtml.reloadstylesheet}" classpathref="dost.class.path" extension="${out.ext}" style="${args.xsl}" filenameparameter="FILENAME" filedirparameter="FILEDIR">
<!-- A huge bunch of parameters comes here ... -->
<param name="[...]" expression="[...]"></param>
<xmlcatalog refid="dita.catalog"></xmlcatalog>
</xslt>
这意味着调用 XSL-T 转换(<xslt> 这里是一个ant 任务),该目录将为转换期间所需的所有资源提供适当的 URI 映射。显然,dita.catalog 是对其他地方声明的目录的引用。
打开$DITAOT_DIR$\plugins\org.dita.basebuild_init.xml,你会发现:
<xmlcatalog id="dita.catalog">
<catalogpath path="${dita.plugin.org.dita.base.dir}/catalog-dita.xml"/>
</xmlcatalog>
它指向一开始就打开的 XML 目录。