XS: Выбор, встроенный в XS: Последовательность предотвращает использование объединения

StackOverflow https://stackoverflow.com/questions/3963081

Вопрос

У меня есть следующие 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 правильный?

Это было полезно?

Решение

В общем тип 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>

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top