Philipp Hasenfratz: DTD Auszeichnungs(lücke|problem)

Beitrag lesen

Halihallo Forumer

In der Vorlesung gab es eine "hitzige" Diskussion zu folgendem Thema:

--auswahl.dtd--
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT auswahl (#PCDATA|name)*>
<!ELEMENT name (#PCDATA)>
--

Wir haben das Root-Element "auswahl", welches 0 oder mehrfach das Element "name" oder
PCDATA enthalten kann. Ein "gemsichtes" Inhaltsmodell.

folgende XML-Instanz wäre valide bezgl. dieser DTD:
--auswahl1.xml--
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE auswahl SYSTEM "auswahl.dtd">
<auswahl>test<name>test</name>test</auswahl>
--

und ebenso:

--auswahl2.xml--
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE auswahl SYSTEM "auswahl.dtd">
<auswahl></auswahl>
--

* bedeutet (0,n), das Element name wie PCDATA müssen also nicht zwingend vorkommen. Aber:
Was wenn dies gewollt ist? - Was, wenn name oder PCDATA mindestens einmal vorkommen
soll? - Der Versuch über <!ELEMENT auswahl (#PCDATA|name)+> (für (1,n)) bricht mit
einem Fehler ab "File not well-formed; % expected.".

Gesucht ist also

a) eine DTD, welche <auswahl></auswahl> verbietet, bzw. ein _mindestens_ einmaliges
   Auftreten von name oder PCDATA erlaubt.
b) eine Erklärung, warum (#PCDATA|name)+ Konstruktionen nicht well-formed sind
   (es sei eine "Konvention", wurde uns gesagt. OK, aber das ist keine Erklärung dafür,
    dass es mit '+' nicht auch funktionieren sollte|könnte)

Viele Grüsse

Philipp und hoffentlich auch stellvertretend für andere, die sich mit der selben Frage
"quälen".

--
RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.