Here are some suggestions about the spec.

> the W3C built-in schema types
I may be useful to specify which schema version is meant.

> 109 Date and time (with colon)
109 Date (with hyphen) and time (with colon)

> 203 need use case
When the source reads 19th century (without specification of how the 
century is defined in this case)

> 203 • 19 20th century • 00 first century
We could reserve the term “century” to apply ONLY when the source uses the 
term “century” (or its equivalent in another language) without defining 
it. Thus, we would avoid any “wrong” definition of the the term “century“. 
When all the hundred years from 1901 (inclusive) to 2000 (inclusive) are 
meant, we could use 1900-01-01/P100Y. When all the hundred years from 1900 
(inclusive) to 1999 (inclusive) are meant, we could use either 
1901-01-01/P100Y or 19xx (even if it is not (yet) supported by ISO8601), 
because what is meant is made obvious. Furthermore, I consider there is a 
risk to misinterpret 00 as “the noughties decade”.

> 205
When the capacity of computer memory was very limited, the month was 
sometimes (albeit seldom) written in hexadecimal. 85c18 was then december, 
18th 1985. There is a risk for 1995109 to be missinterpreted as the ninth 
january 1995

> 210 20040101/20040102
It could be good to specify why not use hyphens such as: 

> 213 the last of which occurs at
It could be good to specify whether it begins or ends then

> 215 T01:59:60
There is an obvious risk to misinterpret that as a leap second

> 301 to 311
In the rightmost column, there is a typo: “co'on”

> 316
Square braces are quite error-prone as they make regexes more complicated 
for example. I would prefer c1667,1668,1670..1672 (with “c” for “choice”) 
instead of [1667,1668,1670..1672]

> 317 and 317 1
Nothing on these rows indicates that it would be about approximations. If 
it is not an approximation, these rows should be move to a place not under 
this table header. Assuming that they are not an approximation, I would 
prefer a1667,1668,1670..1672 (with “a” for all) instead of 
{1667,1668,1670..1672} because curly braces are error-prone both when it 
comes to regexes and XSLT where curly braces are used for attribute value 
templates. I consider that 2002-10-{03,05,09-12} could be rewritten 
2002-10-a03,05,09..12 (with doubble dots as of 316, cf 323)

> 319 to 322
I suggest to use double dots instead of double dashes (cf 317, 323)

> 323
Using double dots instead of double dashes makes it possible to use double 
dashes instead of four dashes

> 325
We could explore the possibilities to use QName as defined at

> 329
It seems that “caret” is misspelled “carat”. Unicode calls this character 

> 330 Should both syntaxes be supported or only one?
The dotless version makes it easier to avoid non-integer values

> 330 “september 1 of the year 170000000” is not supported. Is this ok?
Today's use of leap years is nothing more than a temporary approximation. 
It must be fine tuned within a couple of millenia or so. The day 
“september 1 of the year 170000000” is therefore undefined. Maybe it is 
defined in some fiction book, though ...

> 331
Each winter in the northern hemisphere and summer in the south hemisphere 
covers two years. Maybe we should also introduce 25, 26, 27, 28. If 22 is 
the summer in the northern hemispere, 25 could be the part of the summer 
at the beginning of the year in the southern hemisphere and 26 could be 
the part of the summer at the end of the year in the southern hemisphere. 
Likewise, 27 and 28 could be used for the winter in the northern hemispere