Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La especificación XML de World Wide Web Consortium (W3C) normaliza diferentes convenciones de fin de línea en una convención única pero conserva otros espacios en blanco, excepto valores de atributos. XML también proporciona un conjunto de herramientas que los documentos pueden utilizar para indicar a s aplicaciones si deben conservarse los espacios en blanco.
Espacio en blanco y la declaración XML
De acuerdo con la norma XML 1.0 actual, el espacio en blanco no está permitido antes de la declaración XML.
Si el espacio en blanco aparece antes de la declaración XML, será tratado como una instrucción de procesamiento. La información, en especial la codificación, podría no ser utilizada por el analizador.
Para más información sobre la declaración XML, consulte Declaración XML.
Espacio en blanco en contenido de elemento
Los analizadores XML son necesarios para notificar todos los espacios en blanco en el contenido de elemento dentro de un documento. Por este motivo, los siguientes tres documentos son diferentes a un analizador XML.
<document>
<data>1</data>
<data>2</data>
<data>3</data>
</document>
y:
<document><data>1</data><data>2</data><data>3</data></document>
y:
<document><data>1</data> <data>2</data> <data>3</data></document>
Para algunas aplicaciones, los valores de los tres puntos de datos son más importantes que la impresión. Para aplicaciones XML dirigidas a documentos, la conservación de los espacios en blanco puede ser crítica.
Los autores de los documentos pueden utilizar el atributo xml:space para identificar porciones de documentos donde el espacio en blanco se considera importante. Las hojas de estilos también pueden utilizar el atributo xml:space como gancho para conservar el espacio en blanco en la presentación. No obstante, puesto que muchas aplicaciones XML no entienden el atributo xml:space, su uso se considera recomendable.
El atributo xml:space acepta dos valores.
default
Este valor permite que la aplicación controle espacios en blanco en caso necesario. No incluir un atributoxml:spaceproduce el mismo resultado que utilizar un valordefault.
preserve
Este valor instruye a la aplicación para mantener un espacio en blanco como tal, sugiriendo que podría tener significado.
Los valores de los atributos xml:space se aplican a todos los descendientes del elemento que contiene el atributo a no ser que sea anulado por alguno de los elementos secundarios.
Por ejemplo, los siguientes documentos especifican el mismo comportamiento de espacio en blanco.
y:
En ambos ejemplos, a la aplicación se le notifica que todos los espacios en blanco en las líneas del poema deberán conservarse, pero que los espacios en blanco en otras partes del documento pueden tratarse según sea necesario.
Al igual que su equivalente de indicación de lenguaje, xml:lang, el atributo xml:space deberá declararse en una definición de tipo de documento (DTD) si se utiliza en un entorno de validación. El espacio de nombres xml no necesita declararse porque se lo reserva la especificación XML.
Por defecto, Microsoft XML Core Services (MSXML) no tiene en cuenta el atributo xml:space. Si una aplicación tiene que tener en cuenta el atributo xml:space, la propiedad preserveWhiteSpace del objeto DOMDocument deberá establecerse en True antes del análisis.
xmldoc= new ActiveXObject("Msxml2.DOMDocument.5.0");
xmldoc.preserveWhiteSpace = true;
xmldoc.load(url);
MSXLM también proporciona ajustes que permiten delegar el control de espacios en blanco de la aplicación en el analizador. Para más información, consulte el tema "Espacios en blanco y el DOM" en la documentación MSXML SDK.
Nota: |
|---|
| Conservar la información de espacios en blanco puede aumentar significativamente el tamaño de los árboles del modelo de objetos de documento (DOM) debido a la sobrecarga implicada en la conservación de los nodos de espacios en blanco entre los elementos. |
Espacio en blanco en atributos
Aunque los procesadores XML conservan todos los espacios en blanco en el contenido de elemento, se normalizan frecuentemente en valores de atributo. Los tabuladores, los retornos de carro y los espacios se notifican como espacios únicos. En ciertos tipos de atributos, recortan los espacios en blanco que vienen antes o después del cuerpo principal del valor y reducen los espacios en blanco dentro del valor a espacios únicos. (Si hay una DTD disponible, este recorte se llevará a cabo en todos los atributos que no son del tipo CDATA.)
Por ejemplo, un elemento XML podría contener lo siguiente:
<whiteSpaceLoss note1="this is a note." note2="this
is
a
note.">
Un analizador XML notifica ambos valores de atributo como "this is a note.", convirtiendo los saltos de línea en espacios únicos.
Nota: DOM y SAX en MSXML3 no normalizan los espacios en blanco. DOM en MSXML6 no normaliza los espacios en blanco, pero sí lo hace SAX.
Si hay una DTD para el documento, los atributos que son declarados como tipos distintos de CDATA tienen espacios eliminados del principio hasta el final del valor del atributo; todos los clústeres de espacios en blanco dentro del valor se sustituyen por espacios únicos. Si no hay DTD, el analizador asume que todos los atributos son del tipo CDATA.
Control de final de línea
Los procesadores XML tratan la secuencia de caracteres retorno de carro y salto de línea (CRLF) como caracteres CR o LF únicos. Todos son notificados como carácter LF único. La aplicaciones pueden guardar documentos mediante la convención de fin de línea apropiada.
Nota: