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/>.