此xpath表达式返回文本值列表:
/some/xpath/expression/@Image
(此表达式返回多个值)
还有另一个xpath表达式:
/other/xpath/expression[starts-with(@Image, 'value')]
我需要选择给定遗产的所有/other/xpath/expression/@Image
属性,这些属性的值以我使用/some/xpath/expression/@Image
获得的值之一开始。我该如何组合这些表达式?这可能吗?我需要这样的东西
/other/xpath/expression[starts-with(@Image, /some/xpath/expression/@Image)]
答案 0 :(得分:1)
这个XPath,
/some/xpath/expression/@Image[starts-with(.,'value')]
将选择给定遗产的所有@Image
属性,其值以字符串value
开头。
更新以解决评论中的后续行动:
如果'value'
不是文字,而是要从文档的其他位置获取,只需将'value'
替换为选择值的XPath:
/some/xpath/expression/@Image
[starts-with(., /other/xpath/expression/@Image)]
答案 1 :(得分:1)
如果我们绑定一些变量,它可能更清楚:
<xsl:variable name="S" as="xs:string*" select="/some/xpath/expression/@Image"/>
还有另一个xpath表达式:
<xsl:variable name="O" as="xs:string*" select=/other/xpath/expression"/>
我需要选择all / other / xpath / expression / @ Image属性,其值以$ s中的值开头。
那将是
$O[some $s in $S satisfies(starts-with(., $s)]
技术说明:在XPath中很少需要这样的表达式,但它发生在这里是因为您正在进行不是等连接的连接。为此,您需要两个范围变量:上下文项"."
可用于其中一个,但另一个需要明确。在XSLT中,有时可以使用current()
作为第二个范围变量。