Estoy trabajando para obtener un archivo xml para validar contra un esquema XSD y estoy teniendo problemas con las validaciones. Cada vez que valido recibo errores que dicenXSD atributo NILLABLE no funciona
"Error de validez de los esquemas: Elemento '{http://services.website.com/ProgramResponse}Population': '' no es un valor válido del tipo atómico 'xs: double '. "
Creo que este error ocurre porque tengo un carácter nulo en ese campo, aparecen de este modo:
< HarvPop> </HarvPop>
Por lo tanto, para resolver este He intentado utilizar el nillable = "true" atributo para los elementos para que puedan ser nulos, pero aún aparecen como vacíos. Esta parece ser la única solución, pero no funciona en absoluto. Aún recibo los errores.
Actualmente estoy usando XMLMate para mis validaciones y lo he comprobado dos veces contra varios verificadores en línea también. El error aún persiste Cualquier sugerencia seria genial.
<?xml version="1.0" encoding="UTF-8"?>
<xsd:element name="Reports" type="tns:ReportsType"/>
<xsd:complexType name="ReportsType">
<xsd:sequence>
<xsd:element name="Report" type="tns:ReportType" maxOccurs="unbounded" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ReportType">
<xsd:sequence>
<xsd:element name="Id" nillable="true"/>
<xsd:element name="Brand" type="xsd:string"/>
<xsd:element name="Address" type="xsd:string"/>
<xsd:element name="City" type="xsd:string"/>
<xsd:element name="State" type="xsd:string"/>
<xsd:element name="ZipCode" type="xsd:string"/>
<xsd:element name="Entry" type="tns:EntryType" maxOccurs="unbounded" minOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="EntryType">
<xsd:sequence>
<xsd:element name="RM" nillable="true" type="xsd:double"/>
<xsd:element name="Pop" nillable="true" type="xsd:double"/>
<xsd:element name="Wt" nillable="true" type="xsd:double"/>
<xsd:element name="EntryId" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
Alternativamente, cambiar el tipo de xs: doble a un tipo de lista cuyo tipoElemento es xs: doble, con minLength = 0 y maxLength = 1. De esta forma, puede omitir el valor sin el atributo redundante xsi: nil. –
¿tiene que tener xsi: nil = "true" en el xml cuando se usa minOccurs también? – sublimeike
No. nil significa que puede tener el nodo presente y vacío, minOccurs = 0 significa que puede faltar todo el nodo. –