Quand vous dites "MyElement ... doit [être] composé par ELEMENTA, elementB et tout autre élément", voulez-vous dire
- (A) Un événement de MyElement peut avoir zéro ou plus d'enfants; chaque enfant peut être nommé
elementA
, elementB
, ou toute autre chose.
ou
- (B) Chaque occurrence de MyElement doit avoir au moins un enfant nommé
elementA
, au moins un nom elementB
, soit dans l'ordre, et peut avoir d'autres enfants.
ou
- (C) Chaque occurrence de MyElement doit avoir exactement un enfant nommé
elementA
, exactement un nom elementB
, soit dans l'ordre, et peut avoir d'autres enfants.
Si le mot-clé dans DTDs ANY
étaient une sorte de joker qui correspond tout élément quel que soit le nom, le modèle de contenu que vous montrer serait possibilité de match (A). Ce n'est pas ce que le mot clé signifie, donc la déclaration que vous montrez ne fait pas ce que vous voulez: la déclaration que vous donnez signifie simplement que toute occurrence de MYELEMENT peut contenir zéro ou plusieurs éléments, à condition que chaque enfant de MYELEMENT soit nommé elementA
ou elementB
ou ANY
. Si (A) est ce que vous voulez, il n'est pas nécessaire de spécifier elementA
ou elementB
du tout; tout ce dont vous avez besoin est un joker qui correspond à n'importe quel élément. DTDs ont pas de caractère générique, mais si vous ne me dérange pas de caractère permettant des données ainsi que des éléments de l'enfant, la déclaration
<!ELEMENT MYELEMENT ANY >
se rapprocherait de vos spécifications. Dans XSD, vous utiliseriez le caractère générique xsd:any
.
Si vous voulez (B) ou (C), alors XSD 1.0 peut se rapprocher; vous pouvez autoriser les éléments que vous nommez, ainsi que tous les éléments d'un espace de noms différent, en utilisant un caractère générique avec namespace="##other"
.
Si la commande n'a aucune signification, vous trouverez le modèle de contenu plus facile à spécifier si vous spécifiez une séquence arbitraire.(La séquence variable est nécessaire lorsqu'elle transmet des informations, lorsqu'elle ne véhicule pas d'informations, elle ne fait que compliquer la vie et ouvre un canal secret.)