Pracuję nad uzyskaniem pliku xml do sprawdzenia poprawności względem schematu XSD i mam problem z walidacjami. Za każdym razem, gdy sprawdzam poprawność, otrzymuję komunikat o błędzie: "Błąd ważności schematu: Element" {http://services.website.com/ProgramResponse}population ":" 'nie jest poprawną wartością typu atomowego "xs: double" "."Atrybut XSD NILLABLE nie działa
Uważam ten błąd ma miejsce, bo mam znak null w tej dziedzinie, wyświetlane tak:
< HarvPop> </HarvPop>
Tak więc, aby rozwiązać ten Próbowałem przy użyciu nillable = „true” atrybut dla elementów, dzięki czemu będą miały wartość NULL, ale nadal będą wyświetlane jako puste. To wydaje się być jedynym rozwiązaniem, ale w ogóle nie działa. Nadal dostaję błędy.
Obecnie używam XMLMate do moich sprawdzania poprawności i dwukrotnie sprawdziłem go również przed kilkoma weryfikatorami online. Błąd nadal występuje. Wszelkie sugestie byłyby świetne.
<?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>
Alternatywnie zmienić typ z xs: double do typu lista, który ItemType jest xs: podwójne, z MINLENGTH = 0 MAXLENGTH = 1. W ten sposób możesz pominąć wartość bez zbędnego atrybutu xsi: nil. –
Czy musisz mieć xsi: nil = "true" w xml również przy użyciu minOccurs? – sublimeike
Nr zero oznacza, że węzeł może być obecny i pusty, minOccurs = 0 oznacza, że brakuje całego węzła. –