我试过阅读http://www.w3.org/TR/xml-infoset/和wikipedia entry。但坦率地说,我仍然不确定区别是什么。
引用:
XML文档具有信息集 如果它是良好的形式,并满足 名称空间限制没有 要求XML文档 有效以获得信息 集。
从维基百科条目似乎没有意义。非有效文档如何具有任何语义,因此它如何成为“信息”集?
这个“信息集”是什么
格式良好并且满足命名空间约束
XML有?它本身以何种方式有用。换句话说,为什么在语义上讲,定义 XML 信息集是必要的?是否有任何无法用XML表示的信息?如果是这样,我可以看到XML Infoset的限制集,但如果不确定XML Infoset与术语“信息”一样没有意义吗?
感谢您提供有趣的答案: 我仍然无法理解为什么Xml信息集有任何目的而不是术语信息集。但是你们给了我这个问题的直接答案。
答案 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你会找到一个例子。