2010-12-13 52 views
1

Est-ce que quelqu'un sait comment un élément de contenu mixet (en dtd) il est nécessaire d'ajouter le "*" à la fin?dtd et contenu mixte

Par exemple: <!ELEMENT note (#PCDATA|to|from|header|message)*>

Je reffering au cas où je ne veux pas répéter quoi que ce soit à nouveau ... Je veux juste être en mesure de choisir entre #PCDATA et d'autres éléments.

Je sais que si je laisse tomber le « * » à la fin de la decleration je vais obtenir une mauvaise DTD decleration ... Mais - Je ne sais pas quelle est la raison de cette ...

Quelqu'un sait pourquoi?

+0

Pour une raison quelconque l'exemple que j'ai écrit ne montre pas ... L'exemple est: amiad21

Répondre

0

Vous voulez utiliser des

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE things [ 
    <!ELEMENT things ANY> 
]> 
<things> 
    <person name="a" /> 
    <cats /> 
    <dogs /> 
    <animals><a rel="gogo" /></animals> 
</things> 

En outre, le * est l'opérateur de zéro à plusieurs occurrences. Donc le (element|element2)* dit soit ou/et

6

Vous rencontrez cette restriction parce que le modèle de contenu mixte est seulement autorisé à contraindre quels éléments se produisent pas leur ordre ou le nombre d'entre eux. C'est, j'en ai peur, requis par le XML Specification lui-même.

Le contenu mélangé est dur J'ai peur. Le modèle a été conçu avec des documents à l'esprit - cela a du sens quand vous pensez au texte en ligne mais pas dans beaucoup d'autres cas. Si vous avez le choix, les meilleures pratiques suggèrent que vous créiez un élément pour contenir votre PCDATA. Si vous ne pouvez pas alors j'ai peur que vous soyez coincé avec les limites des modèles de contenu mixte (l'utilisation d'un autre langage de schéma n'aide pas beaucoup non plus j'ai peur).

+0

Salut, tout d'abord - Thanx ! Je sais que c'est la spécification ... J'essaie de trouver whay c'est le cas? Quel problème dans le cas où le * n'était pas nécessaire? – amiad21

+0

Ah :) C'est un bon début. Il existe un problème qui existe dans SGML appelé «contenu mixte pernicieux». Si vous google, vous trouverez de bonnes descriptions. XML a été conçu de sorte qu'un contenu mixte pernicieux ne puisse pas se produire. Cette restriction du modèle de contenu mixte garantit que cela ne peut pas arriver. –