需要帮助理解来自DITA-OT xsl的xsl import语句

时间:2015-07-21 10:01:30

标签: xml xslt dita-ot

声明如下:

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

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

1 个答案:

答案 0 :(得分:2)

如果您查看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="...">开头的引用uri的<xsl:include href="...">(以及document()plugin:org.dita.xhtml:函数)都将被“重定向”到文件夹{{1}所以在你的情况下,将搜索相对于DITA-OT安装文件夹的文件plugins/org.dita.xhtml/

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

例如在plugins/org.dita.xhtml/xsl/dita2html-base.xsl中(它在DITA-OT中广泛使用,因此可以在几乎所有build_xxx.xml文件中找到这些指令),你会发现类似的东西:

$DITAOT_DIR$\plugins\org.dita.xhtml\build_general.xml

这是为了调用XSL-T转换(<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> 这里是任务),其目录将为转换期间所需的所有资源提供适当的URI映射。显然,<xslt>是对其他地方声明的目录的引用。

打开dita.catalog,您会发现:

$DITAOT_DIR$\plugins\org.dita.basebuild_init.xml

指向最初打开的XML目录。