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

时间:2009-05-08 10:34:13

标签: xml xml-validation well-formed infoset

我试过阅读http://www.w3.org/TR/xml-infoset/wikipedia entry。但坦率地说,我仍然不确定区别是什么。

引用:

  

XML文档具有信息集   如果它是良好的形式,并满足   名称空间限制没有   要求XML文档   有效以获得信息   集。

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

这个“信息集”是什么

  

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

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

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

8 个答案:

答案 0 :(得分:18)

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

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

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

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

答案 1 :(得分:7)

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

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

答案 2 :(得分:2)

有效的XML文档符合DTD或XSD(或其他标准)的要求。如果它格式正确,如果它违反了给定DTD或XSD中的规则,它仍然可以是“无效的”。

编辑:我是这个XML领域的新手,但看起来信息图是XML文档各部分的“抽象级别”描述,与实际技术实现无关 - 例如,可能是文档对象模型实现。

答案 3 :(得分:2)

XML信息集是一组抽象概念,例如可用于描述有效XML文档的属性和实体。根据规范,“XML文档的信息集由许多信息项组成;任何格式良好的XML文档的信息集至少包含一个文档信息项和其他几个。”

仅仅因为XML文档是信息集并不意味着它符合XSD并且是有效的XML文档。

答案 4 :(得分:2)

请从MSDN查看此链接。 http://msdn.microsoft.com/en-us/library/aa468561.aspx

这是对这些概念的一个非常好的解释,并希望能够让你清楚。

答案 5 :(得分:0)

我遇到的一个很好的例子是David Chappell's WCF PDF。这就是使用TCP时的工作原理:

  

两者都能实现最佳性能   建立了沟通中的各方   在WCF上,这里使用的是线编码   case是优化的二进制版本   肥皂。消息仍然符合   SOAP消息的数据结构,   被称为Infoset,但他们的   encoding使用二进制表示   那个Infoset而不是   标准的角括号和文字   XML格式。使用这个选项会   与...沟通是有意义的   呼叫中心客户端应用程序   它也建立在WCF上,并且   表现是最重要的。

答案 6 :(得分:0)

XML是一种语言,因此它具有语法,而XML Infoset具有数据模型的规范,这是由于应用程序需要基于数据模型而不是语法; XML出现在XML Infoset之前;参考:Web Linkbase Access的协议注意事项

答案 7 :(得分:0)

XML Infoset是如何构建序列化XML文档的要求。

序列化XML可以有不同的形式,例如一些二进制格式(Fast Infoset)或文本(最流行的形式)。

基本上对于XML文档格式(文本),每个元素和属性都应该通过相应的命名空间在XSD中定义。

Here你会找到一个例子。