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?

Était-ce utile?

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
scroll top