<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:gl="http://www.iro.umontreal.ca/lapalme" version="2.0"> <xsl:strip-space elements="*"/> <xsl:output omit-xml-declaration="yes" method="text"/> <xsl:template match="/"> <xsl:apply-templates> <xsl:with-param name="indent" select="0"/> </xsl:apply-templates> <xsl:text> </xsl:text> </xsl:template> <xsl:function name="gl:nl-and-indent"> <xsl:param name="nb"/> <xsl:value-of select="concat('
', string-join(for $i in 1 to $nb return ' ',''))"/> </xsl:function> <xsl:template match="@*"> <xsl:param name="indent"/> <xsl:if test="position()>1"> <xsl:value-of select="gl:nl-and-indent($indent)"/> </xsl:if> <xsl:text>@</xsl:text> <xsl:value-of select="local-name()"/> <xsl:text>[</xsl:text><xsl:value-of select="."/><xsl:text>]</xsl:text> </xsl:template> <xsl:template match="text()"> <xsl:param name="indent"/> <xsl:if test="count(../@*)>0 or position()>1"> <xsl:value-of select="gl:nl-and-indent($indent)"/> </xsl:if> <xsl:value-of select="normalize-space(.)"/> </xsl:template> <xsl:template match="*"> <xsl:param name="indent"/> <xsl:if test="count(../@*)>0 or position()>1"> <xsl:value-of select="gl:nl-and-indent($indent)"/> </xsl:if> <xsl:value-of select="local-name()"/> <xsl:text>[</xsl:text> <xsl:apply-templates select="@*|*|text()"> <xsl:with-param name="indent" select="$indent + string-length(local-name())+1"/> </xsl:apply-templates> <xsl:text>]</xsl:text> </xsl:template> </xsl:stylesheet>