Quelle est la différence entre ref et taper un schéma XML?
Considérons le schéma suivant:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="Root">
<xs:sequence>
<xs:element ref="Child" />
<xs:element name="Child2" type="Child" />
</xs:sequence>
<xs:attribute ref="Att" />
<xs:attribute name="Att2" type="Att" />
</xs:complexType>
<xs:complexType name="Child">
<xs:attribute ref="Att" />
</xs:complexType>
<xs:attribute name="Att" type="xs:integer" />
</xs:schema>
La ref
"Enfant" à la ligne 6 échoue, tandis que le type
sur la ligne 7 valide. Pour l'attribut, l' ref
réussit alors que le type
échoue. J'essaie de comprendre pourquoi.
Ma compréhension de ref
était qu'il faisait simplement référence à un autre élément et précisé que vous vous attendez à voir une instance de la visée de type (avec le nom donné dans la définition) à cet endroit. Évidemment, je suis en tort, donc, ce n'est ref
signifie réellement?
source d'informationauteur Nigel Hawkins
Vous devez vous connecter pour publier un commentaire.
À l'aide de ref=".." vous "coller" existant élément/attribut défini sur l'autre endroit. Type=".." l'affectation d'une certaine structure (défini dans complextype/simpletype) de nouvel élément ou de l'attribut. Regardez suivantes:
À l'intérieur d'un modèle de contenu, la
xs:element
élément peut être soit:ou
nom de l'élément comme un moyen de l'identifier, et à reporter à l'
déclaration pour le type).
(Même nom/ref alternance s'applique aux déclarations d'attributs et attribuent des références, et il y a une dichotomie similaire entre inline type des définitions et des références à des types nommés.)
Dans votre exemple, il n'y a pas de haut-niveau de la déclaration pour un élément nommé de l'Enfant, de sorte que le
ref
attribut échoue. J'espère que cette aide.La différence importante entre les ref et le type, c'est qu'avec le type de vous ne peut pas aller plus bas niveau, mais avec ref, vous pouvez utiliser un élément qui peut avoir un niveau supplémentaire et ainsi de suite.