gpt4 book ai didi

php - XPath查询结果顺序

转载 作者:可可西里 更新时间:2023-11-01 12:29:56 26 4
gpt4 key购买 nike

对于 another question,我创建了一些 XML 相关代码,这些代码可以在我的开发机器上运行,但不能在 viper codepad 上运行,我在将其添加到我的答案之前对其进行了测试。

我可以将我的问题减少到 DOMXPath::query() 返回的节点顺序在我的系统和键盘之间不同的程度。

XML: <test>This is some <span>text</span>, fine.</test>

当我查询所有文本节点 //child::text() 结果不同:

Viper Codepad:

#0: This is some 
#1: , fine.
#2: text

我的机器:

#0: This is some 
#1: text
#2: , fine.

我对 xpath 没有那么多经验,所以我明白为什么会发生这种情况,以及它可能如何影响 PHP 实现的返回顺序。

编辑:

进一步的测试表明两个系统的 LIBXML_VERSION 不同:

Viper Codepad: 20626 (2.6.26; 6 Jun 2006)
My Machine...: 20707 (2.7.7; 15 Mar 2010)

最佳答案

从技术上讲,XPath 1.0 返回节点集而不是节点序列。在 XPath 1.0 规范中,没有关于这些节点集顺序的声明 - 实际上,作为集合,它们没有内在顺序。

但是,XSLT 1.0 始终按文档顺序处理 XPath 1.0 返回的节点集,并且由于该先例,人们普遍期望当从 XSLT 以外的语言调用 XPath 时,XPath 结果将按文档顺序排列。但是,规范中没有任何内容可以保证这一点。在 XPath 2.0 中,用户期望成为规范的一部分,路径表达式的结果必须符合文档顺序。

关于php - XPath查询结果顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8195733/

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