¿Debe un espacio en blanco consecutivo en un archivo XML ser ignorado por un lector XML?

StackOverflow https://stackoverflow.com/questions/449532

  •  19-08-2019
  •  | 
  •  

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 &nbsp;&nbsp;&nbsp;&nbsp;World
</some-text>

o si no & amp; nbsp; que quizás & amp; # 32; ?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top