什么是XML信息集以及它与XML文档有什么不同?

Pre*_*gha 16 xml xml-validation well-formed infoset

我试过阅读http://www.w3.org/TR/xml-infoset/维基百科条目.但坦率地说,我仍然不确定区别是什么.

报价单 :

如果XML文档格式良好并且满足命名空间约束,则它具有信息集.为了获得信息集,不要求XML文档有效.

从维基百科条目似乎没有意义.非有效文档如何具有任何语义,因此它如何成为"信息"集?

什么是这个"信息集"

格式良好,满足命名空间约束

XML有?它本身以何种方式有用.换句话说,从语义上讲,为什么定义XML信息集是必要的?是否有任何无法用XML表示的信息?如果是这样,我可以看到XML Infoset的限制集,但是如果不确定XML Infoset与术语"信息"一样没有意义吗?

谢谢你的有趣答案: 我仍然无法理解为什么Xml信息集有任何目的而不是术语信息集.但是你们给了我这个问题的直接答案.

Joh*_*ers 19

XML不是文本.XML"是"XML信息集.然后可以将其序列化为XML文档中的文本,但实际上是XML信息集.

例如,信息集可以作为DOM树存在于存储器中.它作为抽象对象模型的实现存在于内存中.

如果我将其序列化为UTF-8然后将其序列化为UTF-16,该怎么办?机会是两个不同的位组,但相同的信息集.

还要考虑使用文本进行字符串连接等操作是有意义的.您不希望将"<"连接到XML元素的中间.你必须先编码.如果它只是文本,你为什么要这样做呢?例如,如果您使用DOM,则只需说element.InnerText ="<"; 序列化时,"<"将被编码为"<".然而它是相同的信息集.

  • @Preet Sangha:信息集是抽象数据.XML只是表示数据的一种方式.数据可以完全不同的方式表示,一个甚至看起来不像文本文件中的尖括号,仍然是相同的数据.认为XML实际上是*它代表的数据是一个常见的错误.它只是序列化的形式. (8认同)

ska*_*man 8

考虑XML文本和XML信息集之间区别的一种有用方法是考虑快速信息集.这是XML信息集的二进制表示.

所以你有一个抽象的"信息集",它是一个表示XML数据(节点,元素,属性等)的概念模型.这可以在物理上表示为文本XML文档或快速信息集流.两者都代表相同的数据,但方式完全不同.