给定这个 XML:
<DocText>
<WithQuads>
<Page pageNumber="3">
<Word>
July
<Quad>
<P1 X="84" Y="711.25" />
<P2 X="102.062" Y="711.25" />
<P3 X="102.062" Y="723.658" />
<P4 X="84.0" Y="723.658" />
</Quad>
</Word>
<Word>
</Word>
<Word>
30,
<Quad>
<P1 X="104.812" Y="711.25" />
<P2 X="118.562" Y="711.25" />
<P3 X="118.562" Y="723.658" />
<P4 X="104.812" Y="723.658" />
</Quad>
</Word>
</Page>
</WithQuads>
我想找到文本为“July”且 Quad/P1/X 属性大于 90 的节点。因此,在这种情况下,它不应返回任何匹配项。但是,如果我使用 GT (>) 或 LT (
So:
//Word[text()='July' and //P1[@X < 90]]
将返回 true,同样
//Word[text()='July' and //P1[@X > 90]]
如何在 P1@X 属性上正确限制这一点?
此外,假设我有多个 Page 元素,用于不同的页码。我将如何另外限制上述搜索以查找具有以下内容的节点text()='July', P1@X < 90
,和页@pageNumber=3
?
一般来说,我认为在 XPath 中使用无前缀 // 是一种坏味道。
尝试这个:-
/DocText/WithQuads/Page/Word[text()='July' and Quad/P1/@X > 90]
你的问题是你使用//P1[@X < 90]
它从文档的开头开始并开始寻找任何P1
因此它永远是真的。相似地//P1[@X > 90]
总是正确的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)