xs: elección incrustado en xs: secuencia impide el uso de un sindicato
-
09-10-2019 - |
Pregunta
Tengo el siguiente 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>
Todo está bajo priv
espacio de nombres. El problema es que parece que myID
es una unión. Podría ser una testID
o una secuencia con newID
y testID
. Cuando compilo con wsdl2h
de gsoap
estoy tomando el mensaje:
Nota:
<xs:choice>
con incrustado<xs:sequence>
o<xs:group>
evita el uso de una unión
Es correcto lo anterior XSD?
Solución
En general, el myID
tipo XML se puede declarar como usted describió. El conflicto existe probablemente en conexión con su definición del priv:testID
tipos y priv:testID
cuya definición no incluido. Por ejemplo el esquema
<?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>
será correcta. Así que si una existe el error, no es en la parte que usted envió.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow