Utiliser le schéma XML pour étendre un élément plutôt qu'un complexType
Supposons que j'ai un certain schéma:
<xsd:schema ...>
<xsd:element name="foo">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="fooElement" type="xs:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Ceci définit un élément foo
qui a à l'intérieur un élément fooElement
de type chaîne de caractères. J'aimerais maintenant étendre élément foo
d'avoir aussi un élément barElement
et d'appeler cette extension bar
.
Pour compliquer les choses, supposons aussi que que quelqu'un d'autre a défini foo
et le schéma ne peut pas être changé. Alors que l'exemple ici est trivial, supposons également que le contenu de foo
pourrait être plus compliqué, et que la définition d'un nouveau schéma n'est pas tout à fait aussi simple que de copier l'élément fooElement
.
Effectivement, j'aimerais définir un nouveau schéma:
<xsd:schema xmlns:fns="otherschema" ...>
<xsd:import namespace="otherschema" />
<xsd:element name="bar">
<xsd:complexContent>
<xsd:extension base="fns:foo">
<xsd:sequence>
<xsd:element name="barElement" type="xs:string" />
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:element>
</xsd:schema>
Malheureusement <xsd:extension>
's base
attribut accepte uniquement de type XSD arguments, pas des éléments. Comment puis-je prolonger un élément? (puis-je prolonger un élément?)
source d'informationauteur Mark Elliot
Vous devez vous connecter pour publier un commentaire.
Je voudrais créer un nouveau type qui imite élément foo et puis l'étendre. Alors que ce n'est pas la meilleure solution, vous obtenez le même résultat que si vous aviez été en mesure d'étendre l'élément directement.