Tutoriales de informática - Abrirllave.com

Abrirllave.com

Atributos especiales en DTD - xml:lang y xml:space

En DTD existen dos tipos de atributos especiales (predefinidos), llamados: xml:lang y xml:space.

Uso del atributo xml:lang

En una DTD, el atributo xml:lang permite indicar el idioma del contenido y de los valores de los atributos de un elemento declarado. De forma que, cuando se utiliza xml:lang en un elemento, el idioma especificado afecta a todos los valores de sus posibles atributos y a todo su contenido, incluyendo a sus posibles sucesores a menos que se indique lo contrario con otra instancia de xml:lang.

EJEMPLO En la DTD del siguiente documento XML, con el atributo xml:lang se ha indicado el idioma de los elementos "sigla" y "traduccion":

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE siglas [
   <!ELEMENT siglas (sigla)*>
   <!ELEMENT sigla (significado, traduccion)>
      <!ATTLIST sigla letras CDATA #REQUIRED>
      <!ATTLIST sigla xml:lang CDATA "en">
   <!ELEMENT significado (#PCDATA)>
   <!ELEMENT traduccion (#PCDATA)>
      <!ATTLIST traduccion xml:lang CDATA #FIXED "es">
]>
<siglas>
   <sigla letras="ANSI">
      <significado>American National Standards Institute</significado>
      <traduccion>Instituto Nacional Estadounidense de Estándares</traduccion>
   </sigla>
   <sigla letras="ISO">
      <significado>International Organization for Standardization</significado>
      <traduccion>Organización Internacional de Normalización</traduccion>
   </sigla>
   <sigla letras="CERN" xml:lang="fr">
      <significado>Conseil Européen pour la Recherche Nucléaire</significado>
      <traduccion>Organización Europea para la Investigación Nuclear</traduccion>
   </sigla>
</siglas>

Uso del atributo xml:space

En una DTD, el atributo xml:space permite indicar que los espacios en blanco, las tabulaciones y los retornos de carro que aparezcan en el contenido (texto) de un elemento –y sus sucesores a menos que se indique lo contrario con otra instancia de xml:space– tienen que ser preservados. Este atributo siempre tiene que ser declarado de tipo enumerado, siendo "default", "preserve" o ambos, los posibles valores pertenecientes a la lista de valores que se indiquen entre paréntesis "()".

EJEMPLO En la DTD del siguiente documento XML, con el atributo xml:space se ha indicado que, por defecto, los espacios que se escriban en el contenido de los elementos "programa" del documento, deben preservarse. Ahora bien, en la declaración de xml:space se ha indicado que su valor podría ser también "default":

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE programas [
  <!ELEMENT programas (programa)*>
  <!ELEMENT programa (#PCDATA)>
  <!ATTLIST programa xml:space (default|preserve) "preserve">
]>
<programas>
  <programa>/* Programa: Hola mundo */

#include &lt;conio.h&gt;
#include &lt;stdio.h&gt;

int main()
{
    printf( &quot;Hola mundo.&quot; );

    getch(); /* Pausa */

    return 0;
}</programa>
  <programa>/* Programa: Calificación según nota */

#include &lt;conio.h&gt;
#include &lt;stdio.h&gt;

int main()
{
    float nota;

    printf( &quot;\n   Introduzca nota (real): &quot; );
    scanf( &quot;%f&quot;, &amp;nota );

    if ( nota &gt;= 5 )
        printf( &quot;\n   APROBADO&quot; );
    else
        printf( &quot;\n   SUSPENDIDO&quot; );

    getch(); /* Pausa */

    return 0;
}</programa>
</programas>