如何使用xsl 1.0获取文件名?
我试过
<xsl:value-of select="base-uri()" />
但得到“致命错误!无法找到功能:base-uri”
答案 0 :(得分:33)
base-uri()
是标准的XPath 2.0函数,因此在运行XSLT 1.0时,此函数将不可用。
在XSLT 1.0中,文件名(什么?)可以作为参数传递进行转换。
请注意,无法始终为样式表或XML文档生成文件名 - 其中一个或两个都可能驻留在没有关联文件的内存中。
从问题中不清楚必须生成哪个文件名。
以下是在XPath 2.0 / XSLT 2.0中查找文件名的方法:
当前文件的文件名:
base-uri()
当前样式表模块的文件名:
base-uri(document(''))
答案 1 :(得分:15)
在XSLT v1 / XPath v1中没有这样的XPath函数或XPath函数的XSLT扩展。
很可能没有文件,即使XSLT引擎没有理由拥有该文件名(考虑将文件内容加载到缓冲区中,将缓冲区解析为DOM然后传递DOM到XSLT处理器)。
您需要将文件名传递给处理器,以便在变换中作为参数使用。