Holge r: Xml mit xsl hierarchisch ausgeben

Beitrag lesen

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>