OK, als beispiel mal eine rekursive Variante die man natuerlich noch verfeinern kann. Gruß, H.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html"/>
<xsl:template match="/">
<html>
<head/>
<body>
<xsl:for-each select="node()">
<xsl:call-template name="RekursivesTemplate"/>
</xsl:for-each>
</body>
</html>
</xsl:template>
<xsl:template name="RekursivesTemplate">
<xsl:param name="Level" select="1"/>
<div style="{concat('padding-left:',$Level * 5)}">
<xsl:value-of select="concat($Level,'. Stufe')"/>
xsl:text Element: </xsl:text>
<b>
<xsl:value-of select="local-name()"/>
</b>
<xsl:if test="@*">
xsl:text Attribute: </xsl:text>
<xsl:for-each select="@*">
xsl:text </xsl:text>
<b>
<xsl:value-of select="local-name()"/>
</b>
</xsl:for-each>
</xsl:if>
<xsl:if test="self::text() != ''">
xsl:text Textknoten: </xsl:text>
<b><xsl:value-of select="text()"/></b>
</xsl:if>
</div>
<!-- rekursiver Aufruf -->
<xsl:for-each select="child::*">
<xsl:call-template name="RekursivesTemplate">
<xsl:with-param name="Level" select="$Level + 1"/>
</xsl:call-template>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>