gpt4 book ai didi

xpath - normalize-space(.) 和 normalize-space(text()) 有什么区别?

转载 作者:行者123 更新时间:2023-12-03 11:35:22 27 4
gpt4 key购买 nike

我正在编写一个 XPath 表达式,但我修复了一个奇怪的错误,但是以下两个 XPath 表达式之间有什么区别?

"//td[starts-with(normalize-space()),'Posted Date:')]"


"//td[starts-with(normalize-space(text()),'Posted Date:')]"  

主要是,第一个 XPath 表达式将捕获什么?因为我得到了很多奇怪的结果。那么 text() 是什么意思?使匹配?另外,如果我说 normalize-space()有区别吗? & normalize-space(.) ?

最佳答案

好吧,真正的问题是:. 之间有什么区别?和 text() ?
.是当前节点。如果你在需要字符串的地方使用它(即作为 normalize-space() 的参数),引擎会自动将节点转换为节点的字符串值,对于一个元素,它是元素内连接的所有文本节点。 (因为我猜这个问题实际上是关于元素的。)
text()另一方面,只选择作为当前节点的直接子节点的文本节点。

例如,给定 XML:

<a>Foo
<b>Bar</b>
lish
</a>

并假设 <a>是您当前的节点, normalize-space(.)将返回 Foo Bar lish ,但是 normalize-space(text())会失败,因为 text()返回两个文本节点( Foolish )的节点集,其中 normalize-space()不接受。

长话短说,如果你想规范化一个元素中的所有文本,使用 . .如果要选择特定文本节点,请使用 text() ,但永远记住,尽管它的名字, text()返回一个节点集,如果它只有一个元素,它只会自动转换为字符串。

关于xpath - normalize-space(.) 和 normalize-space(text()) 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5992177/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com