Rolf b: Warum ist dieses DTD ungültig

Beitrag lesen

Hallo,

mein Sohn muss sich gerade für die Uni mit DTDs herumschlagen. Ich selbst bin in meinem Leben bisher immer drumherumgekommen und lerne deshalb auch gerade erst den Umgang damit :)

Themeneingrenzung: Dies hier ist ein reduziertes XML zur Darstellung des Problems. Es hat keinerlei inhaltliche Bedeutung. Es geht mir ausschließlich um das Thema "Verwendung von Parameter Entities".

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE test [
<!ELEMENT test (bla)>
<!ENTITY % schnurz "foo, bar">
<!ELEMENT bla (%schnurz;)>
<!ELEMENT foo (#PCDATA)>
<!ELEMENT bar (#PCDATA)>
]>
<test>
    <bla>
        <foo>Huhu</foo>
        <bar>SelfHTML</bar>
    </bla>
</test>

Alle XML Validatoren, die ich online gefunden habe, und auch der in NetBeans integrierte, regen sich über <!ELEMENT bla (%schnurz;)> auf. Die Fehlermeldung ist:

Das Zeichen "(" oder ein Elementtyp ist in der Deklaration des Elementtyps "bla" erforderlich.

Dabei sollte doch, auch gemäß dem SelfHTML Wiki, %schnurz; einfach textuell durch "foo, bar" ersetzt werden und zu einer Elementdefintion <!ELEMENT bla (foo, bar)> führen. Wenn ich die Ersetzung manuell im Sourcecode mache, ist alles gut.

Was mache ich falsch, was habe ich falsch verstanden?

Rolf