CanonXML ::= Pi* element Pi*
element ::= Stag (Datachar | Pi | element)* Etag
Stag ::= '<' Name Atts '>'
Etag ::= '</' Name '>'
Pi ::= '<?' Name ' ' (((Char - S) Char*)? - (Char* '?>gt;' Char*)) '?>'
Atts ::= (' ' Name '=' '"' Datachar* '"')*
Datachar ::= '&' | '<' | '>' | '"'
| '	'| ' '| ' '
| (Char - ('&' | '<' | '>' | '"' | #x9 | #xA | #xD))
Name ::= (see XML spec)
Char ::= (see XML spec)
S ::= (see XML spec)
Figure 1: Canonical XML (reprinted with permission by James Clark).
Back to Article