【问题标题】:Using the selector API with XML documents将选择器 API 与 XML 文档一起使用
【发布时间】:2014-01-08 06:22:21
【问题描述】:

小问题:选择器 API 是否适合处理 XML 文档?

更长的问题,“我为什么要问”...
我正在将一些使用客户端生成的 XML 和 XPath 的旧代码制作成跨浏览器,这些代码在 IE(10+)的更高版本以及 IE7(以及 Chrome,火狐等……)

现在在 IE 中围绕 XPath 支持有 variousquestions,事实上它似乎不再受到关注(没有evaluate(),没有SelectNodes())。据称是some classes have been whitelisted,但一些测试似乎暗示在 IE10 中启用 ActiveX 过滤时这是不可靠的。

我玩过 wicked-good-xpath,但遇到了一些 XPath 形式的问题。此外,如果 IE 再也不会支持 XPath,我宁愿不要永远依赖外部库,而是寻找下一个“最好”的东西来代替。

有人指出the selector API is now the recommended choice 代替。不过我遇到的问题是它主要似乎是一个 HTML 选择 API(主要是因为它是从 CSS 发展而来的,因此它具有类和 ID 属性的特殊情况——可能还有其他 HTML 主义我还没有看过)。

因此,选择器 API 是否适合处理 XML 文档?鉴于 IE 缺乏支持,答案可能是“是”,但我看不到任何权威给出明确建议(或反建议)。

【问题讨论】:

    标签: xml xpath selectors-api


    【解决方案1】:

    确实如此。尽管 CSS 确实被设计为 HTML 的伴侣,但它也被设计为与文档语言无关,HTML 主义与一般规则分开定义(但仍然兼容),从 CSS 选择器派生的选择器标准也是如此语法。

    Selectors API 所基于的Selectors standard 就是这样开始的:

    选择器 是与树中的元素匹配的模式,因此构成了可用于在 XML 文档中选择节点的多种技术之一。选择器已针对 HTML 和 XML 进行了优化,旨在用于性能关键代码。

    实现可以使用适当的解析器从 HTML 或 XML 构建 DOM 树,然后可以使用选择器对其进行查询。使用选择器匹配 XML 元素应该不会有任何问题。

    请注意,虽然 HTML 和 XML 实际上共享 ID 和类语义(例如,您可以在 XSD 中定义 ID 和 IDREF 属性),但您只能使用 ID 和类选择器匹配它们,前提是 Selectors API 实现知道如何做到这一点XML 的特殊风格定义了这些语义。由于您使用的实现是浏览器,因此它所理解的唯一 XML 风格很可能是广泛采用的 Web 标准,例如 SVG 和 MathML,而不是您内部的 XML 风格。不过,您仍然可以使用基本的类型选择器、属性选择器、结构伪类和组合器,这些应该足以满足您的需求。

    您最终会遇到的大部分限制可能在于选择器语法本身,尽管其中一些限制在Selectors level 4Selectors API level 2 中得到纠正,主题指示符:matches() 已扩展:not():nth-match():nth-last-match():scope 等。

    【讨论】:

    • 你知道,尽管我快速浏览了选择器规范,但我完全错过了那个段落。谢谢你让我看起来很愚蠢:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-04
    • 2011-01-11
    • 1970-01-01
    • 2021-09-25
    • 2017-04-22
    • 1970-01-01
    相关资源
    最近更新 更多