Con el fin de eliminar cualquier cosa que se parece a "sangría", puede ser necesario (eso significa que hay casos cuando se necesita) para utilizar tanto <xsl:strip-space>
y `` guión = "no" `.
Tome el ejemplo más simple: tiene la transformación de identidad. Sin ninguno de los dos métodos especificados, la transformación reproducirá los nodos de texto de espacio en blanco del documento XML de origen. Es decir, si el documento XML de origen está sangrado, la transformación también producirá un resultado sangrado.
Ahora, agréguense a esta transformación <xsl:output indent="no" />
. Esto indica al procesador XSLT que no realice su propia "impresión bonita". Sin embargo, los nodos de solo espacio en blanco del documento XML de origen todavía se copian en el resultado y el documento resultante parece sangrado (porque el documento fuente está sangrado).
Ahora, como último paso, agregue <xsl:strip-space elements="*"/>
. Ha especificado ambos métodos para evitar nodos de espacio en blanco en la salida. ¿Lo que pasa?El procesador XSLT, y no procesa ningún nodo de espacio en blanco. No aplica sangría a la salida; obtienes la salida de una línea deseada.
Finalmente, realice una regresión, cambie <xsl:output indent="no" />
a <xsl:output indent="yes" />
. El <xsl:strip-space elements="*"/>
todavía está allí, por lo que no se reproducen nodos de espacio en blanco en la salida. Pero el procesador XSLT obedece a la directiva <xsl:output indent="yes" />
y agrega nodos de texto solo de espacio en blanco.
Así, a partir de las cuatro combinaciones posibles, únicamente especificando ambos<xsl:strip-space elements="*"/>
y <xsl:output indent="no" />
garantiza que sin sangría será causada ya sea desde los nodos de espacio en blanco sólo desde el documento XML de origen o de la iniciativa procesadores XSLT.
Incluso este último caso, por supuesto, no garantiza por completo que la salida no será sangría - si el programador XSLT pone intencionadamente hay código de sangrado suficiente
<xsl:text>
</xsl:text>
la salida contendrá esta sangría.
Buena pregunta. +1 de mi parte En mi respuesta traté de explicar completamente el efecto de las dos directivas y cómo interactúan. –