2015-07-21 47 views
0

的声明如下理解XSL import语句:需要帮助从DITA-OT XSL

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

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

+1

我认为'plugin:'是一个已知的并由您使用的软件支持的自定义URI方案,它将实现一个知道如何使用方案'plugin:'处理这些URI的URI解析器。 –

+0

@MartinHonnen你的意思是这样的[链接](http://stackoverflow.com/questions/11864564/xslcompiledtransform-and-custom-xmlurlresolver-an-entry-with-the-same-key-alre)? –

+0

该链接是关于.NET的,但我知道Dita工具包是基于Java的。我不熟悉该工具包的细节,也许别人可以告诉你更多。 –

回答

2

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

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

打开目录,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/,使你的情况,文件plugins/org.dita.xhtml/xsl/dita2html-base.xsl ,相对于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>这里是任务),该目录将为转换过程中所需的所有资源提供适当的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目录。