我正在阅读有关XML,XML-Schema,DTD的内容,我并不完全理解 xsd:any 和 xsd:anyType 之间的区别。
有人可以向我解释这个或指出一些好文章吗? (请不要链接到XML-Schema规范 - 我读过那些,我更困惑)
TIA
答案 0 :(得分:29)
This post很好地解释了这一点。我引用:
xsd:anyType是一种类型,比如 xsd:integer(虽然xsd:anyType是 特别之处在于它可以作为一个简单的 或复杂的类型,它放置 基本上没有限制 它验证的树 - 想一想 像Schema语言一样松散 类似于java.lang.Object)。
示例用法是:
<xsd:element name="e" type="xsd:anyType"/>
这意味着命名的元素
<e>
可以包含任何内容 属性等。xs:any是一个通配符,可用作术语 在内容模型中。例如:
<xsd:complexType name="T">
<xsd:sequence>
<xsd:element ref="A"/>
<xsd:any />
<xsd:element ref="C"/>
</xsd:sequence>
</xsd:complexType>
T类元素必须包含内容
<A/><???/><C/>
,其中<???>
可以 任何命名元素。现在,如果你看 真的很紧密有一个 近似于定义 xsd:anyType给出以供参考 建议,它使用xsd:any 通配符作为说法的手段 它允许任何元素。
另请查看XML Schema。
答案 1 :(得分:28)
在我创建以下示例之前,在dogbane的回答中链接的邮件列表帖子并不清楚:
使用anyType架构:
<xsd:complexType name="Outer">
<xsd:element name="e" type="xsd:anyType" />
</xsd:complexType>
允许这种格式:
<Outer>
<e> // must be called "e"
// but anything can go inside
</e>
</Outer>
使用任何架构:
<xsd:complexType name="Outer">
<xsd:any />
</xsd:complexType>
允许这种格式:
<Outer>
//anything can go inside
</Outer>
所以anyType是一个类型,any是一个元素