Pourquoi est-ce pas une DTD XML valide? (Entité paramètre et #PCDATA)
-
25-09-2019 - |
Question
Utilisation de la DTD validateur , je suis informé que la DTD suivante est invalide.
<!ENTITY % text "(#PCDATA|L)*">
<!ELEMENT H (%text;)+>
<!ELEMENT L (#PCDATA)>
Le message d'erreur est: " "" A '(' caractère ou un type d'élément est requis dans la déclaration de type d'élément" H à la ligne 2, colonne 22
Quelqu'un peut-il s'il vous plaît indiquer pourquoi il est invalide? Et comment puis-je le rendre valide? Le message d'erreur est pas exactement très sympathique pour moi. Merci.
La solution
Vous ne pouvez pas appliquer qu'un élément avec un contenu mixte doit avoir au moins un nœud enfant. Votre DTD devient
<!ELEMENT H ((#PCDATA|L)*)+>
lorsque l'entité est étendu. La seule forme autorisée pour les éléments dont le contenu est mélangé
(#PCDATA | A | B | C)*
où A, B et C sont des éléments enfants possibles. #PCDATA
doit être le premier choix et l'ensemble doivent être autorisés à répéter 0 fois-infini, à savoir l'astérisque est nécessaire.