The following is a summary of the definition of the XML 1.0 data type ID. We express the syntax using an extended form of BNF notation:
NCNameChar ::= letter | digit | '.' | '-' | '_' | ':' | CombiningChar | ExtenderID ::= ( letter | '_' | ':' ) NCNameChar*
The characters ( and ) are used for grouping, the
character * means "zero or more times", and the character
| indicates logical "or". The production letter
consists of the basic upper and lower case alphabetic characters of the
Latin alphabet along with a large number of related characters defined by
Unicode 2.0; similarly, the production digit consists of
the numerals 0..9 along with related Unicode 2.0
characters. The CombiningChar production is a list of
characters that add such things as accents to the preceding character. (For
example, the Unicode character \#x030A when combined with
a produces \aa.) The Extender
production is a list of characters that extend the shape of the preceding
character. Please consult the XML 1.0
specification for the complete definitions of letter,
digit, CombiningChar, and Extender.