home *** CD-ROM | disk | FTP | other *** search
- document ::= prolog element misc*
- prolog ::= xmlDecl? misc* (doctypedecl misc*)?
- xmlDecl ::= '<?xml' (S attribute)* S? '?>'
- misc ::= comment | pi | S
- doctypedecl ::= '<!DOCTYPE' S DocTypeName (S externalID)? S? ('[' dtdText? ']' S?)? '>'
- dtdText ::= (markupdecl | DocTypeText | S)+
- DocTypeName ::= Name
- DocTypeText ::= PEReference+
- markupdecl ::= elementdecl | attlistDecl | entityDecl | notationDecl | pi | dtdSpecialSect | comment
- element ::= emptyElemTag | realElemTag
- realElemTag ::= sTag content eTag { ElementName = ElementNameEnd }
- sTag ::= '<' ElementName (S attribute)* S? '>'
- attribute ::= AttName Eq attQValue
- Eq! ::= S? '=' S?
- eTag ::= '</' ElementNameEnd S? '>'
- content ::= ( element | cdSect | pi | comment | S? | TextData )*
- TextData ::= S* ( CharNoWhite | Reference ) ( CharData | Reference )*
- emptyElemTag ::= '<' ElementName (S attribute)* S? '/>'
- ElementName ::= Name
- ElementNameEnd ::= Name
- elementdecl ::= '<!ELEMENT' S ElementDeclName S sgmlStyleEDecl? ContentSpec (S dtdComment)? S? '>'
- ElementDeclName ::= Name | choice
- sgmlStyleEDecl ::= DashZero S DashZero S
- DashZero ::= '-' | 'O' | 'o'
- ContentSpec ::= 'EMPTY' | 'ANY' | 'CDATA' | Mixed | children | PEReference
- children ::= ('?' | '*' | '+')? (sgmlseq | choice | seq ) ('?' | '*' | '+')?
- choice ::= '(' S? cp ( S? '|' S? cp )* S? ')'
- cp ::= ('?' | '*' | '+' | '-')? ( '#PCDATA' | Name | PEReference | choice | seq) ('?' | '*' | '+')?
- seq ::= '(' S? cp ( S? ',' S? cp )* S? ')'
- sgmlseq ::= ( cp | Mixed ) S ( cp | Mixed )
- Mixed ::= ('(' S? '#PCDATA' (S? '|' S? ( Name | PEReference ))* S? ')*') | ('(' S? '#PCDATA' S? ')')
- attlistDecl ::= '<!ATTLIST' S AttlistName AttlistText? (S dtdComment)? S? '>'
- AttlistName ::= Name | ( '#' NotationType ) | choice
- AttlistText ::= AttDef*
- AttDef ::= S ( ( Name S (dtdComment S)? ( AttType | PEReference ) S DefaultDecl (S dtdComment)? ) | PEReference S? dtdComment? )
- AttType ::= StringType | TokenizedType | EnumeratedType | NumberType | NameType
- StringType ::= 'CDATA'
- NumberType ::= 'NUMBER'
- NameType ::= 'NAME'
- TokenizedType ::= 'IDREFS' | 'IDREF' | 'ID' | 'ENTITY' | 'ENTITIES' | 'NMTOKEN' | 'NMTOKENS' | PEReference
- EnumeratedType ::= NotationType | Enumeration
- NotationType ::= 'NOTATION' S '(' S? Name (S? '|' S? Name)* S? ')'
- Enumeration ::= '(' S? Nmtoken (S? '|' S? Nmtoken)* S? ')'
- DefaultDecl ::= '#REQUIRED' | '#IMPLIED' | '#CONREF' | (('#FIXED' S)? attQValue) | Name | Digit+
- Reference ::= EntityRef | CharRef
- CharRef ::= ('' [0-9]+ ';') | ('' [0-9a-fA-F]+ ';')
- EntityRef ::= '&' Name ';'
- PEReference ::= '%' Name ';'
- entityDecl ::= geDecl | peDecl
- geDecl ::= '<!ENTITY' S GEName S GEDef (S dtdComment)? S? '>'
- peDecl ::= '<!ENTITY' S PEName S PEDef (S dtdComment)? S? '>'
- GEName ::= Name
- PEName ::= '%' S Name
- GEDef ::= EntityValue | (externalID NDataDecl?)
- PEDef ::= EntityValue | externalID
- externalID ::= (ExtIDNameSys S ExtIDTextSys) | (ExtIDNamePub S ExtIDTextPub)
- ExtIDNameSys ::= 'SYSTEM'
- ExtIDTextSys ::= SystemLiteral
- ExtIDNamePub ::= 'PUBLIC'
- ExtIDTextPub ::= PubidLiteral S SystemLiteral
- NDataDecl ::= S 'NDATA' S Name
- notationDecl ::= '<!NOTATION' S NotationName S NotationText (S dtdComment)? S? '>'
- NotationName ::= Name
- NotationText ::= externalID | PublicID
- PublicID ::= 'PUBLIC' S PubidLiteral
- S! ::= (#x20 | #x09 | #x0D | #x0A)+
- AttName ::= Name
- Name ::= (Letter | '_' | ':') (NameChar)*
- NameChar ::= Letter | Digit | '.' | '-' | '_' | ':'
- Nmtoken ::= NameChar+
- EntityValue ::= ('"' ([^%&"] | PEReference | Reference)* '"') | ("'" ([^%&'] | PEReference | Reference)* "'")
- attQValue ::= ('"' AttValue1 '"') | ("'" AttValue2 "'")
- AttValue1 ::= ([^<&"] | Reference)*
- AttValue2 ::= ([^<&'] | Reference)*
- SystemLiteral ::= ('"' [^"]* '"') | ("'" [^']* "'")
- PubidLiteral ::= ('"' PubidChar* '"') | ("'" (PubidCharNoQu)* "'")
- PubidChar! ::= #x20 | #x0D | #x0A | [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%]
- PubidCharNoQu! ::= #x20 | #x0D | #x0A | [a-zA-Z0-9] | [-()+,./:=?;!*#@$_%]
- CharData ::= [^<&]* / ']]>'
- CharNoWhite! ::= [^< #x09#x0D#x0A]
- comment ::= '<!--' CommentText '-->'
- dtdComment ::= '--' CommentText '--'
- CommentText ::= ((CharNoDash) | ('-' (CharNoDash)))*
- CharNoDash! ::= #x09 | #x0A | #x0D | [#x20-#x2C] | [#x2E-#xFF]
- pi ::= '<?' PITarget (S PIData)? '?>'
- PITarget ::= Name - 'xml'
- PIData ::= Char* / '?>'
- Char! ::= #x09 | #x0A | #x0D | [#x20-#xFF]
- dtdSpecialSect ::= DtdSpecialStart CData? CDEnd
- DtdSpecialStart ::= '<![' S? ( Name | PEReference ) S? '['
- cdSect ::= CDStart CData? CDEnd
- CDStart! ::= '<![CDATA['
- CData ::= Char* / ']]>'
- CDEnd! ::= ']]>'
- Digit! ::= [#x30-#x39]
- Letter! ::= [#x41-#xFF]
-