什么是XML信息集?与XML文档有何不同?
-
22-07-2019 - |
题
我尝试阅读 http://www.w3.org/TR/xml -infoset / 和维基百科条目。但坦率地说,我仍然不确定有什么区别。
引号:
XML文档具有信息集 如果格式正确并满足 命名空间约束。没有 XML文档的要求 有效以获取信息 设置。
从Wikipedia条目看来似乎没有任何意义。一个无效的文档如何具有任何语义,从而如何成为一个“信息”集?
这是什么“信息集”
格式正确并满足命名空间受限
XML有吗?它本身以什么方式有用。换句话说,从语义上讲,为什么定义 XML 信息集是必要的?是否有无法用XML表示的信息?如果是这样,我可以看到XML Infoset的限制集,但是如果不确定,XML Infoset与术语“信息”一样没有意义吗?
谢谢您的有趣回答: 我仍然无法理解为什么Xml信息集与术语“信息集”相比有任何用途。但是你们给了我这个问题的直接答案。
解决方案
一种思考XML文本和XML信息集之间区别的有用方法是考虑快速信息集。这是XML信息集的二进制表示形式。
因此,您有了一个抽象的“信息集”,它是一个表示XML数据(节点,元素,属性等)的概念模型。这可以物理上表示为文本XML文档或快速信息集流。两者都代表相同的数据,但方式截然不同。
其他提示
XML不是文本。XML是XML信息集。然后可以将其序列化为XML文档中的文本,但这是XML信息集才是现实。
例如,信息集可以作为DOM树存在于内存中。它作为抽象对象模型的实现存在于内存中。
如果我将其序列化为UTF-8,然后序列化为UTF-16,该怎么办。结果可能是两组不同的位,但信息集相同。
还考虑到使用文本进行诸如字符串串联之类的事情是有意义的。您不想将“ <”连接到XML元素的中间。您必须先对其进行编码。如果只是文本,为什么还要这样做?例如,如果您使用DOM,则只需说出element.InnerText=“ <”;。序列化时,“ <”将被编码为“&lt;”。但这是相同的信息集。
有效的XML文档满足DTD或XSD(或其他标准)的要求。如果格式正确,则如果违反给定DTD或XSD中的规则,则它仍可能是“无效”。
编辑:我是XML领域的新手,但看来信息集是XML文档各部分的“抽象级”描述,与实际的技术实现无关,例如,它可能是文档对象模型的实现。
XML信息集是一组抽象的概念,例如可用于描述有效XML文档的属性和实体。根据规范,“ XML文档的信息集由许多信息项组成;任何格式良好的XML文档的信息集都将至少包含一个文档信息项和其他几个信息项。”
仅仅因为XML文档是信息集,并不意味着它符合XSD并且是有效的XML文档。
请查看MSDN上的此链接。 http://msdn.microsoft.com/en-us/library/aa468561.aspx
这是对概念的很好的解释,希望能对您清楚。
我刚刚遇到的一个好例子是 David Chappell的WCF PDF 。例如,在使用TCP时,其工作方式如下:
为了在两种情况下都能获得最佳性能 建立通信中的各方 在WCF上,在此使用的有线编码 case是的优化二进制版本 肥皂。邮件仍然符合 SOAP消息的数据结构, 称为其信息集,但他们的 编码使用二进制表示 该信息集而不是 标准尖括号和文本 XML格式。使用此选项将 与 呼叫中心客户应用程序,因为 它也是基于WCF构建的,并且 性能是最重要的问题。
XML是一种语言,因此它具有语法,而XML Infoset具有数据模型的规范,这是由于应用程序需要基于数据模型而不是语法;XML位于XML Infoset之前;参考:Web Linkbase访问的协议注意事项