选择属性@id对应当前节点的属性@newid的元素()(仅限XPATH)

问题描述 投票:0回答:1
<content>
<root>
<parametrs @id='par1'><displayText>Text1</displayText></parametrs>
<parametrs @id='par2'><displayText>Text2</displayText></parametrs>
<parametrs @id='par3'><displayText>Text3</displayText></parametrs>
</root>
</content>

...

<paragraph @newid='par3'>Any text</paragraph> 

我用

ancestor::content/root/parametrs[@id = ../@newid]/displayText/
并且没有效果

但是

ancestor::content/root/parametrs[@id = 'par1']/displayText/
是工作
./@newid
就是工作

怎么了?

xpath xslt
1个回答
0
投票

出了什么问题?在谓词(方括号)内,上下文项发生变化,因此“..”从

parametrs
元素中进行选择(因此什么也不选择)。

这是一个连接查询,纯 XPath 1.0 中的连接很棘手(从技术上讲,该语言在关系上并不完整 - 因为它需要范围变量)。 XSLT 中有很多解决方案,但不清楚您是否需要 XSLT 解决方案(您的问题说“ONLY XPATH”,但您已将其标记为 XSLT)。 XPath 2.0+ 中也有简单的解决方案,但您尚未使用 XPath 版本标记问题,所以我不知道 XPath 2.0+ 解决方案对您是否有用。如果您使用的框架(例如 Selenium)尚未采用更新的 XPath 规范,那么您的选择非常有限。

© www.soinside.com 2019 - 2024. All rights reserved.