Warum ist das nicht ein gültiger XML-DTD? (Parameter Einheit und #PCDATA)
-
25-09-2019 - |
Frage
Mit dem DTD-Validator hier , ich bin darüber informiert, dass die folgende DTD ungültig ist.
<!ENTITY % text "(#PCDATA|L)*">
<!ELEMENT H (%text;)+>
<!ELEMENT L (#PCDATA)>
Die Fehlermeldung ist: „‚‘A‚(‘Zeichen oder ein Elementtyp innerhalb Erklärung Elementtyp erforderlich sind,“ H in Zeile 2, Spalte 22
Kann jemand bitte darauf hinweisen, warum es ungültig ist? Und wie kann ich es gültig zu machen? Die Fehlermeldung ist nicht gerade sehr freundlich zu mir. Danke.
Lösung
Sie können nicht erzwingen, dass ein Element mit gemischtem Inhalt mindestens ein Kind Knoten haben muss. Ihre DTD wird
<!ELEMENT H ((#PCDATA|L)*)+>
, wenn das Unternehmen expandiert wird. Die einzige erlaubte Form für Elemente mit gemischtem Inhalt ist
(#PCDATA | A | B | C)*
wobei A, B und C sind möglich untergeordnete Elemente. #PCDATA
muss werden die erste Wahl und die Menge muss erlaubt sein 0-unendlich-mal zu wiederholen, das heißt das Sternchen erforderlich ist.