html - 在HTML文档中,xml可以使用XPath和XQuery工作?

  显示原文与译文双语对照的内容
133 0

我听说,HTML文档不是来自 https://stackoverflow.com/a/39560454的XML文档。

XML文档中的XPath和 XQuery 。他们可以处理HTML文档,为什么?

虽然我不知道为什么, 我猜XPath可以在 HTML documens上工作, 因为 https://www.quora.com/Why-do-we-use-XPath-in-Selenium-even-though-CSS-Selector-is-fasterhttps://html-agility-pack.net/

(如果我也可以问,它们是推荐用于处理HTML文档的工具,还是推荐的一些替代工具?

谢谢。

时间:原作者:0个回答

98 1

XQuery和XPath被定义为处理一个称为XDM的特定数据模型。在XPath 1.0中,这是在XPath规范中描述的;在XQuery和更高版本的XPath版本中,它在单独的规范中定义。XPath和XQuery可以在定义了XDM映射的任何数据上工作。XML和 HTML DOM在XDM的许多细节上都有所不同,但是( 有一点实用主义) 可以定义到XDM的映射,因此可以使XPath对XML和 HTML DOMs运行 。实际上,这些映射都被广泛使用,尽管它们是不完美的,在某些情况下是低效的。

HTML映射到XDM的最大问题是命名空间;XPath实现传统上将HTML元素(例如"table"和"p"视为不在命名空间中因此可以使用诸如 //table//p 之类的路径而不使用名称空间前缀 。但在HTML5中,WhatWG决定这些元素在XHTML命名空间中,这意味着他们必须定义XPath规范的变体以适应这些路径。

CSS选择器慢慢获得了 XPath 1.0的大部分表现力,虽然它们肯定没有后续版本那么丰富,并且因为它们主要是为HTML而不是XML设计的所以它们有时候使用起来会更方便 。我还没有看到任何性能数据,但是浏览器厂商必须花费大量精力来快速制作CSS,并且在过去的15年中他们似乎已经在他们的XPath实现上几乎零开发,所以它如果CSS在大多数浏览器中速度更快,那肯定不会让我感到惊讶。DOM和XDM之间的区别也产生了开销:特别是DOM中名称空间的低效表示。

原作者:
103 4

HTML并不能保证格式良好,因此XML解析器可能无法解析它(除非您使用的是非常有限的HTML子集)。然而XHTML是HTML的良好表现,据我所知在具有相同功能集的浏览器中工作参见:https://www.w3.org/TR/html-polyglot/ ) 。

但是如果已经有了 HTML,那么就需要将它转换成XML以使用 xpath/xquery 。有多种"HTML tidy"实现,可以选择输出有效的XML 。您的XQuery处理器可能提供某种形式的清洁。如果没有,有许多语言和独立实现可以让你达到目的。

原作者:
...