[Parser de DTD] AttDef ::= S Name S AttType S DefaultDecl
Bonjour,
je développe un parser de DTD. Je veux parser quelque chose du type :
Code:
1 2 3
| <!ELEMENT Point EMPTY>
<!ATTLIST Point x CDATA #REQUIRED
y CDATA #REQUIRED> |
mais pour typage plus fort, voilà ce que je cherche à parser
Code:
1 2 3 4 5
| <!ENTITY % xcoord "CDATA">
<!ENTITY % ycoord "CDATA">
<!ELEMENT Point EMPTY>
<!ATTLIST Point x %xcoord; #REQUIRED
y %ycoord; #REQUIRED> |
Le soucis arrive au moment de parser la dernière ligne. D'après la norme,
XML1.1, rien n'est prévu pour faire une référence à une entité (PEReference) dans la liste des attributs AttDef.
Code:
1 2 3
| [52] AttlistDecl ::= '<!ATTLIST' S Name AttDef* S? '>'
[53] AttDef ::= S Name S AttType S DefaultDecl
[54] AttType ::= StringType | TokenizedType | EnumeratedType |
Code:
[69] PEReference ::= '%' Name ';'
Ma déclaration des attributs pour un Point ne serait-elle pas standard ?