【问题标题】:Get file name using xsl使用 xsl 获取文件名
【发布时间】:2010-10-09 15:18:09
【问题描述】:

如何使用 xsl 1.0 获取文件名?

我试过了

<xsl:value-of select="base-uri()" />

但得到“致命错误!找不到函数:base-uri”

【问题讨论】:

    标签: xslt xslt-1.0


    【解决方案1】:

    在 XSLT v1/XPath v1 中没有这样的 XPath 函数或 XPath 函数的 XSLT 扩展来执行此操作。

    很可能没有文件,即使 XSLT 引擎没有理由使用该文件名(考虑将文件内容加载到缓冲区中,将缓冲区解析为 DOM,然后传递DOM 到 XSLT 处理器)。

    您需要将文件名传递给处理器,以便在转换中作为参数使用。

    【讨论】:

    • 如果你只想要一个“使用样式表 x 创建”的评论,那就太烦人了:-(
    • -1:在 XPath 2.0 中有这样的功能(见其他答案)
    • @NormanGray:问题的结尾清楚地表明这是 XSLT v1,因此存在这样的 V2 功能是无关紧要的。
    • @Richard:啊哈,完全正确——我没有发现问题中的限定条件(不幸的是,除非编辑答案,否则我似乎无法撤消反对票)。
    • @NormanGray:有一个突出的错字,澄清永远不会伤害所以现在编辑。
    【解决方案2】:

    base-uri() 是一个标准的 XPath 2.0 函数,因此在运行 XSLT 1.0 时该函数将不可用。

    在 XSLT 1.0 中,文件名(什么?)可以作为参数传递用于转换。

    请注意,并非总是可以为样式表或 XML 文档生成文件名——其中一个或两个都可能驻留在内存中而没有相关文件。

    从问题中不清楚必须生成哪个文件名。

    这是在 XPath 2.0 / XSLT 2.0 中查找文件名的方法

    当前文档的文件名:

     base-uri()
    

    当前样式表模块的文件名:

      base-uri(document(''))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多