使用 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表格