使用 xsl 获取文件名

Posted

技术标签:

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

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

我试过了

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

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

【问题讨论】:

【参考方案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(''))

【讨论】:

以上是关于使用 xsl 获取文件名的主要内容,如果未能解决你的问题,请参考以下文章

Python由文件名批量获取姓名和考号 [file[:-4] for file in files],生成xsl表格

如何从给定的 XSLT 文件中获取版本号。

xsl 转换器以获取最高值

C# 中的 XSLT 转换 - 如何获取包含文档的有效 URL?

如何使用 JavaScript 获取文件扩展名?

在单元测试期间获取引用项目的路径