Znění hlášky v jednotlivých validátorech
Java s vlastním ErrorHandler vypíše ke každé hodnotě dvě chyby. První
(cvc-datatype-valid, cvc-pattern-valid …) říká, které pravidlo
hodnota porušila, druhá (cvc-type.3.1.3: The value '…' of element '…' is not valid)
jmenuje element. Bez ErrorHandler skončí validace výjimkou s první z nich.
Příčiny a opravy
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="cena" type="xs:decimal"/>
</xs:schema> Desetinná čárka v xs:decimal
<cena>12.50</cena> xs:decimal používá desetinnou tečku bez ohledu na jazyk uživatele. Formátuj čísla
pro datový přenos nezávisle na českém formátu. Neopravuj dokument plošným nahrazením čárek, které
mohou patřit do textu.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="polozka">
<xs:complexType>
<xs:sequence>
<xs:element name="kod">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z]{2}[0-9]{3}"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="mena">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="CZK"/>
<xs:enumeration value="EUR"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="pocet">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="1"/>
<xs:maxInclusive value="100"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema> Hodnota neodpovídá vzoru (pattern)
<polozka>
<kod>CZ001</kod>
<mena>CZK</mena>
<pocet>2</pocet>
</polozka>
Vzor v XSD platí vždy pro celou hodnotu, nemusí začínat ^ ani končit
$. Rozlišuje velká a malá písmena.
Hodnota není ve výčtu (enumeration)
<polozka>
<kod>CZ001</kod>
<mena>CZK</mena>
<pocet>2</pocet>
</polozka>
Výčet porovnává hodnotu přesně. Kč, czk i CZK s mezerou
jsou pro něj jiné hodnoty než CZK.
Číslo mimo povolený rozsah (maxInclusive)
<polozka>
<kod>CZ001</kod>
<mena>CZK</mena>
<pocet>150</pocet>
</polozka> <polozka>
<kod>CZ001</kod>
<mena>CZK</mena>
<pocet>2</pocet>
</polozka>
Hodnota má správný zápis celého čísla, ale je mimo rozsah daný minInclusive a
maxInclusive.
Zápis hodnoty a její povolený rozsah
Nejdřív ověř základní typ a potom jeho omezení. Hodnota 12.50 vyhoví xs:decimal, ale nemusí vyhovět vlastnímu typu s maximem 10. Naopak 12,50 nesplní už samotný zápis desetinného čísla.
Při opravě porovnej skutečnou hodnotu s restriction ve schématu. Pokud validátor používá jinou verzi XSD než příjemce, lokální úspěch nemusí odpovídat jeho výsledku. Typy a omezení vysvětluje XML Schema, přehled typů je v referenci datových typů XSD.