Auge: DTD, mehrfach vorkommen könnende optionale Elemente

Beitrag lesen

Hallo

Und das verhindert (grundsätzlich), dass jemand Beispiele mit Beschreibung erstellt? Klar, die Frage lässt sich subjektiv beantworten; Ich habe nichts dergleichen gefunden, du sagst, ich könne es nicht finden …

Ich schrieb, so etwas wird man kaum finden, wüsste jedenfalls spontan keine Quelle. DTD-Syntax ist aber durch die wenigen Möglichkeiten eigentlich leicht zu durchschauen, wenn man die Indikatoren (+ * ?) nicht gleich zu sehr verschachtelt.

Ok, *zu viele* Möglichkeiten gibt es nicht. Was aber bei nicht verstandenen Verschachtelungsregeln passieren kann, sehen wir gleich im Folgenden …

An der Stelle klärt sich die ursprüngliche Frage endgültig. <!ELEMENT objekttechnik (frequenzbereich, (filtertyp, rueckkanal, verkabelungstyp)*) > reicht, denn auch verkabelungstyp ist nicht oder einmal oder mehrmals möglich.

Das bedeutet, frequenzbereich muss genau 1x vorkommen,

… ja …

gefolgt von 0x (filtertyp, rueckkanal, verkabelungstyp) bis n-fach (filtertyp, rueckkanal, verkabelungstyp). Es muss also immer die gesamte Dreiergruppe (…) erscheinen oder fehlen. Wenn das gewünscht ist, dann reicht es so.

… nein.

Beim kacken erwischt! Es soll eben nicht sein, dass wenn, dann alle drei Elemente in der gleichen Anzahl vorkommen müssen. Jedes der optionalen Elemente kann einzeln vorkommen.

Folgende Kombinationen sind möglich:

 <objekttechnik>  
  <frequenzbereich obergrenze="466" />  
 </objekttechnik>  
<!-- oder -->  
 <objekttechnik>  
  <frequenzbereich obergrenze="466" />  
  <filtertyp>OF</filtertyp>  
 </objekttechnik>  
<!-- oder -->  
 <objekttechnik>  
  <frequenzbereich obergrenze="466" />  
  <rueckkanal faehig="ja" vorhanden="ja" />  
 </objekttechnik>  
<!-- oder -->  
 <objekttechnik>  
  <frequenzbereich obergrenze="466" />  
  <verkabelungstyp typ="Baum" />  
 </objekttechnik>  
<!-- oder auch in Kombination -->  
<objekttechnik>  
  <frequenzbereich obergrenze="466" />  
  <filtertyp>OF</filtertyp>  
  <rueckkanal faehig="ja" vorhanden="ja" />  
  <verkabelungstyp typ="Baum" />  
  <verkabelungstyp typ="Singleline" />  
 </objekttechnik>

Wenn ich dich richtig verstehe, bedeutet eine gemeinsame Klammerung auch das zwangsläufig gemeinsame Auftreten der Elemente. Wenn ich aber möchte, dass neben dem verpflichtend anzugebenden Frequenzbereich der Filtertyp und/oder der Verkabelungstyp angegeben werden können, aber nicht müssen und auch _nicht zusammen_ müssen, brauche ich für jedes der Elemente eine eigene Klammerung „(a, (b)*, c()*)“?

Der Rückkanal ist im übrigen (physikalisch an der Adresse) nur kein- oder einmal da. Da das in XML nicht definierbar ist, überlege ich, an der Datenquelle das Element *immer* einzufügen und das in der DTD auch so vorzuschreiben. In den obigen Beispielen ist das noch nicht berücksichtigt.

Allerdings würde ich um die drei Elemente noch ein Containerelement bauen, …

Ich denke, mit der Info, dass die drei optionalen Elemente nicht zwingend zusammen gehören, hat sich die Idee erledigt.

Tschö, Auge

--
Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
Terry Pratchett, "Wachen! Wachen!"
ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
Veranstaltungsdatenbank Vdb 0.3