Xml XSD中元素的ref属性做什么?

Xml XSD中元素的ref属性做什么?,xml,xsd,schema,Xml,Xsd,Schema,文档似乎说它引用了模式中的另一个元素,但如何使用它呢?我从未在我使用过的模式中见过它 有没有人有好的用例或者其他可以进一步解释其用法的东西?例如,如果您想声明可以显示为深度嵌套的元素类型,但也可以作为实例文档中的顶级元素 XML模式入门有这样的例子:基本上,它引用了另一个在别处被删除的元素,可能是也可能不是同一个模式文档。例如,它可能来自不同名称空间中的外部引用模式。假设您在几个不同的模式中大量使用item元素,您可以在一个公共模式中声明它(以及任何其他公共类型和属性),然后在所有其他模式中重用

文档似乎说它引用了模式中的另一个元素,但如何使用它呢?我从未在我使用过的模式中见过它


有没有人有好的用例或者其他可以进一步解释其用法的东西?

例如,如果您想声明可以显示为深度嵌套的元素类型,但也可以作为实例文档中的顶级元素


XML模式入门有这样的例子:

基本上,它引用了另一个在别处被删除的元素,可能是也可能不是同一个模式文档。例如,它可能来自不同名称空间中的外部引用模式。假设您在几个不同的模式中大量使用item元素,您可以在一个公共模式中声明它(以及任何其他公共类型和属性),然后在所有其他模式中重用它们。如果使用命名空间c引用公共模式,则可以单独声明item elemnt的实例,或将其声明为类型的一部分,如下所示:

<xs:element ref="c:item" /><!-- reference here -->
<xs:complexType name="something">
    <xs:sequence>
        <xs:element ref="c:item" /><!-- and here -->
    </xs:sequence>
    <xs:element name="other" type="xs:Name" />
</xs:complexType>

数据架构中的定义如下所示:

<xs:element name="item" type="itemType" /><!-- referenced element -->
<xs:complexType name="itemType">
    <xs:sequence>
        <xs:element name="code" type="xs:Name" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
    <xs:attribute name="description" type="xs:normalizedString" use="required" />
</xs:complexType>


我对此投了赞成票,因为这是一个很好的解释。但是,ref属性通过其“id”而不是“name”引用外部实体。为了让您的示例发挥作用,第二个代码块中“item”的声明需要是:根据我所看到的所有XSD文档,“ref”应用于“name”,如下所示:(ref-可选。指另一个元素的名称…)何时选择ref而不是type?