【问题标题】:how to give relative path into href if xsl:import如果xsl:import,如何将相对路径提供给href
【发布时间】:2014-08-21 07:33:09
【问题描述】:

我使用的是 xslt 1.0。

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

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

我厌倦了以下代码

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

&lt;xsl:import href="{concat(Systemprop:getProperty('docRootPath'),'/xsl/file/A.xsl')}"&gt;

其中 docrootPath = c:/test/testdata

但它给出了错误:元素类型“xsl:variable”必须后跟属性规范,“>”或“/>”。

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

【问题讨论】:

    标签: xslt


    【解决方案1】:

    参见规范http://www.w3.org/TR/xslt#section-Combining-Stylesheets,它定义了包含和导入的语法

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

    所以href 属性值需要是一个URI 引用,那里既不允许使用表达式也不允许使用属性值模板。因此,无法输入像 concat(...) 这样的 XPath 表达式,也不支持。

    当然可以使用相对 URI 引用,但您需要确保正确定义基本 URI,例如使用 &lt;xsl:import xml:base="file:///C:/test/testdata/" href="file.xml"/&gt;。然而,这也只是在样式表创作期间定义的静态值。

    【讨论】:

    • 嗨,非常感谢您的回答,但我的问题是我无法使用 xml :base,因为我正在使用 XSLT 1.0。还有其他解决方案吗??
    • 使用单个样式表我看不到方法,应该可以使用一个预转换步骤来创建具有您想要的 href 值的 XSLT。该步骤也可以使用 XSLT。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    • 2012-03-23
    • 2013-04-06
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多