Ich möchte eine DTD erstellen. Je nach Fahrzeugtyp soll das Attribut „autotyp“ mit einem unterschiedlichen Wert vorbesetzt werden. Kann mir jemand die untenstehende DTD so abwandeln, daß das funktioniert?
Ich möchte das Element „autotyp“ durch ein Attribut ersetzen, das je nach Element (Sportwagen oder Omnibus) einen unterschiedlichen Wert in der DTD zugewiesen bekommt.
… ja klar, durch den Kommentar ist die Syntax nicht ganz eingehalten… sollte aber trotzdem klar werden, was ich meine.
… sollte aber trotzdem klar werden, was ich meine.
Mal überlegen… warum habe ich nachgefragt?
[ ] mir ist langweilig
[ ] mir ist nicht klar, was Du meinst
Soll ‚autotyp‘ ein Attribut von sein (dann ist Deine Anforderung mit einer DTD nicht erfüllbar) oder ein Attribut von bzw. (dann geht’s)?
Falls letzteres:
Soll das Attribut frei sein und nur als default den angegebenen Wert haben:
Oder soll das Attribut einen festen Wertebereich haben und als default den angegebenen Wert:
Oder soll das Attribut keinen anderen als den gewünschten Wert haben können:
Was für eine Struktur willst Du denn letztlich darstellen? Die von Dir gewünschte Redundanz lässt vermuten, dass das Design noch Schwächen hat. Warum benötigst Du die Information Sportwagen/Omnibus zweimal?
DTD Vorbesetzung Attribute je nach Element
Yep, sollte ein Attribut von „auto“ sein. Mit unterschiedlicher Wertzuweisung je nach „autotyp“. O.k., geht anscheinend nicht.
Dein #FIXED Vorschlag kommt der Idee nun am nächsten.
Kann ich denn Attribut „autotyp“ sowohl für „Sportwagen“ als auch für „Omnibus“ verwenden? In anderen Worten: muß der Name „autotyp“ innerhalb der DTD nicht unique sein?
Hintergrund: Ich möchte ein „auto“ beschreiben. Das hat zwei (alternative) Ausprägungen: „Sportwagen“ oder „Omnibus“. Genau diese Ausprägung sollte im Wert des Attributes „autotyp“ ausgedrückt sein.
Yep, sollte ein Attribut von „auto“ sein. Mit
unterschiedlicher Wertzuweisung je nach „autotyp“. O.k., geht
anscheinend nicht.
Nicht mit einer DTD, nein. Andererseits kannst Du eigentlich mit allen XML-Werkzeugen genausogut eine Abfrage „Hat Attribut x den Wert y?“ wie „hat der Knoten einen Kindknoten x?“ machen. So gesehen ist beides vielleicht gar nicht notwendig?
Kann ich denn Attribut „autotyp“ sowohl für „Sportwagen“ als
auch für „Omnibus“ verwenden? In anderen Worten: muß der Name
„autotyp“ innerhalb der DTD nicht unique sein?
Nein, ein Attributname darf an jedem Element vorkommen. Das Attribut darf sogar an jedem Element anders definiert werden. Ob das sinnvoll ist, steht auf einem anderen Blatt.
Hintergrund: Ich möchte ein „auto“ beschreiben. Das hat zwei
(alternative) Ausprägungen: „Sportwagen“ oder „Omnibus“. Genau
diese Ausprägung sollte im Wert des Attributes „autotyp“
ausgedrückt sein.
Wenn Sportwagen und Omnibus gleiche Inhaltsmodelle haben, könntest Du auf die Elemente und verzichten und dich auf beschränken.
Andererseits könntest Du vielleicht auch auf verzichten und dort, wo stehen soll, unmittelbar oder erlauben.
Nicht mit einer DTD, nein. Andererseits kannst Du eigentlich
mit allen XML-Werkzeugen genausogut eine Abfrage „Hat Attribut
x den Wert y?“ wie „hat der Knoten einen Kindknoten x?“
machen. So gesehen ist beides vielleicht gar nicht notwendig?
Ja, muß ich mal in Erwägung ziehen, könnte gehen… die andere Variante wäre mir z.Zt. noch lieber.
Wenn Sportwagen und Omnibus gleiche Inhaltsmodelle haben,
könntest Du auf die Elemente und
verzichten und dich auf beschränken.
Ganz so einfach ist es dann doch nicht, da Sportwagen und Omnibus noch eine ganze Reihe zusätzliche Elemente bekommen, die typ-spezifisch sind.
Andererseits könntest Du vielleicht auch auf verzichten
und dort, wo stehen soll, unmittelbar oder
erlauben.
In dem Beispiel-Fall sicher. Aber der Schnipsel ist halt in was Größeres eingebettet.