2010-10-18 2 views
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 или последовательность с newID и testID. Когда я скомпилировать его с wsdl2h из gsoap Я принимаю сообщение:

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

ли выше XSD правильно?

ответ

0

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

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

+0

Ваш XSD более совершенен, чем мой. Вопрос в том, «законно ли встраивать последовательность в xsd: choice»? – cateof

+0

@cateof: Да, это законно. – Oleg

Смежные вопросы