From: Pierre Attar (pat@tireme.fr)
Date: 05/02/2004 - 15:50
Bonjour,
Je suis en train d'écrire des DTDs faiant un usage intensif des entités
paramètre.
Je voudrais écrire la chose suivante :
testMixed.dtd
<?xml version="1.0" encoding="UTF-8"?>
<!ENTITY % emphasis.Grp '(emph|sub|sup)*'>
<!ENTITY % paraType '(#PCDATA|%emphasis.Grp;)*'>
<!ELEMENT p %paraType; >
<!ELEMENT emph (#PCDATA)>
<!ELEMENT sub (#PCDATA)>
<!ELEMENT sup (#PCDATA)>
En gros, un mixed content (paraType) appelant lui même une entité paramètre
(emphasis.Grp) qui contient un modèle de contenus ("(xxx|yy|zzz)*").
Quand je teste tout cela avec différents parsers, ils ralent tous.
Fichier de test=mixedExtern.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE p SYSTEM "testMixed.dtd">
<p>essai</p>
XMLSpy rale
Microsoft rale :
Nom commencé avec un caractère non valide.
Texte XML : (#PCDATA|(emph|sub|sup)*)*
Saxon rale:
Error on line 4 column 28 of file:/T:/temp/tests/testMixed.dtd:
Error reported by XML parser: Not a name start character, U+28
Clark NSGMLS rale :
T:\proj\edf\repMod\proto>nsgmls -p -wxml T:\temp\tests\mixedExtern.xml
nsgmls:T:\temp\tests\testMixed.dtd:4:22:W: member of model group containing
#PCDATA is a model group
nsgmls:T:\temp\tests\testMixed.dtd:4:22:W: member of model group containing
#PCDATA has occurrence indicator
En toute logique, cela ne devrait pas marcher var la spec demande un
"Name", un fois les entités résolues.
[51] Mixed ::=
'(' <http://www.w3.org/TR/2004/REC-xml11-20040204/#NT-S>S?
'#PCDATA' (<http://www.w3.org/TR/2004/REC-xml11-20040204/#NT-S>S? '|'
<http://www.w3.org/TR/2004/REC-xml11-20040204/#NT-S>S?
<http://www.w3.org/TR/2004/REC-xml11-20040204/#NT-Name>Name)*
<http://www.w3.org/TR/2004/REC-xml11-20040204/#NT-S>S? ')*'
|
'(' <http://www.w3.org/TR/2004/REC-xml11-20040204/#NT-S>S?
'#PCDATA' <http://www.w3.org/TR/2004/REC-xml11-20040204/#NT-S>S? ')'
Cependant, comme j'ai essayé différents parsers qui certes n'acceptent pas
mais toutefois avec un message pas aussi clair que cela, j'aimerai savoir
ce que vous en pensez et si cela est vraiment impossible à écrire ou pas.
Pierre
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Archive générée par hypermail 2.1.3 le 28/06/2004 - 11:05 UTC
webmaster@xmlfr.org
|