1

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"/>

以上两种模式是否等效?

请帮忙

4

1 回答 1

0

不!他们不一样!

在第一个模式中:元素<tuple>下可以有 0 个或多个元素,具有/具有任何名称,这是因为您添加了带有元素定义的<any>标签,minOccurs="0"并且由于您在它下maxOccurs="Unbounded"指定了它不会打扰它的子元素。complexTypetuple
processContents="skip"<any>

例子:

<tuple>
  <foo>data</foo>
  <bar foobarattribute="foobardata">data</bar>
</tuple>

如您所见,虽然XSD 中没有定义 and 及其属性,但它允许此 XML 为foo有效bar但它不允许属性在foobarattribute <tuple>

编辑:

第二种模式: 与声明类型相同anyType

<xsd:element name="tuple" type="xs:anyType"/>

这意味着它允许元组下的任何元素和任何属性。示例 XML 如下所示:

<tuple foo="bar">
   <foobar attrb="value">data</foobar>
</tuple>

您可以观察到,与第一个示例 XML 不同,它也具有 under 属性<tuple>

两个示例 XSD 代码之间的另一个重要区别是:在第一个代码中,您将 processContents 指定为“skip”:因此 XML 处理器不会尝试验证来自指定名称空间的任何元素。

在第二个代码中,对于 anyType,processContents 将是“宽松的”:因此 XML 处理器尝试获取所需名称空间的模式并验证元素。

希望能帮助到你..

于 2013-03-15T11:36:25.243 回答