xs: выбор, встроенный в xs: sequence, предотвращает использование объединения - PullRequest
0 голосов
/ 19 октября 2010

У меня есть следующий 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 или последовательность с newID и testID. Когда я компилирую это с wsdl2h из gsoap, я получаю сообщение:

Примечание: <xs:choice> со встроенным <xs:sequence> или <xs:group> предотвращает использование штуцера

Правильно ли указан XSD?

1 Ответ

0 голосов
/ 19 октября 2010

Как правило, тип XML myID может быть объявлен, как вы описали. Конфликт существует, вероятно, в связи с вашим определением типов 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>

будет правильно. Поэтому, если ошибка существует, она не в той части, которую вы опубликовали.

...