17

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

报价单 :

如果 XML 文档格式正确且满足名称空间约束,则它具有信息集。为了拥有信息集,XML 文档不要求有效。

从维基百科条目似乎没有意义。一个无效的文档怎么可能有任何语义,因此它怎么可能是一个“信息”集?

这个“信息集”是什么

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

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

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

4

9 回答 9

20

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

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

如果我将其序列化为 UTF-8,然后将其序列化为 UTF-16。结果可能是两组不同的位,但信息集相同。

还要考虑使用文本进行字符串连接之类的事情是有意义的。您不想将“<”连接到 XML 元素的中间。您必须先对其进行编码。如果只是文本,为什么要这样做?例如,如果您使用 DOM,您只需说 element.InnerText = "<"; 序列化时,“<”将被编码为“<”。然而,它是相同的信息集。

于 2009-05-08T10:43:15.547 回答
9

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

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

于 2009-10-01T11:55:53.547 回答
2

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

编辑:我是 XML 领域的新手,但看起来信息集是 XML 文档各部分的“抽象级别”描述,独立于实际的技术实现 - 例如,可能是文档对象模型执行。

于 2009-05-08T10:37:50.177 回答
2

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

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

于 2009-05-08T21:52:05.867 回答
2

请参阅 MSDN 的此链接。 http://msdn.microsoft.com/en-us/library/aa468561.aspx

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

于 2010-12-12T10:44:25.073 回答
0

我刚刚遇到的一个很好的例子是David Chappell 的 WCF PDF。这是使用 TCP 时的工作方式,例如:

为了在通信双方都基于 WCF 构建时获得最佳性能,在这种情况下使用的线路编码是 SOAP 的优化二进制版本。消息仍然符合 SOAP 消息的数据结构,称为其 Infoset,但它们的编码使用该 Infoset 的二进制表示,而不是 XML 的标准尖括号和文本格式。使用此选项对于与呼叫中心客户端应用程序进行通信是有意义的,因为它也是基于 WCF 构建的,并且性能是最重要的问题。

于 2009-10-01T11:50:35.103 回答
0

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

于 2017-05-25T14:38:41.793 回答
0

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

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

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

在这里你会找到一个例子。

于 2017-09-04T13:26:46.537 回答
0

XML 信息集是一组定义,用于需要引用 XML 文档中的信息的其他规范。

XML 信息集的目的是提供一组一致的定义,以供其他规范使用,这些规范需要引用格式良好的XML 文档中的信息。

获取 XML 信息集的方法之一是解析 XML 文档。

XML 文档的信息集由许多信息项组成。术语“信息集”和“信息项”在含义上与通用术语“树”和“节点”相似。

可以在XML 信息集上找到详细信息。

于 2021-10-02T06:28:46.603 回答