This is exactly the problem that prompted my other post on
xs:date. I
can't use either xs:gYear or xs;date because some dates are
in the form
YYYY and some are YYYY-MM, and still others YYYY-MM-DD. So, I had to
change to substring(.,1,4) to get the stylesheet to compile.
I really wish xs:date would count all of these as valid.
You can of course define a union type my:anyDate in your schema with
xs:date, xs:gYear, and xs:gYearMonth as its member types, and with a
schema-aware XSLT processor you can then refer to the type my:anyDate in
variable definitions and function signatures. You can use the "instance of"
operator to test which of the different kinds of date the value actually
holds.
Michael Kay