xs: choix intégré dans xs: séquence empêche l'utilisation d'une union
-
09-10-2019 - |
Question
J'ai le XSD suivant
<xsd:complexType name="myID">
<xsd:choice>
<xsd:element name="testID" type="priv:testID"/>
<xsd:sequence>
<xsd:element name="newID" type="priv:newID"/>
<xsd:element name="testID" type="priv:testID" minOccurs="0"/>
</xsd:sequence>
</xsd:choice>
</xsd:complexType>
Tout est sous espace de noms priv
. Le problème est qu'il ressemble à ce que myID
est un syndicat. Il est peut-être un testID
ou une séquence avec newID
et testID
. Quand je compile avec wsdl2h
de gsoap
Je prends le message:
Note:
<xs:choice>
avec intégré<xs:sequence>
ou<xs:group>
empêche l'utilisation d'une union
Le XSD ci-dessus correcte?
La solution
En général, le myID
de type XML peut être déclaré comme vous l'avez décrit. Le conflit existe probablement dans le cadre de votre définition des types priv:testID
et priv:testID
quelle définition vous pas inclus. Par exemple, le schéma
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema targetNamespace="http://www.ok-soft-gmbh.com/xml/xsd/1.0/XMLSchema.xsd"
elementFormDefault="qualified"
xmlns:priv="http://www.ok-soft-gmbh.com/xml/xsd/1.0/XMLSchema.xsd"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>
<xsd:simpleType name="testID">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
<xsd:simpleType name="newID">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
<xsd:complexType name="myID">
<xsd:choice>
<xsd:element name="testID" type="priv:testID"/>
<xsd:sequence>
<xsd:element name="newID" type="priv:newID"/>
<xsd:element name="testID" type="priv:testID" minOccurs="0"/>
</xsd:sequence>
</xsd:choice>
</xsd:complexType>
<xsd:element name="root" type="priv:myID"/>
</xsd:schema>
sera correcte. Donc, si une erreur d'exist, il est dans la partie qui vous avez publié.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow