我正在使用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异常。请建议。
答案 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"/>
。但是,这也只是在样式表创作过程中定义的静态值。