【发布时间】:2022-01-20 19:31:46
【问题描述】:
我开始学习 XSLT/XPath,我从学习指南中复制了以下内容,并进行了一些修改:
<xsl:variable name="fname" select="'polist.xml'"/>
<xsl:variable name="thePath" select="'/collection/doc'"/>
...
<xsl:value-of select="count(doc($fname)/collection/doc)"/>
它报告 XML 文件中 doc 元素的数量。 doc() 函数接受文件名变量“fname”。但是,如果我尝试对 count() 函数中的 'thePath' 变量执行相同的操作,使用 $thePath 而不是“/collection/doc”文本,则会出现错误。
关于是否/如何在 count() 函数中使用“thePath”变量的建议?可能吗?谢谢!
【问题讨论】:
-
在 XSLT 3.0 中,您可以使用
xsl:evaluate指令将 string 转换为 expression:w3.org/TR/xslt-30/#dynamic-xpath -
您使用哪个版本的 XSLT 和/或 XPath?
doc函数的使用表明它应该是 XPath 2.0 或更高版本,并且count($thePath)应该可以工作,计算变量绑定到的单个字符串值。即给出值1。因此,这可能不是您想到的用例。正如其他人评论或回答的那样,XSLT 3 有xsl:evaluate来评估表示 XPath 表达式的字符串。
标签: xslt