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 | Extender`
`ID ::= ( 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`.