1
<xsd:element name="tuple">
<xsd:complexType>
<xsd:sequence>
<xsd:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="skip" />
</xsd:sequence>
</xsd:complexType>
2
<xsd:element name="tuple"/>
以上两种模式是否相同?
请帮忙
答案 0 :(得分:0)
NO!他们不一样!
在第一个架构中:元素<tuple>
下面可以包含0个或更多带有/的任何名称的元素,这是因为您添加了<any>
标记{{1元素minOccurs="0"
的{{1}}定义下的{}和maxOccurs="Unbounded"
另外,由于您在complexType
下指定了tuple
,因此不会对其子元素产生任何影响。
示例:
processContents="skip"
正如您所看到的,虽然在XSD中未定义<any>
和<tuple>
<foo>data</foo>
<bar foobarattribute="foobardata">data</bar>
</tuple>
及其属性foo
,但它允许此XML有效。 但它不允许 bar
编辑:
第二个架构:
它与将类型声明为foobarattribute
<tuple>
这意味着它允许任何元素和元组下的任何属性。示例XML将如下:
anyType
您可以观察到,与第一个示例XML不同,它还具有<xsd:element name="tuple" type="xs:anyType"/>
下的属性。
两个示例XSD代码之间的另一个重要区别是: 在第一个代码中,您将processContents指定为“skip”:因为哪个XML处理器不会尝试验证指定命名空间中的任何元素..
在第二个代码中,对于anyType,processContents将是“lax”:因为XML处理器试图获取所需命名空间的模式并验证元素。
希望有所帮助......