Hi.
Ich habe eine Frage zu DTD, aber erstmal mein XML-Code:
Mein XSL-File ist auch so weit in Ordnung, ich denke, dass es nicht zur Problemlösung benötigt wird.
Jetzt meine DTD-Datei:
So. Jetzt zu meiner Frage:
Es gibt ja 4 verschiedene Wiederholungs-Oprtatoren in DTD.
? = optionales Element / höchstens Einmal
+ = erforderliches und wiederholbares Element / mindestens einmal
* = optionales und wiederholbares Element / beliebig
<nichts> = einmaliges element / genau einmal
Jetzt mein Problem: Wo lege ich z.B. fest, welchen Operator das Element "strasse" bekommt?
Ich kann es einmal beim "strasse"element selbst festlegen, das würde dann so aussehen:
In dem Fall hat das Element "strasse" ein "+" bekommen (der Sinn davon ist jetzt erstmal egal, es geht ums Prinziep).
ABER: Ich kann es ja auch beim übergeprdneten Element festlegen, nämlich so:
Das Problem ist jetzt nur, dass ich nicht weiß, ob ich es an beiden Stellen festlegen muss.
Da ja "kein Operator" auch ein Operator ist, kann ich es auch nicht eien der beiden Stellen irgendwie "leer" lassen, da es "leer" nicht gibt bzw."leer" auch ein Operator ist.
Muss ich also den Operator für EIN Element immer an ZWEI Stellen festlegen? Oder überschreibt eine der beiden Stellen die andere Stelle?
Ich hoffe, dass mir darauf jemand Antwort geben kann
Vielen Dank schonmal
MFG edvxpert
Ich habe eine Frage zu DTD, aber erstmal mein XML-Code:
Code:
<!DOCTYPE datensatz SYSTEM "test.dtd" > <?xml-stylesheet type="text/xsl" href="test.xsl" ?> <datensatz> <kunde> <vorname>Thomas</vorname> <nachname>lala</nachname> <anrede>Herr</anrede> <geschlecht>m</geschlecht> <anschrift> <strasse>lalaweg</strasse> <hausnummer>23</hausnummer> <plz>50829</plz> <ort>Köln</ort> </anschrift> <telefonnummer>0190666666</telefonnummer> </kunde> <kunde> <vorname>Felix</vorname> <nachname>blabla</nachname> <anrede>Herr</anrede> <geschlecht>m</geschlecht> <anschrift> <strasse>IrgendwasStr.</strasse> <hausnummer>20</hausnummer> <plz>50829</plz> <ort>köln</ort> </anschrift> <telefonnummer>0190666666</telefonnummer> </kunde> </datensatz>
Jetzt meine DTD-Datei:
Code:
<!ELEMENT datensatz (kunde)*> <!ELEMENT kunde (vorname, nachname, anrede, geschlecht, anschrift, telefonnummer*)*> <!ELEMENT vorname (#PCDATA)> <!ELEMENT nachname (#PCDATA)> <!ELEMENT anrede (#PCDATA)> <!ELEMENT geschlecht (#PCDATA)> <!ELEMENT anschrift (strasse, hausnummer, plz, ort)*> <!ELEMENT strasse (#PCDATA)> <!ELEMENT hausnummer (#PCDATA)> <!ELEMENT plz (#PCDATA)> <!ELEMENT ort (#PCDATA)> <!ELEMENT telefonnummer (#PCDATA)*>
Es gibt ja 4 verschiedene Wiederholungs-Oprtatoren in DTD.
? = optionales Element / höchstens Einmal
+ = erforderliches und wiederholbares Element / mindestens einmal
* = optionales und wiederholbares Element / beliebig
<nichts> = einmaliges element / genau einmal
Jetzt mein Problem: Wo lege ich z.B. fest, welchen Operator das Element "strasse" bekommt?
Ich kann es einmal beim "strasse"element selbst festlegen, das würde dann so aussehen:
Code:
<!ELEMENT strasse (#PCDATA)+>
ABER: Ich kann es ja auch beim übergeprdneten Element festlegen, nämlich so:
Code:
<!ELEMENT anschrift (strasse+, hausnummer, plz, ort)*>
Da ja "kein Operator" auch ein Operator ist, kann ich es auch nicht eien der beiden Stellen irgendwie "leer" lassen, da es "leer" nicht gibt bzw."leer" auch ein Operator ist.
Muss ich also den Operator für EIN Element immer an ZWEI Stellen festlegen? Oder überschreibt eine der beiden Stellen die andere Stelle?
Ich hoffe, dass mir darauf jemand Antwort geben kann
Vielen Dank schonmal
MFG edvxpert
Comment