Hasta donde tengo entendido (no me creas), no es posible hacer ese tipo de declaraciones "excluyentes" en XML.
Para saber cómo está construido el DTD de XHTML, siempre
puedes consultar la fuente.
Atendiendo a tu duda concreta, el elemento
a está declarado como sigue:
Código xml:
Ver original<!--================== The Anchor Element ================================-->
<!-- content is %Inline; except that anchors shouldn't be nested -->
<!ELEMENT a %a.content;>
<!ATTLIST a
%attrs;
%focus;
charset %Charset; #IMPLIED
type %ContentType; #IMPLIED
name NMTOKEN #IMPLIED
href %URI; #IMPLIED
hreflang %LanguageCode; #IMPLIED
rel %LinkTypes; #IMPLIED
rev %LinkTypes; #IMPLIED
shape %Shape; "rect"
coords %Coords; #IMPLIED
>
El contenido se puede ver en:
Código xml:
Ver original<!-- a elements use %Inline; excluding a -->
<!ENTITY % a.content
"(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc.inline;)*">
Si buscas la declaración de
Inline:
Código xml:
Ver original<!-- %Inline; covers inline or "text-level" elements -->
<!ENTITY % Inline "(#PCDATA | %inline; | %misc.inline;)*">
Y, siguiendo la cadena,
inline está declarado como:
Código xml:
Ver original<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
Si observas, tal cual lo dice el comentario, el elemento
a tiene el mismo contenido que un
Inline salvo por el propio elemento
a, pero no hace tal cosa como la de heredar de
Inline y hacer una exclusión de
a (lo que tenías idea), sino se declara explícitamente su contenido posible.
Claro, esto solo muestra cómo se declara esta DTD, no debe ser prueba de que no se puede hacer tal cosa, aunque así lo tengo entendido .... el problema es que no sé de dónde saqué dicha idea, por tanto, no me creas del todo.
Un saludo