Fondamentalement, il fait référence à un autre élément qui est delared ailleurs, qui peut ou peut ne pas être le même document de schéma. Par exemple, il pourrait provenir d'un schéma référencé de manière externe dans un espace de noms différent. Supposons que vous utilisiez l'élément élément beaucoup dans plusieurs schémas différents, vous pouvez le déclarer (et tous les autres types communs et attributs) dans un schéma commun, puis réutiliser ceux dans tous vos autres schémas. Si vous faites référence à votre schéma commun avec l'espace de noms c, vous pouvez déclarer une instance de l'article elemnt seul ou dans le cadre 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 les données schéma 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>
J'ai voté ceci, car c'est une bonne explication. Cependant, un attribut ref se réfère à une entité externe par son "id", pas "name". Pour que votre exemple fonctionne, la déclaration de "item" dans le second bloc de code doit être: –
rjray
Selon toute la documentation de XSD 'ai vu, le "ref" s'applique à un "nom", comme on le voit ici: http://www.w3schools.com/schema/el_element.asp (ref - Facultatif, se réfère au nom d'un autre élément. ... – grkvlt
Quand choisirais-tu le type ref? – pikachu0