【问题标题】:XML processing instructions and white spaceXML 处理指令和空白
【发布时间】:2012-01-17 20:17:20
【问题描述】:

我目前正在为node.js 开发一个 XML/HTML 解析器(如果您有兴趣:link)。让我直奔主题:我需要知道我应该如何处理处理指令中的前导空格。这些应该相等吗?

  1. <?asdf ?>
  2. < ?asdf ?>
  3. <? asdf ?>
  4. < ? asdf ?>

我想严格的 XML 只会允许第一个(但预期的行为是什么?我不想验证,我想接受尽可能多的构造),这更像是一个哲学问题。

提前致谢!

【问题讨论】:

    标签: xml processing-instruction


    【解决方案1】:

    根据the XML specification,只允许第一个表示。我会说其他表示应该会导致错误。

    您可以添加一些预处理来清理无效结构(删除空格),然后将数据读取为 XML。

    这个预处理器会在你的数据到达你的 XML 解析器之前清理你的数据——它可能是另一个程序。这样,如果输入数据有效一半,您的 XML 解析器只会获得有效的 XML(解析较少的特殊情况)。如果您的解析器仍然遇到错误,您会假设输入根本不是 XML-ish。

    因此,例如在预处理期间,数据会被更改,最终被解析为 XML: 删除虚假空格(一个预处理器)→猜测结束标签(另一个预处理器)→解析为 XML

    您的陈述回答了允许构造的问题,尽可能多地接受。因为在这种情况下,您将删除 < 之后的所有空格,如果后面是 ?,请再次删除空格,直到下一个单词 - 然后解析为 XML。

    就个人而言,我不认为接受大多数构造是可取的。如果您的数据包含错误,则应按此处理。

    【讨论】:

    • 正如我所写:我不想验证,因此应该避免错误。预处理是什么意思?应该允许哪些构造?
    猜你喜欢
    • 2023-03-03
    • 1970-01-01
    • 2022-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 2015-08-02
    • 2023-03-16
    相关资源
    最近更新 更多