0

声明如下:

<xsl:import href="plugin:org.dita.xhtml:xsl/dita2html-base.xsl"/>

我是 XSL 的新手。我知道 href 属性需要一个 URI,但 href 值如何解析为上述语句中的 URI。此代码是 DITA-OT 中 xhtml 插件的 xsl 的一部分。像这样的说法有很多。这些是来自根目录的相对路径吗?DITA-OT 代码如何解析这些路径?

4

1 回答 1

2

如果您查看 DITA-OT 的根安装文件夹,您会发现一个名为catalog-dita.xml的文件。这是一个XML 目录,旨在为 XML 实体提供解析方案。摘自 XML 目录规范的摘要:

这个 OASIS 标准定义了一个实体目录,它将外部标识符和任意 URI 引用映射到 URI 引用。

打开catalog-dita.xml文件,然后搜索plugin:org.dita.xhtml. 你会发现这个条目:

<rewriteURI uriStartString='plugin:org.dita.xhtml:' rewritePrefix='plugins/org.dita.xhtml/'/>

因此,具有以开头的引用 uri的任何<xsl:import href="...">(以及<xsl:include href="...">and函数)都将被“重定向”该文件夹,以便在您的情况下,将搜索相对于 DITA-OT 安装文件夹的文件。document()plugin:org.dita.xhtml:plugins/org.dita.xhtml/plugins/org.dita.xhtml/xsl/dita2html-base.xsl

但是这个目录是如何使用的呢?

例如在$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>这里是一个任务),该目录将为转换期间所需的所有资源提供适当的 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 目录。

于 2015-10-22T09:41:29.437 回答