【问题标题】:Need help in understanding xsl import statement from DITA-OT xsl需要帮助理解来自 DITA-OT xsl 的 xsl 导入语句
【发布时间】:2015-07-21 10:01:30
【问题描述】:

声明如下:

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

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

【问题讨论】:

  • 我假设 plugin: 是您使用的软件已知并支持的自定义 URI 方案,它将具有 URI 解析器的一些实现,该解析器知道如何使用方案 plugin: 处理这些 URI .
  • @MartinHonnen 你的意思是这样的link
  • 该链接是关于 .NET 的,而我知道 Dita 工具包是基于 Java 的。我对工具包的细节不熟悉,也许其他人可以告诉你更多。

标签: xml xslt dita-ot


【解决方案1】:

如果您查看 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/'/>

因此,任何&lt;xsl:import href="..."&gt;(以及&lt;xsl:include href="..."&gt;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 转换(&lt;xslt&gt; 这里是一个 任务),该目录将为转换期间所需的所有资源提供适当的 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 目录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-11
    • 1970-01-01
    • 2011-05-04
    • 2019-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-27
    相关资源
    最近更新 更多