我正在阅读有关XML,XML-Schema,DTD的内容,我并不完全理解xsd:any和xsd:anyType之间的区别.
有人可以向我解释这个或指向一些好文章吗?(请不要链接到XML-Schema规范 - 我读过那些,我更困惑)
TIA
dog*_*ane 30
这篇文章很好地解释了它.我引用:
XSD:anyType的是一种类型,就像XSD:整数(虽然XSD:anyType的是,它可以作为一个简单的或复杂类型的特殊作用,以及它给它验证树基本上没有限制 - 粗略地认为它作为模式语言的类似于java.lang.Object).
示例用法是:
<xsd:element name="e" type="xsd:anyType"/>
Run Code Online (Sandbox Code Playgroud)
这意味着命名的元素
<e>可以包含任何内容,任何属性等.xs:any是通配符,可用作内容模型中的术语.例如:
<xsd:complexType name="T">
<xsd:sequence>
<xsd:element ref="A"/>
<xsd:any />
<xsd:element ref="C"/>
</xsd:sequence>
</xsd:complexType>
Run Code Online (Sandbox Code Playgroud)
类型T的元素必须具有内容
<A/><???/><C/>,其中<???>可以是任何命名元素.现在,如果你仔细观察,有一个近似于建议书中给出的xsd:anyType的定义,它使用xsd:any通配符作为说明它允许任何元素的方法.
另请参阅XML Schema.
小智 28
在我创建以下示例之前,在dogbane的答案中链接的邮件列表帖子对我来说并不清楚:
使用anyType架构:
<xsd:complexType name="Outer">
<xsd:element name="e" type="xsd:anyType" />
</xsd:complexType>
Run Code Online (Sandbox Code Playgroud)
哪个允许这种格式:
<Outer>
<e> // must be called "e"
// but anything can go inside
</e>
</Outer>
Run Code Online (Sandbox Code Playgroud)
并使用任何架构:
<xsd:complexType name="Outer">
<xsd:any />
</xsd:complexType>
Run Code Online (Sandbox Code Playgroud)
哪个允许这种格式:
<Outer>
//anything can go inside
</Outer>
Run Code Online (Sandbox Code Playgroud)
所以anyType是一个类型,任何都是一个元素