Ver Mensaje Individual
  #2 (permalink)  
Antiguo 18/09/2009, 13:01
Avatar de jam1138
jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 9 meses
Puntos: 102
Respuesta: [DTD] ¿Como se declara que un elemento no debe anidarse?

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
  1. <!--================== The Anchor Element ================================-->
  2.  
  3. <!-- content is %Inline; except that anchors shouldn't be nested -->
  4.  
  5. <!ELEMENT a %a.content;>
  6. <!ATTLIST a
  7.  %attrs;
  8.  %focus;
  9.  charset     %Charset;      #IMPLIED
  10.  type        %ContentType;  #IMPLIED
  11.  name        NMTOKEN        #IMPLIED
  12.  href        %URI;          #IMPLIED
  13.  hreflang    %LanguageCode; #IMPLIED
  14.  rel         %LinkTypes;    #IMPLIED
  15.  rev         %LinkTypes;    #IMPLIED
  16.  shape       %Shape;        "rect"
  17.  coords      %Coords;       #IMPLIED
  18.  >

El contenido se puede ver en:
Código xml:
Ver original
  1. <!-- a elements use %Inline; excluding a -->
  2.  
  3. <!ENTITY % a.content
  4.    "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc.inline;)*">

Si buscas la declaración de Inline:
Código xml:
Ver original
  1. <!-- %Inline; covers inline or "text-level" elements -->
  2. <!ENTITY % Inline "(#PCDATA | %inline; | %misc.inline;)*">

Y, siguiendo la cadena, inline está declarado como:
Código xml:
Ver original
  1. <!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
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 18/09/2009 a las 13:10 Razón: Aclaratoria...