Operador ?
El operador ? permite indicar que un elemento es opcional, es decir, que aparece una sola vez o ninguna.
La cardinalidad sería 0-1 (uno o ninguno).
Un elemento
El operador ? a un elemento se aplica de la siguiente manera:
<!ELEMENT telefono (trabajo?, casa )>
En el caso anterior, se está definiendo que:
- El elemento
<trabajo>puede aparecer una vez o ninguna. - El elemento
<casa>debe aparecer una vez y después de<trabajo>(en el caso de estar definido). Si<trabajo>no está definido, se muestra solo.
Serían válidos los siguientes XML:
<telefono>
<trabajo>634195909</trabajo>
<casa>690756558</casa>
</telefono>
<telefono>
<casa>690756558</casa>
</telefono>
Los siguientes XML no serían válidos:
<telefono></telefono>
<telefono>
<trabajo>634195909</trabajo>
<trabajo>981510050</trabajo>
<casa>690756558</casa>
</telefono>
Varios elementos
El operador ? aplicado a un grupo de elementos se realizaría de la siguiente forma:
<!ELEMENT telefono ((prefijo | pais)?, numero )>
En el caso anterior, se está definiendo que:
- Se debe realizar una elección entre
<prefijo>y<pais>. Solo se puede incluir uno. - Una vez realizada la elección, indicar uno de los dos elementos es opcional. Por lo tanto, puede incluirse
<prefijo>,<pais>o ninguno de ellos. - El elemento
<numero>debe aparecer una vez y después de<prefijo>o<pais>(en el caso de estar definido). Si<prefijo>o<pais>no está definido, se muestra solo.
Serían válidos los siguientes XML:
<telefono>
<prefijo>0034</prefijo>
<numero>682214867</numero>
</telefono>
<telefono>
<pais>España</pais>
<numero>615321259 </numero>
</telefono>
<telefono>
<numero>669453046</numero>
</telefono>