Skip to content

Instantly share code, notes, and snippets.

@karfau
Created February 13, 2022 00:12
Show Gist options
  • Save karfau/e224d99441b556007c4b01b4f5f2f981 to your computer and use it in GitHub Desktop.
Save karfau/e224d99441b556007c4b01b4f5f2f981 to your computer and use it in GitHub Desktop.
XML1.1 DOCTYPE and ENTITIES expanded
/*
https://www.w3.org/TR/2006/REC-xml11-20060816/#NT-S
[3] S ::= (#x20 | #x9 | #xD | #xA)+
https://www.w3.org/TR/2006/REC-xml11-20060816/#NT-Name
[4] NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
[4a] NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]
[5] Name ::= NameStartChar (NameChar)*
https://www.w3.org/TR/2006/REC-xml11-20060816/#NT-EntityValue
[9] EntityValue ::= '"' ([^%&"] | PEReference | Reference)* '"' | "'" ([^%&'] | PEReference | Reference)* "'"
> Note:
> Although the EntityValue production allows the definition of a general entity consisting of a single explicit < in the literal (e.g., <!ENTITY mylt "<">), it is strongly advised to avoid this practice since any reference to that entity will cause a well-formedness error.
https://www.w3.org/TR/2006/REC-xml11-20060816/#NT-SystemLiteral
[11] SystemLiteral ::= ('"' [^"]* '"') | ("'" [^']* "'")
[12] PubidLiteral ::= '"' PubidChar* '"' | "'" (PubidChar - "'")* "'"
[13] PubidChar ::= #x20 | #xD | #xA | [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%]
https://www.w3.org/TR/2006/REC-xml11-20060816/#NT-Comment
[15] Comment ::= '<!--' ((Char - '-') | ('-' (Char - '-')))* '-->'
https://www.w3.org/TR/2006/REC-xml11-20060816/#NT-PI
[16] PI ::= '<?' PITarget (S (Char* - (Char* '?>' Char*)))? '?>'
[17] PITarget ::= Name - (('X' | 'x') ('M' | 'm') ('L' | 'l'))
https://www.w3.org/TR/2006/REC-xml11-20060816/#NT-prolog
[22] prolog ::= XMLDecl Misc* (doctypedecl Misc*)?
[23] XMLDecl ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>'
[24] VersionInfo ::= S 'version' Eq ("'" VersionNum "'" | '"' VersionNum '"')
[25] Eq ::= S? '=' S?
[26] VersionNum ::= '1.1'
[27] Misc ::= Comment | PI | S
https://www.w3.org/TR/2006/REC-xml11-20060816/#NT-doctypedecl
[28] doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S? ('[' intSubset ']' S?)? '>'
[28a] DeclSep ::= PEReference | S
[28b] intSubset ::= (markupdecl | DeclSep)*
[29] markupdecl ::= elementdecl | AttlistDecl | EntityDecl | NotationDecl | PI | Comment
https://www.w3.org/TR/2006/REC-xml11-20060816/#NT-SDDecl
[32] SDDecl ::= S 'standalone' Eq (("'" ('yes' | 'no') "'") | ('"' ('yes' | 'no') '"'))
https://www.w3.org/TR/2006/REC-xml11-20060816/#NT-elementdecl
[45] elementdecl ::= '<!ELEMENT' S Name S contentspec S? '>'
[46] contentspec ::= 'EMPTY' | 'ANY' | Mixed | children
https://www.w3.org/TR/2006/REC-xml11-20060816/#NT-AttlistDecl
[52] AttlistDecl ::= '<!ATTLIST' S Name AttDef* S? '>'
[53] AttDef ::= S Name S AttType S DefaultDecl
https://www.w3.org/TR/2006/REC-xml11-20060816/#NT-CharRef
[66] CharRef ::= '&#' [0-9]+ ';' | '&#x' [0-9a-fA-F]+ ';'
https://www.w3.org/TR/2006/REC-xml11-20060816/#NT-Reference
[67] Reference ::= EntityRef | CharRef
[68] EntityRef ::= '&' Name ';'
https://www.w3.org/TR/2006/REC-xml11-20060816/#NT-PEReference
[69] PEReference ::= '%' Name ';'
https://www.w3.org/TR/2006/REC-xml11-20060816/#sec-entity-decl
[70] EntityDecl ::= GEDecl | PEDecl
[71] GEDecl ::= '<!ENTITY' S Name S EntityDef S? '>'
[72] PEDecl ::= '<!ENTITY' S '%' S Name S PEDef S? '>'
[73] EntityDef ::= EntityValue | (ExternalID NDataDecl?)
[74] PEDef ::= EntityValue | ExternalID
https://www.w3.org/TR/2006/REC-xml11-20060816/#NT-ExternalID
[75] ExternalID ::= 'SYSTEM' S SystemLiteral | 'PUBLIC' S PubidLiteral S SystemLiteral
[76] NDataDecl ::= S 'NDATA' S Name
https://www.w3.org/TR/2006/REC-xml11-20060816/#NT-NotationDecl
[82] NotationDecl ::= '<!NOTATION' S Name S (ExternalID | PublicID) S? '>'
[83] PublicID ::= 'PUBLIC' S PubidLiteral
*/
/// EXPAND DOWN TO `intSubset` and `Literals`
<!DOCTYPE `Name``(S ExternalID)?``S?``('[' intSubset ']' S?)?`> {
// with no option
<!DOCTYPE `Name``S?`> !
|||
// with one option
<!DOCTYPE `Name` `ExternalID``S?`> {
<!DOCTYPE `Name` SYSTEM `SystemLiteral``S?`> {
<!DOCTYPE `Name` SYSTEM "`[^"]*`"`S?`> !
|||
<!DOCTYPE `Name` SYSTEM '`[^']*`'`S?`> !
}
|||
<!DOCTYPE `Name` PUBLIC `PubidLiteral` `SystemLiteral``S?`> {
<!DOCTYPE `Name` PUBLIC `PubidLiteral` "`[^"]*`"`S?`> {
<!DOCTYPE `Name` PUBLIC "`PubidChar*`" "`[^"]*`"`S?`> !
|||
<!DOCTYPE `Name` PUBLIC '`(PubidChar - "'")*`' "`[^"]*`"`S?`> !
}
|||
<!DOCTYPE `Name` PUBLIC `PubidLiteral` '`[^']*`'`S?`> {
<!DOCTYPE `Name` PUBLIC "`PubidChar*`" '`[^']*`'`S?`> !
|||
<!DOCTYPE `Name` PUBLIC '`(PubidChar - "'")*`' '`[^']*`'`S?`> !
}
}
}
|||
<!DOCTYPE `Name``S?`[`intSubset`]`S?`> !
|||
// with two options
<!DOCTYPE `Name` `ExternalID``S?`[`intSubset`]`S?`> {
<!DOCTYPE `Name` SYSTEM `SystemLiteral``S?`[`intSubset`]`S?`>{
<!DOCTYPE `Name` SYSTEM "`[^"]*`"`S?`[`intSubset`]`S?`> !
|||
<!DOCTYPE `Name` SYSTEM '`[^']*`'`S?`[`intSubset`]`S?`> !
}
|||
<!DOCTYPE `Name` PUBLIC `PubidLiteral` `SystemLiteral``S?`[`intSubset`]`S?`> {
<!DOCTYPE `Name` PUBLIC `PubidLiteral` "`[^"]*`"`S?`[`intSubset`]`S?`> {
<!DOCTYPE `Name` PUBLIC "`PubidChar*`" "`[^"]*`"`S?`[`intSubset`]`S?`> !
|||
<!DOCTYPE `Name` PUBLIC '`(PubidChar - "'")*`' "`[^"]*`"`S?`[`intSubset`]`S?`> !
}
|||
<!DOCTYPE `Name` PUBLIC `PubidLiteral` '`[^']*`'`S?`[`intSubset`]`S?`> {
<!DOCTYPE `Name` PUBLIC "`PubidChar*`" '`[^']*`'`S?`[`intSubset`]`S?`> !
|||
<!DOCTYPE `Name` PUBLIC '`(PubidChar - "'")*`' '`[^']*`'`S?`[`intSubset`]`S?`> !
}
}
}
}
/// JUST THE LEAVES
/// already supported
<!DOCTYPE `Name``S?`>
<!DOCTYPE `Name` SYSTEM "`[^"]*`"`S?`>
<!DOCTYPE `Name` SYSTEM '`[^']*`'`S?`>
<!DOCTYPE `Name` PUBLIC "`PubidChar*`" "`[^"]*`"`S?`>
<!DOCTYPE `Name` PUBLIC '`(PubidChar - "'")*`' "`[^"]*`"`S?`>
<!DOCTYPE `Name` PUBLIC "`PubidChar*`" '`[^']*`'`S?`>
<!DOCTYPE `Name` PUBLIC '`(PubidChar - "'")*`' '`[^']*`'`S?`>
/// newly supported
<!DOCTYPE `Name``S?`[`intSubset`]`S?`>
<!DOCTYPE `Name` SYSTEM "`[^"]*`"`S?`[`intSubset`]`S?`>
<!DOCTYPE `Name` SYSTEM '`[^']*`'`S?`[`intSubset`]`S?`>
<!DOCTYPE `Name` PUBLIC "`PubidChar*`" "`[^"]*`"`S?`[`intSubset`]`S?`>
<!DOCTYPE `Name` PUBLIC '`(PubidChar - "'")*`' "`[^"]*`"`S?`[`intSubset`]`S?`>
<!DOCTYPE `Name` PUBLIC "`PubidChar*`" '`[^']*`'`S?`[`intSubset`]`S?`>
<!DOCTYPE `Name` PUBLIC '`(PubidChar - "'")*`' '`[^']*`'`S?`[`intSubset`]`S?`>
/// unsupported
/*
https://www.w3.org/TR/2006/REC-xml11-20060816/#NT-S
[3] S ::= (#x20 | #x9 | #xD | #xA)+
https://www.w3.org/TR/2006/REC-xml11-20060816/#NT-Name
[4] NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
[4a] NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]
[5] Name ::= NameStartChar (NameChar)*
https://www.w3.org/TR/2006/REC-xml11-20060816/#NT-EntityValue
[9] EntityValue ::= '"' ([^%&"] | PEReference | Reference)* '"' | "'" ([^%&'] | PEReference | Reference)* "'"
> Note:
> Although the EntityValue production allows the definition of a general entity consisting of a single explicit < in the literal (e.g., <!ENTITY mylt "<">), it is strongly advised to avoid this practice since any reference to that entity will cause a well-formedness error.
https://www.w3.org/TR/2006/REC-xml11-20060816/#NT-SystemLiteral
[11] SystemLiteral ::= ('"' [^"]* '"') | ("'" [^']* "'")
[12] PubidLiteral ::= '"' PubidChar* '"' | "'" (PubidChar - "'")* "'"
[13] PubidChar ::= #x20 | #xD | #xA | [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%]
https://www.w3.org/TR/2006/REC-xml11-20060816/#NT-CharRef
[66] CharRef ::= '&#' [0-9]+ ';' | '&#x' [0-9a-fA-F]+ ';'
https://www.w3.org/TR/2006/REC-xml11-20060816/#NT-Reference
[67] Reference ::= EntityRef | CharRef
[68] EntityRef ::= '&' Name ';'
https://www.w3.org/TR/2006/REC-xml11-20060816/#NT-PEReference
[69] PEReference ::= '%' Name ';'
https://www.w3.org/TR/2006/REC-xml11-20060816/#sec-entity-decl
[70] EntityDecl ::= GEDecl | PEDecl
[71] GEDecl ::= '<!ENTITY' S Name S EntityDef S? '>'
[72] PEDecl ::= '<!ENTITY' S '%' S Name S PEDef S? '>'
[73] EntityDef ::= EntityValue | (ExternalID NDataDecl?)
[74] PEDef ::= EntityValue | ExternalID
https://www.w3.org/TR/2006/REC-xml11-20060816/#NT-ExternalID
[75] ExternalID ::= 'SYSTEM' S SystemLiteral | 'PUBLIC' S PubidLiteral S SystemLiteral
[76] NDataDecl ::= S 'NDATA' S Name
*/
/// EXPAND DOWN TO `Name` and `Literals`
`GEDecl | PEDecl` {
<!ENTITY `Name` `EntityDef``S?`> {
<!ENTITY `Name` `EntityValue | (ExternalID NDataDecl?)``S?`> {
<!ENTITY `Name` `EntityValue``S?`> {
<!ENTITY `Name` `'"' ([^%&"] | PEReference | Reference)* '"' | "'" ([^%&'] | PEReference | Reference)* "'"``S?`> {
<!ENTITY `Name` "`([^%&"] | %`Name`; | &`Name`; | &#`[0-9]+`; | &#x`[0-9a-fA-F]+`;)*`"`S?`> !
|
<!ENTITY `Name` '`([^%&'] | %`Name`; | &`Name`; | &#`[0-9]+`; | &#x`[0-9a-fA-F]+`;)*`'`S?`> !
// with every option just once:
<!ENTITY `Name` ""`S?`> || <!ENTITY `Name` ''`S?`> !
<!ENTITY `Name` "`[^%&"]*`"`S?`> || <!ENTITY `Name` '`[^%&"]*`'`S?`> !
<!ENTITY `Name` "%`Name`;"`S?`> || <!ENTITY `Name` '%`Name`;'`S?`> !
<!ENTITY `Name` "&`Name`;"`S?`> || <!ENTITY `Name` '&`Name`;'`S?`> !
<!ENTITY `Name` "&#`[0-9]+`;"`S?`> || <!ENTITY `Name` '&#`[0-9]+`;'`S?`> !
<!ENTITY `Name` "&#x`[0-9a-fA-F]+`;"`S?`> || <!ENTITY `Name` '&#x`[0-9a-fA-F]+`;'`S?`> !
}
}
|||
<!ENTITY `Name` `(ExternalID NDataDecl?)``S?`> {
<!ENTITY `Name` `ExternalID``S?`> {
<!ENTITY `Name` `'SYSTEM' S SystemLiteral | 'PUBLIC' S PubidLiteral S SystemLiteral``S?`> {
<!ENTITY `Name` SYSTEM `SystemLiteral``S?`> {
<!ENTITY `Name` SYSTEM "`[^"]*`"`S?`> !
||
<!ENTITY `Name` SYSTEM '`[^']*`'`S?`> !
}
|||
<!ENTITY `Name` PUBLIC `PubidLiteral` `SystemLiteral``S?`> {
<!ENTITY `Name` PUBLIC `PubidLiteral` SYSTEM "`[^"]*`"`S?`> {
<!ENTITY `Name` PUBLIC "`PubidChar*`" SYSTEM "`[^"]*`"`S?`> !
||
<!ENTITY `Name` PUBLIC '`(PubidChar - "'")*`' SYSTEM "`[^"]*`"`S?`> !
}
|||
<!ENTITY `Name` PUBLIC `PubidLiteral` SYSTEM "`[^']*`'`S?`> {
<!ENTITY `Name` PUBLIC "`PubidChar*`" SYSTEM "`[^']*`'`S?`> !
||
<!ENTITY `Name` PUBLIC '`(PubidChar - "'")*`' SYSTEM "`[^']*`'`S?`> !
}
}
}
}
|||
<!ENTITY `Name` `ExternalID` `NDataDecl``S?`> {
<!ENTITY `Name` `ExternalID` NDATA `Name``S?`> {
<!ENTITY `Name` `'SYSTEM' S SystemLiteral | 'PUBLIC' S PubidLiteral S SystemLiteral` NDATA `Name``S?`> {
<!ENTITY `Name` SYSTEM `SystemLiteral` NDATA `Name``S?`> {
<!ENTITY `Name` SYSTEM "`[^"]*`" NDATA `Name``S?`> !
||
<!ENTITY `Name` SYSTEM "`[^']*`' NDATA `Name``S?`> !
}
|||
<!ENTITY `Name` PUBLIC `PubidLiteral` `SystemLiteral` NDATA `Name``S?`> {
<!ENTITY `Name` PUBLIC `PubidLiteral` SYSTEM "`[^"]*`" NDATA `Name``S?`> {
<!ENTITY `Name` PUBLIC "`PubidChar*`" SYSTEM "`[^"]*`" NDATA `Name``S?`> !
||
<!ENTITY `Name` PUBLIC '`(PubidChar - "'")*`' SYSTEM "`[^"]*`" NDATA `Name``S?`> !
}
|||
<!ENTITY `Name` PUBLIC `PubidLiteral` SYSTEM "`[^']*`' NDATA `Name``S?`> {
<!ENTITY `Name` PUBLIC "`PubidChar*`" SYSTEM "`[^']*`' NDATA `Name``S?`> !
||
<!ENTITY `Name` PUBLIC '`(PubidChar - "'")*`' SYSTEM "`[^']*`' NDATA `Name``S?`> !
}
}
}
}
}
}
}
}
|||
<!ENTITY % `Name` `PEDef``S?`> { // <!ENTITY % `Name` `EntityValue | ExternalID``S?`>
<!ENTITY % `Name` `EntityValue``S?`> {
<!ENTITY % `Name` `'"' ([^%&"] | PEReference | Reference)* '"' | "'" ([^%&'] | PEReference | Reference)* "'"``S?`> {
<!ENTITY % `Name` "`([^%&"] | %`Name`; | &`Name`; | &#`[0-9]+`; | &#x`[0-9a-fA-F]+`;)*`"`S?`> !
|
<!ENTITY % `Name` '`([^%&'] | %`Name`; | &`Name`; | &#`[0-9]+`; | &#x`[0-9a-fA-F]+`;)*`'`S?`> !
// with every option just once:
<!ENTITY % `Name` ""`S?`> || <!ENTITY % `Name` ''`S?`> !
<!ENTITY % `Name` "`[^%&"]*`"`S?`> || <!ENTITY % `Name` '`[^%&"]*`'`S?`> !
<!ENTITY % `Name` "%`Name`;"`S?`> || <!ENTITY % `Name` '%`Name`;'`S?`> !
<!ENTITY % `Name` "&`Name`;"`S?`> || <!ENTITY % `Name` '&`Name`;'`S?`> !
<!ENTITY % `Name` "&#`[0-9]+`;"`S?`> || <!ENTITY % `Name` '&#`[0-9]+`;'`S?`> !
<!ENTITY % `Name` "&#x`[0-9a-fA-F]+`;"`S?`> || <!ENTITY % `Name` '&#x`[0-9a-fA-F]+`;'`S?`> !
}
}
|||
<!ENTITY % `Name` `ExternalID``S?`> {
<!ENTITY % `Name` `'SYSTEM' S SystemLiteral | 'PUBLIC' S PubidLiteral S SystemLiteral``S?`> {
<!ENTITY % `Name` SYSTEM `SystemLiteral``S?`> {
<!ENTITY % `Name` SYSTEM "`[^"]*`"`S?`> !
||
<!ENTITY % `Name` SYSTEM '`[^']*`'`S?`> !
}
|||
<!ENTITY % `Name` PUBLIC `PubidLiteral` `SystemLiteral``S?`> {
<!ENTITY % `Name` PUBLIC `PubidLiteral` SYSTEM "`[^"]*`"`S?`> {
<!ENTITY % `Name` PUBLIC "`PubidChar*`" SYSTEM "`[^"]*`"`S?`> !
||
<!ENTITY % `Name` PUBLIC '`(PubidChar - "'")*`' SYSTEM "`[^"]*`"`S?`> !
}
|||
<!ENTITY % `Name` PUBLIC `PubidLiteral` SYSTEM "`[^']*`'`S?`> {
<!ENTITY % `Name` PUBLIC "`PubidChar*`" SYSTEM "`[^']*`'`S?`> !
||
<!ENTITY % `Name` PUBLIC '`(PubidChar - "'")*`' SYSTEM "`[^']*`'`S?`> !
}
}
}
}
}
/// JUST THE LEAVES
/// supported (space litaral outside of `` is equivalent to mandatory `S`)
<!ENTITY `Name` "`([^%&"] | %`Name`; | &`Name`; | &#`[0-9]+`; | &#x`[0-9a-fA-F]+`;)*`"`S?`>
<!ENTITY `Name` '`([^%&'] | %`Name`; | &`Name`; | &#`[0-9]+`; | &#x`[0-9a-fA-F]+`;)*`'`S?`>
// with every option just once:
<!ENTITY `Name` ""`S?`> || <!ENTITY `Name` ''`S?`>
<!ENTITY `Name` "`[^%&"]*`"`S?`> || <!ENTITY `Name` '`[^%&"]*`'`S?`>
<!ENTITY `Name` "%`Name`;"`S?`> || <!ENTITY `Name` '%`Name`;'`S?`>
<!ENTITY `Name` "&`Name`;"`S?`> || <!ENTITY `Name` '&`Name`;'`S?`>
<!ENTITY `Name` "&#`[0-9]+`;"`S?`> || <!ENTITY `Name` '&#`[0-9]+`;'`S?`>
<!ENTITY `Name` "&#x`[0-9a-fA-F]+`;"`S?`> || <!ENTITY `Name` '&#x`[0-9a-fA-F]+`;'`S?`>
/// unsupported
<!ENTITY `Name` SYSTEM "`[^"]*`"`S?`>
<!ENTITY `Name` SYSTEM ''`[^']*`'`S?`>
<!ENTITY `Name` PUBLIC "`PubidChar*`" SYSTEM "`[^"]*`"`S?`>
<!ENTITY `Name` PUBLIC '`(PubidChar - "'")*`' SYSTEM "`[^"]*`"`S?`>
<!ENTITY `Name` PUBLIC "`PubidChar*`" SYSTEM "`[^']*`'`S?`>
<!ENTITY `Name` PUBLIC '`(PubidChar - "'")*`' SYSTEM "`[^']*`'`S?`>
<!ENTITY `Name` SYSTEM "`[^"]*`" NDATA `Name``S?`>
<!ENTITY `Name` SYSTEM "`[^']*`' NDATA `Name``S?`>
<!ENTITY `Name` PUBLIC "`PubidChar*`" SYSTEM "`[^"]*`" NDATA `Name``S?`>
<!ENTITY `Name` PUBLIC '`(PubidChar - "'")*`' SYSTEM "`[^"]*`" NDATA `Name``S?`>
<!ENTITY `Name` PUBLIC "`PubidChar*`" SYSTEM "`[^']*`' NDATA `Name``S?`>
<!ENTITY `Name` PUBLIC '`(PubidChar - "'")*`' SYSTEM "`[^']*`' NDATA `Name``S?`>
<!ENTITY % `Name` "`([^%&"] | %`Name`; | &`Name`; | &#`[0-9]+`; | &#x`[0-9a-fA-F]+`;)*`"`S?`>
<!ENTITY % `Name` '`([^%&'] | %`Name`; | &`Name`; | &#`[0-9]+`; | &#x`[0-9a-fA-F]+`;)*`'`S?`>
// with every option just once:
<!ENTITY % `Name` ""`S?`> || <!ENTITY % `Name` ''`S?`>
<!ENTITY % `Name` "`[^%&"]*`"`S?`> || <!ENTITY % `Name` '`[^%&"]*`'`S?`>
<!ENTITY % `Name` "%`Name`;"`S?`> || <!ENTITY % `Name` '%`Name`;'`S?`>
<!ENTITY % `Name` "&`Name`;"`S?`> || <!ENTITY % `Name` '&`Name`;'`S?`>
<!ENTITY % `Name` "&#`[0-9]+`;"`S?`> || <!ENTITY % `Name` '&#`[0-9]+`;'`S?`>
<!ENTITY % `Name` "&#x`[0-9a-fA-F]+`;"`S?`> || <!ENTITY % `Name` '&#x`[0-9a-fA-F]+`;'`S?`>
<!ENTITY % `Name` SYSTEM "`[^"]*`"`S?`>
<!ENTITY % `Name` SYSTEM '`[^']*`'`S?`>
<!ENTITY % `Name` PUBLIC "`PubidChar*`" SYSTEM "`[^"]*`"`S?`>
<!ENTITY % `Name` PUBLIC '`(PubidChar - "'")*`' SYSTEM "`[^"]*`"`S?`>
<!ENTITY % `Name` PUBLIC "`PubidChar*`" SYSTEM "`[^']*`'`S?`>
<!ENTITY % `Name` PUBLIC '`(PubidChar - "'")*`' SYSTEM "`[^']*`'`S?`>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment