0

我有以下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>

一切都在priv命名空间下。问题是它看起来像是myID一个工会。它可能是一个testID或一个带有newIDand的序列testID。当我用wsdl2hfrom编译它时,gsoap我正在接受消息:

注意:<xs:choice>与嵌入 <xs:sequence><xs:group> 阻止使用联合

上面的 XSD 是否正确?

4

1 回答 1

0

myID通常,可以按照您的描述声明XML 类型。冲突可能与您对类型的定义priv:testID以及priv:testID您未包含的定义有关。例如架构

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

将是正确的。因此,如果存在错误,则它不在您发布的部分中。

于 2010-10-18T23:31:07.347 回答