Announcement

Collapse
No announcement yet.

Frage zu DTD-Wiederholungsoperatoren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Frage zu DTD-Wiederholungsoperatoren

    Hi.
    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>
    Mein XSL-File ist auch so weit in Ordnung, ich denke, dass es nicht zur Problemlösung benötigt wird.

    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)*>
    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:
    Code:
    <!ELEMENT strasse (#PCDATA)+>
    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:
    Code:
    <!ELEMENT anschrift (strasse+, hausnummer, plz, ort)*>
    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

  • #2
    Kann geschlossen werden. Hatte die Notation falsch verstanden und wenn man sie richtig verstanden hat, dann gibt es die Frage, die ich gestellt habe, gar nicht xD

    MFG edvxpert

    Comment

    Working...
    X