##This syntax support the bare minimum for DSDL Part 7. ## graphemes are not supported ## kenel-and-hull are not supported ## We can further simplify [13] by removing negCharGroup ## and charClassSub, since they are similar to "difference". default namespace = "toBeSupplied" coll = union | difference | ref | charGroup union = element union { coll, coll+ } difference = element difference { coll, coll } ref = element ref { attribute href { xsd:anyURI } } charGroup = element charGroup { text } ##The content of an charGroup element matches charGroup ##as specified by the following rules. ## ## [12] charClassExpr ::= '[' charGroup ']' ## [13] charGroup ::= posCharGroup | negCharGroup | charClassSub ## [14] posCharGroup ::= ( charRange | charClassEsc )+ ## [15] negCharGroup ::= '^' posCharGroup ## [16] charClassSub ::= ( posCharGroup | negCharGroup ) ## '-' charClassExpr ## [17] charRange ::= seRange | XmlCharIncDash ## [18] seRange ::= charOrEsc '-' charOrEsc ## [20] charOrEsc ::= XmlChar | SingleCharEsc ## [21] XmlChar ::= [^\#x2D#x5B#x5D] ## [22] XmlCharIncDash ::= [^\#x5B#x5D] ## [23] charClassEsc ::= ( SingleCharEsc | MultiCharEsc ## | catEsc | complEsc ) ## [24] SingleCharEsc ::= '\' [nrt\|.?*+(){}#x2D#x5B#x5D#x5E] ## [25] catEsc ::= '\p{' charProp '}' ## [26] complEsc ::= '\P{' charProp '}' ## [27] charProp ::= IsCategory | IsBlock ## [28] IsCategory ::= Letters | Marks | Numbers ## | Punctuation | Separators | Symbols | Others ## ## The semantics of [29] thru [37] depend on the version of the Unicode ## standard. ## [29] Letters ::= 'L' [ultmo]? ## [30] Marks ::= 'M' [nce]? ## [31] Numbers ::= 'N' [dlo]? ## [32] Punctuation ::= 'P' [cdseifo]? ## [33] Separators ::= 'Z' [slp]? ## [34] Symbols ::= 'S' [mcko]? ## [35] Others ::= 'C' [cfon]? ## [36] IsBlock ::= 'Is' [a-zA-Z0-9#x2D]+ ## [37] MultiCharEsc ::= '\' [sSiIcCdDwW]