【发布时间】:2010-10-09 15:18:09
【问题描述】:
如何使用 xsl 1.0 获取文件名?
我试过了
<xsl:value-of select="base-uri()" />
但得到“致命错误!找不到函数:base-uri”
【问题讨论】:
如何使用 xsl 1.0 获取文件名?
我试过了
<xsl:value-of select="base-uri()" />
但得到“致命错误!找不到函数:base-uri”
【问题讨论】:
在 XSLT v1/XPath v1 中没有这样的 XPath 函数或 XPath 函数的 XSLT 扩展来执行此操作。
很可能没有文件,即使 XSLT 引擎没有理由使用该文件名(考虑将文件内容加载到缓冲区中,将缓冲区解析为 DOM,然后传递DOM 到 XSLT 处理器)。
您需要将文件名传递给处理器,以便在转换中作为参数使用。
【讨论】:
base-uri() 是一个标准的 XPath 2.0 函数,因此在运行 XSLT 1.0 时该函数将不可用。
在 XSLT 1.0 中,文件名(什么?)可以作为参数传递用于转换。
请注意,并非总是可以为样式表或 XML 文档生成文件名——其中一个或两个都可能驻留在内存中而没有相关文件。
从问题中不清楚必须生成哪个文件名。
这是在 XPath 2.0 / XSLT 2.0 中查找文件名的方法:
当前文档的文件名:
base-uri()
当前样式表模块的文件名:
base-uri(document(''))
【讨论】: