使用xsl获取文件名

joe*_*joe 14 xslt xslt-1.0

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

我试过了

<xsl:value-of select="base-uri()" />
Run Code Online (Sandbox Code Playgroud)

但得到了"致命的错误!无法找到功能:base-uri"

Dim*_*hev 33

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

在XSLT 1.0中,文件名(of what?)可以作为转换参数传递.

请注意,并不总是可以为样式表或XML文档生成文件名 - 其中一个或两个都可能驻留在没有关联文件的内存中.

从问题不清楚必须产生哪个文件名.

以下是在XPath 2.0/XSLT 2.0中查找文件名的方法:

当前文档的文件名:

 base-uri()
Run Code Online (Sandbox Code Playgroud)

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

  base-uri(document(''))
Run Code Online (Sandbox Code Playgroud)


Ric*_*ard 15

在XSLT v1/XPath v1中没有这样的XPath函数或XPath函数的XSLT扩展.

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

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

  • -1:在XPath 2.0中有这样的功能(参见其他答案) (4认同)
  • @NormanGray:问题的结尾清楚地表明这是XSLT v1,因此这种V2函数的存在是无关紧要的. (2认同)