¿Debe un espacio en blanco consecutivo en un archivo XML ser ignorado por un lector XML?
Pregunta
En mi trabajo tenemos nuestras propias clases XML que crean un DOM, pero no estoy seguro de cómo se deben manejar los espacios en blanco consecutivos.
por ejemplo
<some-text>
Hello World
</some-text>
Cuando esto se lee en el DOM, ¿el nodo de texto debe incluir el espacio en blanco consecutivo entre Hello y World o simplemente reducirlo a un espacio?
O la fuente XML debería escribirse así:
<some-text> Hello World </some-text>
o si no & amp; nbsp; que quizás & amp; # 32; ?
Solución
& amp; nbsp;
es una entidad HTML y no tiene nada que ver con el propio XML.
Para responder a su pregunta, trataría eso como significativo. Incluso el HTML DOM trata los espacios consecutivos como significativos, es solo que solo representa visualmente un espacio. Cómo aparece en el DOM y cómo aparece en su pantalla son dos cosas completamente diferentes.
Otros consejos
Es un poco desconcertante escuchar que hay personas implementando procesadores XML sin siquiera mirar las especificaciones XML.
De la especificación XML 1.0, sección 2.10 Manejo de espacios en blanco " (énfasis mío):
Al editar documentos XML, a menudo es conveniente para usar "espacio en blanco" (espacios, pestañas y líneas en blanco) para establecer aparte el margen de beneficio para mayor legibilidad. Tal espacio en blanco es típicamente no está destinado a ser incluido en la versión entregada del documento. Por otra parte, "significativo" espacio en blanco que debería conservarse en la versión entregada es común, por ejemplo en poesía y código fuente.
Un procesador XML DEBE pasar siempre todo caracteres en un documento que no son marcado a través de la aplicación. A validar el procesador XML DEBE también informar a la aplicación cuál de estos los personajes constituyen espacios en blanco que aparece en el contenido del elemento.
Un atributo especial llamado xml: espacio puede estar unido a un elemento para señalar una intención que en ese elemento, el espacio en blanco debe ser preservado por aplicaciones. En valido documentos, este atributo, como cualquier otro, DEBE ser declarado si se usa. Cuando se declara, DEBE darse como tipo enumerado cuyos valores son uno o ambos '' por defecto '' y "preservar". Por ejemplo: ...
EDITAR: el espacio en blanco dentro de las etiquetas se considera significativo (mis pensamientos iniciales sobre esto como HTML eran incorrectos; ¡Google primero, responda las preguntas más tarde!) vea esta explicación
En mi opinión, parece bastante natural tratar los espacios en blanco como significativos en este caso. Esperaría que el valor del nodo DOM sea igual a lo que usé en el marcado.
Si "tiene nuestras propias clases XML", " y quien los escribió aún no sabe la respuesta a esta pregunta, probablemente tenga muchos, muchos, muchos más problemas que todavía no ha descubierto.