XSD Tutorials - Herong's Tutorial Examples - v5.23, by Herong Yang
"language" Datatype Values - Invalid Inputs
This section provides a tutorial example on invalid input XML elements for 'language' datatype. JDK 1.7 is the best tool reporting validation errors.
When an XML element is defined to use "language" datatype, element content may fail to pass the validation, if it does not represent a valid "language" value.
Let's continue to use the XSD document, language_datatype_test.xsd, in the previous tutorial to test the following sample XML document, which contains some invalid <Language> elements:
<?xml version="1.1"?> <!-- language_datatype_invalid_test.xml - Copyright (c) 2002-2013 HerongYang.com. All Rights Reserved. --> <Language_Datatype_Test> <!-- 3 invalid "Language" elements --> <Language> en_US</Language> <Language>US English</Language> <Language> C++</Language> </Language_Datatype_Test>
Test #1 with XMLPad 3.0.2.1: Open language_datatype_invalid_test.xml with XMLPad; Assign XSD schema file language_datatype_test.xsd; Perform validation. You see 3 errors with the same error message: "Datatype check error for element Language{}: value is invalid for datatype 'language'."
XMLPad 3.0.2.1 does report invalid "language" elements. But its error message is useless.
Test #2 with Notepad++ 5.9 with "XML Tools Plugin": Open language_datatype_invalid_test.xml with XMLPad; Perform validation with XSD schema file language_datatype_test.xsd provided. You see 3 errors with much better error messages:
Validation of current file using XML schema: ERROR: Element 'Language': ' en_US' is not a valid value of the atomic type 'xs:language'. ERROR: Element 'Language': 'US English' is not a valid value of the atomic type 'xs:language'. ERROR: Element 'Language': ' C++' is not a valid value of the atomic type 'xs:language'.
Notepad++ 5.9 with "XML Tools Plugin" also reports invalid "language" elements. Its error messages are much better.
Test #3 with JDK: Compile and run XsdSchemaValidator.java You see 3 groups of errors with much more detailed information:
herong> java XsdSchemaValidator ^^^ language_datatype_test.xsd language_datatype_invalid_test.xml Error: Line number: 8 Column number: 34 Message: cvc-pattern-valid: Value 'en_US' is not facet-valid with respect to pattern '([a-zA-Z]{1,8})(-[a-zA-Z0-9]{1,8})*' for type 'language'. Error: Line number: 8 Column number: 34 Message: cvc-type.3.1.3: The value 'en_US' of element 'Language' is not valid. Error: Line number: 9 Column number: 34 Message: cvc-pattern-valid: Value 'US English' is not facet-valid with respect to pattern '([a-zA-Z]{1,8})(-[a-zA-Z0-9]{1,8})*' for type 'language'. Error: Line number: 9 Column number: 34 Message: cvc-type.3.1.3: The value 'US English' of element 'Language' is not valid. Error: Line number: 10 Column number: 34 Message: cvc-pattern-valid: Value 'C++' is not facet-valid with respect to pattern '([a-zA-Z]{1,8})(-[a-zA-Z0-9]{1,8})*' for type 'language'. Error: Line number: 10 Column number: 34 Message: cvc-type.3.1.3: The value 'C++' of element 'Language' is not valid. Failed with errors: 6
I like the JDK 1.7 tool better, because it gives more details on why the XML element is not valid. Notice that JDK 1.7 reports errors with input values already processed into "token" values. For example, 'C++' is reported in the error, not the original input value, ' C++'.
Table of Contents
XML Editor and Schema Processor - XMLPad
Java API for XML Processing - JAXP
JAXP - XML Schema (XSD) Validation
Xerces2 Java Parser - Java API of XML Parsers
Introduction of XSD Built-in Datatypes
►"string" and Its Derived Datatypes
"string" Datatype Values and Representations
"normalizedString" Datatype Values and Representations
"token" Datatype Values and Representations
"language" Datatype Values and Representations
►"language" Datatype Values - Invalid Inputs
"Name" Datatype Values and Representations
"NMTOKEN" Datatype Values and Representations
"NCName" Datatype Values and Representations
"ENTITY" Datatype Values and Representations
"ID" Datatype Values and Representations
"IDREF" Datatype Values and Representations
"decimal" and Its Derived Datatypes
"dateTime" and Its Related Datatypes
Miscellaneous Built-in Datatypes
Facets, Constraining Facets and Restriction Datatypes
"simpleType" - Defining Your Own Simple Datatypes
Identity-Constraints: unique, key and keyref
Assertion as Custom Validation Rules
XML Schema Location and Namespace in XML Documents
Overriding Element Types in XML Documents