XML处理指令和空白



我目前正在研究node.js的XML/HTML解析器(如果您感兴趣:链接)。让我开门见山:我需要知道应该如何处理处理指令中的前导空格。它们应该相等吗?

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

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

提前感谢!

根据XML规范,只允许第一种表示。我想说其他表示应该会导致错误。

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

这个预处理器会在数据到达XML解析器之前清理数据——它可能是另一个程序。这样,XML解析器只有在输入数据是一半有效的情况下才会得到有效的XML(需要解析的特殊情况较少)。如果解析器仍然遇到错误,则可以假定输入根本不是xml格式的。

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

关于允许的结构的问题由你的语句来回答,以尽可能多地接受。因为在这种情况下,您将删除<之后的所有空白,如果后面是?,则再次删除空白,直到下一个单词-然后作为XML解析。

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

相关内容

  • 没有找到相关文章

最新更新