您可能的意思是 的值$xpath
是一个字符串,无论是否是文字,然后您要对其进行评估。说起来不一样:
<xf:var name="xpath" value="/my/xpath/expression"/>
和:
<xf:var name="xpath" value="'/my/xpath/expression'"/>
在第一种情况下,变量$xpath
包含一个 XPath 表达式,当变量需要它的值时会计算该表达式。结果将是一个 XPath 类型,例如字符串、元素,或者通常是任何 XPath 项序列 ( item()*
)。如果你的表达式真的是 say /path/to/foo/bar
,那么结果将是一个由零个或多个元素节点组成的序列 name bar
。
在第二种情况下,请注意引号'
。这意味着 的值$xpath
是一个字符串。
如果您希望另一个 XForms 构造对该字符串执行某些操作,而不是将其作为字符串进行处理,那么您将必须动态地评估该表达式。
有一个功能,saxon:evaluate()
。所以你可以写:
<xf:input ref="saxon:evaluate($xpath)"/>
您必须确保saxon
命名空间前缀在范围内,其中:
xmlns:saxon="http://saxon.sf.net/"
它还有更多内容,即表达式在什么上下文中运行。在大多数情况下,它应该可以工作。