2010-10-18 5 views
0

Je le XSD suivantxs: choix intégrés dans xs: séquence empêche l'utilisation d'une union

<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 semble que myID est une union. Ce 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?

Répondre

0

En général, le type XML myID peut être déclaré comme décrit. Le conflit existe probablement en relation avec votre définition des types priv:testID et priv:testID quelle définition vous n'avez 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 correct. Donc, si une erreur existe, ce n'est pas dans la partie que vous avez posté.

+0

Votre XSD est plus complet que le mien. La question est "est-il légal d'imbriquer une séquence dans le xsd: choice"? – cateof

+0

@cateof: Oui, c'est légal. – Oleg

Questions connexes