Wenn Sie sagen, "myElement ... must [wird] komponiert von Elementa, elementb und jedem anderen Elemente", meinen Sie
- (A) Ein Auftreten von myElement haben null oder mehr Kinder; Jedes Kind kann
elementA
, elementB
oder irgendetwas anderes genannt werden.
oder
- (B) Jedes Auftreten von myElement sollte in beliebiger Reihenfolge mindestens ein Kind namens
elementA
, mindestens eines mit dem Namen elementB
, haben und können andere Kinder auch haben.
oder
- (C) Jedes Auftreten von myElement sollte genau ein Kind
elementA
genannt hat, genau ein elementB
genannt, in beliebiger Reihenfolge und kann andere Kinder haben auch.
Wenn in DTDs das Schlüsselwort ANY
eine Art Platzhalter ist, die irgendein Element angepasst, unabhängig von Namen, dann ist das Content-Modell Sie zeigen würde Möglichkeit übereinstimmen (A). Das ist aber nicht das, was das Keyword bedeutet, also macht die von Ihnen gezeigte Deklaration nicht das, was Sie wollen: Die Deklaration, die Sie geben, bedeutet einfach, dass jedes Vorkommen von MYELEMENT null oder mehr Elemente enthalten kann, solange jedes Kind von MYELEMENT benannt wird elementA
oder elementB
oder ANY
.
Wenn (A) das ist, was Sie wollen, müssen Sie elementA
oder elementB
überhaupt nicht angeben; Alles was Sie brauchen ist ein Platzhalter, der zu jedem Element passt. obwohl DTDs haben keine solche Platzhalter, wenn Sie Datenzeichen sowie untergeordneten Elemente dagegen nicht erlaubt, die Erklärung
<!ELEMENT MYELEMENT ANY >
nah an Ihrem spec kommen würde. In XSD würden Sie den xsd:any
Platzhalter verwenden.
Wenn Sie wollen, ist (B) oder (C), dann kann XSD 1.0 nah kommen; Sie können die Elemente, die Sie benennen, sowie alle Elemente in einem anderen Namespace mit einem Platzhalter mit namespace="##other"
versehen.
Wenn die Reihenfolge keine Bedeutung hat, können Sie das Inhaltsmodell leichter angeben, wenn Sie eine beliebige Sequenz angeben.(Eine variable Sequenz ist notwendig, wenn sie Informationen übermittelt; wenn sie keine Informationen übermittelt, verkompliziert sie nur die Lebensdauer und öffnet einen verborgenen Kanal.)