XSD中的元素的ref属性有什么作用?

时间:2009-09-19 16:28:40

标签: xml xsd schema

文档似乎说它引用了模式中的另一个元素,但是如何使用它 - 我从未在我使用过的模式中看到它。

任何人都有任何好的用例或能够进一步解释其使用的东西吗?

2 个答案:

答案 0 :(得分:68)

基本上它引用了在其他地方推迟的另一个元素,它可能是也可能不是同一个模式文档。例如,它可能来自不同命名空间中的外部引用模式。假设您在几个不同的模式中经常使用 item 元素,您可以在 common 模式中声明它(以及任何其他常见类型和属性),然后重用它们所有其他模式。如果您使用命名空间 c 引用 common 模式,则可以单独声明 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>

答案 1 :(得分:5)

例如,如果要声明可以显示为深层嵌套的元素类型,还要声明为实例文档中的顶级元素。

XML Schema Primer提供了以下示例:http://www.w3.org/TR/xmlschema-0/