如果xsl:import,如何给href提供相对路径

时间:2014-08-21 07:33:10

标签: xslt

我正在使用xslt 1.0。

我想将A.xsl导入B.xsl。

我无法在xsl:import的href属性中使用相对路径。对于前path是c:/test/testdata/xsl/file/A.xsl

我厌倦了以下代码

 <xsl:variable name="filePath" select="concat(Systemprop:getProperty('docRootPath'),'/xsl/file/A.xsl')" />

和     <xsl:import href="{concat(Systemprop:getProperty('docRootPath'),'/xsl/file/A.xsl')}">

其中docrootPath = c:/ test / testdata

但是它给出错误:元素类型&#34; xsl:variable&#34;必须遵循属性规范,&#34;&gt;&#34;或&#34; /&gt;&#34;。

但它给了我:样式表文件有IO异常。请建议。

1 个答案:

答案 0 :(得分:0)

请参阅规范http://www.w3.org/TR/xslt#section-Combining-Stylesheets,它将include和import的语法定义为

<!-- Category: top-level-element -->
<xsl:include
  href = uri-reference />

<xsl:import
  href = uri-reference />

因此href属性值需要是URI引用,在那里既不允许表达式也不允许使用属性值模板。因此,不支持放置像concat(...)这样的XPath表达式。

当然可以使用相对URI引用,但是您需要确保正确定义基URI,例如执行<xsl:import xml:base="file:///C:/test/testdata/" href="file.xml"/>。但是,这也只是在样式表创作过程中定义的静态值。