Élément <xdr:ElementType>
Définit un type d'élément à utiliser dans l'élément Schema de schéma XDR (XML-Data Reduced).
<ElementType
content="{empty | textOnly | eltOnly | mixed}"
dt:type="datatype"
model="{open | closed}"
name="idref"
order="{one | seq | many}">
Attributs
content
Indique si le contenu doit être vide ou s'il peut comporter du texte et/ou des éléments. Les valeurs suivantes peuvent être affectées à cet attribut. La valeur par défaut de l'attribut content est mixed. Lorsque l'attribut content est défini sur mixed, l'attribut order exige une valeur many.empty
L'élément ne peut pas avoir de contenu.
textOnly
L'élément ne peut contenir que du texte, pas des éléments. Si l'attribut model est défini sur open, l'élément peut contenir du texte et d'autres éléments non nommés.
eltOnly
L'élément ne peut contenir que les éléments spécifiés. Il ne peut pas contenir de texte libre.
mixed
L'élément peut contenir un mélange d'éléments nommés et de texte. La valeur par défaut est mixed. Si la valeur de l'attribut content est mixed, les attributs minOccurs et maxOccurs ne provoquent pas d'erreur de validation si le nombre d'éléments enfants n'est pas compris dans ces limites.
Remarque : |
---|
Les éléments dont content="empty" et model="open" ne sont pas autorisés. |
Exemple
Description
L'exemple suivant illustre l'utilisation de l'attribut content avec différentes valeurs.
Exemple de code hérité
L'exemple suivant illustre l'attribut content pour une DTD (définition de type de document) équivalente.
- dt:type
Type de données de l'élément. Les types de données valides sont définis le document sur les références des types de données de schéma XDR.
model
Indique si le contenu ne peut comprendre que ce qui est défini dans le modèle de contenu. La valeur par défaut est open.<ElementType name="x" model="open"/>
Lorsque le modèle est défini sur open, l'élément peut comprendre d'autres éléments ou attributs que ceux qui sont explicitement déclarés dans le modèle de contenu. Ces balises supplémentaires peuvent provenir du même espace de noms ou d'un espace différent. S'ils sont dans le même espace de noms, une définition ElementType ou AttributeType correspondante doit exister dans le schéma.
Lorsque le modèle est défini sur closed, l'élément ne peut pas comprendre d'autres éléments ou du contenu mixte non spécifié dans le modèle de contenu. La DTD utilise un modèle closed.
name
Nom de l'élément. Cet attribut est obligatoire. Si ce type d'élément est déclaré comme un enfant valide d'un autre type d'élément, ce nom est spécifié dans un élément element.<ElementType name="x"> </ElementType>
La DTD équivalente est la suivante.
<!ELEMENT x EMPTY>
order
Indique comment les éléments doivent s'afficher. Cet indicateur peut prendre les valeurs suivantes.one
N'autorise qu'un seul élément d'un ensemble. Pour qu'un document soit correctement validé lorsque l'attribut one est spécifié, l'attribut model de l'élément ElementType doit être défini sur closed.
seq
Exige que les éléments s'affichent dans l'ordre spécifié.
many
Permet d'afficher (ou de ne pas afficher) les éléments dans n'importe quel ordre. Si vous spécifiez many pour l'attribut order, les valeurs de maxOccurs n'ont plus de sens pour la validation.
La valeur seq est obligatoire pour spécifier des séquences valides. Par exemple, elle peut être utilisée pour spécifier quand une séquence particulière, comme
x1,y1
oux2,y2
, est valide, mais qu'aucune autre combinaison possible n'est valide. La valeur seq remplit le même rôle que les parenthèses dans une DTD. La valeur par défaut est seq.L'exemple suivant illustre le paramètre one. La valeur de l'attribut model doit être closed lorsque la valeur one est spécifié pour l'attribut order.
L'exemple suivant illustre le paramètre seq.
L'exemple suivant illustre le paramètre many.
Si le paramètre many est affecté à l'attribut order, les attributs minOccurs et maxOccurs n'ont plus de sens pour la validation. Au lieu d'utiliser le paramètre many pour l'attribut order en combinaison avec minOccurs et maxOccurs, utilisez le paramètre seq. Par exemple, dans le schéma suivant,
order="seq"
.
Si le document XML suivant est validé par rapport au schéma ci-dessus, la validation échoue parce que le nombre d'éléments Publisher dépasse la valeur spécifiée pour maxOccurs (1). Toutefois, si order est défini sur many, la validation réussit à tort parce que le paramètre maxOccurs="1"
est ignoré.
Informations sur l'élément
Nombre d'occurrences |
Illimité |
Éléments parents |
|
Éléments enfants |
attribute, AttributeType, datatype, description, element, group |
Propriétés de l'élément
BALISE | Explication |
---|---|
Name="idref" |
Les éléments ElementType et AttributeType doivent avoir un nom. |
Model="open" |
Des éléments ou du contenu mixte non spécifié dans le modèle de contenu sont autorisés dans cet élément. Pour sous-classer une définition spécifique, ce paramètre doit être open (si l'héritage doit encore être implémenté). |
Model="closed" |
Des éléments ou du contenu mixte non spécifié dans le modèle de contenu ne sont pas autorisés dans cet élément. |
content="empty" |
L'élément ne peut rien contenir. |
content="textOnly" |
L'élément ne peut contenir que du texte, pas des éléments. Si model="open", l'élément peut contenir du texte et d'autres éléments non nommés. |
* content="mixed" |
L'élément peut contenir un mélange d'éléments nommés et de texte. Si model="open", l'élément peut contenir du texte et d'autres éléments non nommés. Implique order='many' et maxOccurs="*" ! |
order='one' |
N'autorise qu'un seul élément d'un ensemble. |
* order='seq' |
Indique que les éléments doivent s'afficher dans l'ordre spécifié. C'est similaire à la valeur par défaut pour une liste d'éléments, mais cette déclaration est nécessaire pour regrouper des séquences, comme dans l'exemple où |
order='many' |
Les éléments peuvent s'afficher (ou ne pas s'afficher) dans n'importe quel ordre. |
dt:type=datatype |
Spécifie que l'élément doit contenir un entier. Pour une liste des types de données primitifs, voir le document sur les références des types de données de schéma XDR. |
Remarques
Le terme « type d'élément » fait référence au type d'élément dont tous les éléments qui partagent un nom sont des instances. Les types d'éléments sont déclarés dans des schémas ; les éléments se trouvent dans des documents. Les types d'éléments sont déclarés à l'aide du type d'élément ElementType.