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

Fio*_*ite 50 xml schema xsd

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

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

grk*_*vlt 70

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

数据模式中的定义如下所示:

<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>
Run Code Online (Sandbox Code Playgroud)

  • 根据我见过的所有XSD文档,"ref"适用于"名称",如下所示:http://www.w3schools.com/schema/el_element.asp(ref - Optional.指的是另一个因素......) (12认同)
  • 我对此进行了投票,因为这是一个很好的解释.但是,ref属性通过其"id"而不是"name"引用外部实体.为了使您的示例起作用,第二个代码块中"item"的声明必须是:<xs:element id ="item"name ="item"type ="itemType"/> (5认同)
  • 什么时候会选择ref over type? (3认同)

zed*_*doo 5

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

XML Schema Primer就是这方面的例子:http://www.w3.org/TR/xmlschema-0/