不!他们不一样!
在第一模式中:元件<tuple>
可以具有在它之下0或多个元件与任何名称/,那是因为你下complexType
定义元件的tuple
另外由于必须添加<any>
标签与minOccurs="0"
和maxOccurs="Unbounded"
<any>
下指定processContents="skip"
它不打扰任何关于它的子元素..
例子:
<tuple>
<foo>data</foo>
<bar foobarattribute="foobardata">data</bar>
</tuple>
如您所见,尽管foo
和bar
及其属性foobarattribute
未在XSD中定义,但它允许此XML有效。 但它不允许属性下<tuple>
编辑:
第二个架构: 这是因为声明类型anyType
<xsd:element name="tuple" type="xs:anyType"/>
这意味着作为同它允许元组下的任何元素和任何属性。示例XML会是这样:
<tuple foo="bar">
<foobar attrb="value">data</foobar>
</tuple>
你可以观察,不像第一个示例XML,这<tuple>
下属性为好。之间的两个样品XSD代码
一个更重要的区别是: 在要指定的processContents为“跳过”第一代码:因为它的XML处理器不尝试验证从指定的命名空间的任何元件..
在第二个代码中,对于anyType,processContents将是“不严格”的:因为XML处理器试图为所需的名称空间获取模式并验证元素。
希望它有帮助..
通常你的答案应该是downvoted;我希望你能改正它。虽然第一行是正确的,但在许多层面上的解释是错误的。 2.中的元组是[anyType](http://www.w3.org/TR/xmlschema-1/#d0e9252),这意味着它可以具有任何属性,任何元素,混合以及processingContents * * **不严;在1.元组支持**元素只有内容**,**没有属性**,没有混合,并且processingContents是**跳过**。 – 2013-03-15 12:12:55
@PetruGardea,谢谢你验证我的答案。我承认,我在定义案例二时犯了错误。出于某种原因,在Vis Studio中,XSD验证的行为是不同的。它不会将'no type'视为'anyType'..我在发布解决方案之前实际验证过一次,但也应该使用在线验证器进行验证。谢谢,我知道anyType,但是到目前为止我一直对'没有类型'有错误的印象。我也用processContents信息更新了答案。 – 2013-03-15 12:54:59