XSD Tutorials - Herong's Tutorial Examples - v5.23, by Herong Yang
"gYearMonth" and "gMonthDay" Datatypes
This section describes the built-in primitive datatype, 'gYearMonth' and 'gMonthDay', that represents year-month and month-day combinations in Gregorian calendar. Leading and trailing whitespaces are allowed and trimmed. Timezone offset is optional.
XSD 1.1 also provides 2 built-in datatypes, "gYearMonth" and "gMonthDay" to cover 2-property combination within a "date" value with these rules:
To verify these rules, I wrote this simple XSD document that uses "gYearMonth" and "gMonthDay" datatypes to declare XML elements:
<?xml version="1.1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- gYearMonth_gMonthDay_datatype_test.xsd
- Copyright (c) 2002-2013 HerongYang.com. All Rights Reserved.
-->
<xs:element name="GYearMonth_GMonthDay_Datatype_Test">
<xs:complexType>
<xs:sequence>
<xs:element name="GYearMonth" type="xs:gYearMonth"
maxOccurs="unbounded"/>
<xs:element name="GMonthDay" type="xs:gMonthDay"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Here is a sample XML document that can be used to test these declarations:
<?xml version="1.1"?> <!-- gYearMonth_gMonthDay_datatype_test.xml - Copyright (c) 2002-2013 HerongYang.com. All Rights Reserved. --> <GYearMonth_GMonthDay_Datatype_Test> <!-- 3 valid "GYearMonth" elements --> <GYearMonth> 0101-01 </GYearMonth> <GYearMonth> -1234567-12Z </GYearMonth> <GYearMonth> 2013-05-05:00 </GYearMonth> <!-- 3 invalid "GYearMonth" elements --> <GYearMonth> 101-01 </GYearMonth> <GYearMonth> 2147483648-12Z </GYearMonth> <GYearMonth> 2013Z </GYearMonth> <!-- 2 valid "GMonthDay" elements --> <GMonthDay> --01-01 </GMonthDay> <GMonthDay> --12-05-05:00 </GMonthDay> <!-- 2 invalid "GMonthDay" elements --> <GMonthDay> --1-1 </GMonthDay> <GMonthDay> --13-05-05:00 </GMonthDay> <GMonthDay> --12-05:00 </GMonthDay> </GYearMonth_GMonthDay_Datatype_Test>
When validating this XML document with my XsdSchemaValidator.java program presented earlier in the book, I get 6 groups of errors for 6 invalid XML elements:
herong> java XsdSchemaValidator
^^^ gYearMonth_gMonthDay_datatype_test.xsd
^^^ gYearMonth_gMonthDay_datatype_test.xml
Error:
Line number: 13
Column number: 42
Message: cvc-datatype-valid.1.2.1: '101-01' is not a valid value
for 'gYearMonth'. ("Year" must be at leat 4 digits)
Error:
Line number: 13
Column number: 42
Message: cvc-type.3.1.3: The value ' 101-01 ' of element
'GYearMonth' is not valid.
Error:
Line number: 14
Column number: 50
Message: cvc-datatype-valid.1.2.1: '2147483648-12Z' is not a valid
value for 'gYearMonth'. ("year" value out of "int" range")
Error:
Line number: 14
Column number: 50
Message: cvc-type.3.1.3: The value ' 2147483648-12Z ' of
element 'GYearMonth' is not valid.
Error:
Line number: 15
Column number: 41
Message: cvc-datatype-valid.1.2.1: '2013Z' is not a valid value for
'gYearMonth'. (Missing "month")
Error:
Line number: 15
Column number: 41
Message: cvc-type.3.1.3: The value ' 2013Z ' of element
'GYearMonth' is not valid.
Error:
Line number: 22
Column number: 38
Message: cvc-datatype-valid.1.2.1: '--1-1' is not a valid value for
'gMonthDay'. (2 digits needed for "month" and "day")
Error:
Line number: 22
Column number: 38
Message: cvc-type.3.1.3: The value ' --1-1 ' of element
'GMonthDay' is not valid.
Error:
Line number: 23
Column number: 46
Message: cvc-datatype-valid.1.2.1: '--13-05-05:00' is not a valid
value for 'gMonthDay'. ("month" value out of range)
Error:
Line number: 23
Column number: 46
Message: cvc-type.3.1.3: The value ' --13-05-05:00 ' of
element 'GMonthDay' is not valid.
Error:
Line number: 24
Column number: 43
Message: cvc-datatype-valid.1.2.1: '--12-05:00' is not a valid
value for 'gMonthDay'. (Missing "day" value)
Error:
Line number: 24
Column number: 43
Message: cvc-type.3.1.3: The value ' --12-05:00 ' of element
'GMonthDay' is not valid.
Failed with errors: 12
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
"decimal" and Its Derived Datatypes
►"dateTime" and Its Related Datatypes
Date/Time Seven-Property Model
"dateTime" Datatype Values and Representations
"dateTimeStamp" Datatype Values and Representations
"date" Datatype Values and Representations
"time" Datatype Values and Representations
"gYear", "gMonth" and "gDay" Datatypes
►"gYearMonth" and "gMonthDay" Datatypes
"duration" Datatype Values and Representations
"yearMonthDuration" Datatype Values and Representations
"dayTimeDuration" Datatype Values and Representations
Date, Time and Duration Datatype Summary
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