préfixe d'espace de noms pour childelements schéma XML
Je suis actuellement en apprentissage XML et sont arrivés dans le monde merveilleux de Schéma XML utilisé avec plusieurs espaces de noms.
Ma question est quand je dois et ne pas avoir à déclarer un préfixe d'espace de noms.
Considérons l'extrait suivant de Schéma XML:
<A:schema xmlns:A="http://www.w3.org/2001/XMLSchema"
targetNamespace="B"
xmlns:B="B"
elementFormDefault="qualified">
<A:element name="foo">
<complexType> <!-- or A:complexType?-->
<element name="bar" type="B:myType"/> <!-- or A:element?-->
</complexType>
</A:element>
<B:complexType name="myType">
<choice> <!--or B:choice?-->
<element name="baz" type="string"/> <!--or B:element?-->
<element name="bas" type="string"/> <!--or B:element?-->
</choice>
</B:complexType>
</A:schema>
Dois-je spécifier le préfixe d'espace de noms sur tous les nœuds enfants du nœud avec un préfixe d'espace de noms, ou est-ce héréditaire? Sinon est A:complexType
différente de complexType
quand il le nœud parent avait le préfixe d'espace de noms attaché à elle?
OriginalL'auteur Willem | 2012-10-10
Vous devez vous connecter pour publier un commentaire.
La liaison de préfixes d'espace de noms Uri est héritée par les éléments enfants, mais les éléments eux-mêmes ne sont pas automatiquement placés dans le même espace de noms que de leurs parents. Si elles ont il n'y aurait aucun moyen d'exprimer un élément dans un espace de noms avec l'enfant qui est pas dans un espace de noms. Dans votre exemple, tous les éléments qui font partie de la définition de schéma doivent être dans le
http://www.w3.org/2001/XMLSchema
espace de noms (ce qui est conventionnellement mappé sur lexsd
ouxs
préfixe):L'exception est lorsque vous utilisez
xmlns="..."
qui définit l'espace de noms par défaut pour les éléments sans préfixe, par exempleest équivalent à
La
type="B:myType"
est correct, il est fait référence au type nommémyType
dans letargetNamespace
du schéma, qui vous ont cartographié le préfixeB
.<xs:complexType name="myType">
élément (dans le XMLSchema espace de noms) est une instruction pour le schéma de déclarer un type nommémyType
dans letargetNamespace
du schéma (c'est à direurn:B
). Pour ainsi dire qu'un élément doit être de type{urn:B}myType
vous carte un préfixe (B
) à cet espace de noms URI et puis dire<xs:element type="B:myType"/>
.OriginalL'auteur Ian Roberts