2010-03-08 20 views
8

estoy usando xalan con el siguiente encabezado XSL:¿Cómo hago que la transformación xsl sangre la salida?

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    version="1.0" 
    xmlns:redirect="http://xml.apache.org/xalan/redirect" 
    extension-element-prefixes="redirect" 
    xmlns:xalan="http://xml.apache.org/xalan"> 
<xsl:output method="text" indent="yes" xalan:indent-amount="4"/> 

Y la salida no tiene sangría.

¿Alguien con ideas?

+0

Estaba usando la herramienta xsl en el bloc de notas ++. No pudo sangrar la salida cuando tuve un error tipográfico en mi xsl. Verifique que su archivo xsl tenga la sintaxis correcta. – flobadob

Respuesta

17

para el sangrado es necesario utilizar un espacio de nombres diferente: "http://xml.apache.org/xslt" (ver this issue)

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
version="1.0" 
xmlns:redirect="http://xml.apache.org/xalan/redirect" 
extension-element-prefixes="redirect" 
xmlns:xalan="http://xml.apache.org/xslt"> 
<xsl:output method="xml" indent="yes" xalan:indent-amount="4"/> 
+0

El espacio de nombres xalan está documentado en https://xalan.apache.org/xalan-j/apidocs/org/apache/xml/serializer/OutputPropertiesFactory.html – TWiStErRob

+0

'http: // xml.apache.org/xslt' was desaprobado incluso en la versión anterior (ver [Declarar el espacio de nombres xalan] (https://xalan.apache.org/old/xalan-j/extensions.html)), use 'http://xml.apache.org/xalan 'en su lugar. – TWiStErRob

2

Supongo que debe configurar el method en xml. Si eso no funciona, intente lo siguiente:

<?xml version="1.0" encoding="UTF-8"?> 

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xalan="http://xml.apache.org/xalan"> 

<xsl:output method="xml" encoding="UTF-8" indent="yes" xalan:indent-amount="4"/> 
+0

desafortunadamente no funciona :( – Vincent

+0

¿Es posible que esté viendo el xml con una aplicación que no procesa correctamente el contenido? – thelost

+0

Estoy produciendo la transformación en la consola – Vincent

5

Jirka-x1, gracias por el tema -enlazar. He utilizado los siguientes (según lo propuesto por Ed Knoll 13/Ago/04):

<xsl:stylesheet ... xmlns:xslt="http://xml.apache.org/xslt"> 
<xsl:output ... indent="yes" xslt:indent-amount="4" /> 

Esto funciona para mí con xalan (Java) 2.7.1.

8

estaba luchando con esto durante un tiempo, sin embargo, sólo consiguió poner en funcionamiento accidentalmente:

la clave fue la de añadir <xsl:strip-space elements="*"/>

por lo que se verá así:

<xsl:stylesheet 
    version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:java="http://xml.apache.org/xalan/java" 
    xmlns:xalan="http://xml.apache.org/xslt"> 
<xsl:output method="xml" encoding="ASCII" indent="yes" xalan:indent-amount="4"/> 
<xsl:strip-space elements="*"/> 

No sé por qué , pero probablemente eliminar todos los espacios en blanco ayuda a xalan a descubrir la sangría

+0

Sin' xsl: strip-space [@elements = "*"] ', el xsl intenta preservar los nodos de espacio en blanco de la entrada en la salida. – Timothy

Cuestiones relacionadas