web-dev-qa-db-fra.com

Que fait l'attribut ref sur un élément dans un XSD?

La documentation semble dire qu'elle fait référence à un autre élément du schéma, mais comment pourrait-elle être utilisée - je ne l'ai jamais vue dans les schémas avec lesquels j'ai travaillé.

Quelqu'un a-t-il eu des cas d'utilisation de Nice ou quelque chose qui pourrait expliquer son utilisation davantage?

Fondamentalement, il fait référence à un autre élément qui est supprimé ailleurs, qui peut ou non être le même document de schéma. Par exemple, il pourrait provenir d'un schéma référencé en externe dans un espace de noms différent. Supposons que vous utilisiez beaucoup l'élément item dans plusieurs schémas différents, vous pouvez le déclarer (et tout autre type et attribut commun) dans un schéma common, puis réutiliser ceux de tous vos autres schémas. Si vous référencez votre schéma commun avec l'espace de nom c, vous pouvez déclarer une instance de l'élément item seul ou en tant que partie d'un type comme suit:

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

La définition dans le schéma de données ressemblerait à ceci:

<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>
69
grkvlt

Par exemple, si vous souhaitez déclarer des types d'éléments pouvant apparaître profondément imbriqués, mais également en tant qu'éléments de niveau supérieur dans un document d'instance.

Le XML Schema Primer a des exemples pour cela: http://www.w3.org/TR/xmlschema-0/

5
zedoo