Pregunta

Tengo el siguiente xsd

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

Todo está bajo priv espacio de nombres. El problema es que parece que myID es una unión. Podría ser una testID o una secuencia con newID y testID. Cuando compilo con wsdl2h de gsoap estoy tomando el mensaje:

Nota: <xs:choice> con incrustado <xs:sequence> o <xs:group> evita el uso de una unión

Es correcto lo anterior XSD?

¿Fue útil?

Solución

En general, el myID tipo XML se puede declarar como usted describió. El conflicto existe probablemente en conexión con su definición del priv:testID tipos y priv:testID cuya definición no incluido. Por ejemplo el esquema

<?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>

será correcta. Así que si una existe el error, no es en la parte que usted envió.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top