Frage

Ich habe folgendes 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>

Alles ist unter priv Namespace. Das Problem ist, dass es sieht aus wie das myID eine Vereinigung ist. Es könnte eine testID oder eine Sequenz mit newID und testID sein. Wenn ich es mit wsdl2h von gsoap kompilieren Ich nehme die Meldung:

Hinweis: <xs:choice> mit eingebetteten <xs:sequence> oder <xs:group> verhindert die Verwendung einer Vereinigung

Ist die oben XSD korrekt?

War es hilfreich?

Lösung

Im allgemeinen XML-Typ myID kann erklärt werden, wie Sie beschrieben. Der Konflikt existiert wahrscheinlich im Zusammenhang mit Ihrer Definition der Typen priv:testID und priv:testID die Definition nicht enthalten. Zum Beispiel das Schema

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

wird richtig sein. Also, wenn ein Fehler existieren, es ist nicht in dem Teil, das Sie auf dem Laufenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top