XSL apply templates not working...could be XPath error

Posted by AdRock on Stack Overflow See other posts from Stack Overflow or by AdRock
Published on 2010-04-23T12:44:20Z Indexed on 2010/04/23 12:53 UTC
Read the original article Hit count: 530

Filed under:
|
|
|

I have converted mny stylesheet to use apply templates instead of call templates and it worked fine for my other styesheet, which was more complicated, but this one doesn't seem to work even thought it is a much simpler template.

All that it outputs is the sex node and the userlevel node. I think it has to do with my Xpath.

All i want is to output the < user > information, nothing else

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

    <xsl:template name="hoo" match="/">
        <html>
            <head>
                <title>Registered Members</title>
                <link rel="stylesheet" type="text/css" href="user.css" />
            </head>
            <body>
                <h1>Registered Members</h1>
                <xsl:for-each select="folktask/member/user">

                    <div class="userdiv">

                        <xsl:apply-templates/>

                    </div>
                </xsl:for-each>
            </body>
        </html>
    </xsl:template>

    <xsl:template match="folktask/member/user">
        <xsl:apply-templates select="@id"/>
        <xsl:apply-templates select="personal/name"/>
        <xsl:apply-templates select="personal/address1"/>
        <xsl:apply-templates select="personal/city"/>
        <xsl:apply-templates select="personal/county"/>
        <xsl:apply-templates select="personal/postcode"/>
        <xsl:apply-templates select="personal/telephone"/>
        <xsl:apply-templates select="personal/mobile"/>
        <xsl:apply-templates select="personal/email"/>
        <xsl:apply-templates select="personal"/>
        <xsl:apply-templates select="account/username"/>
        <xsl:apply-templates select="account"/>
    </xsl:template>

    <xsl:template match="@id">
        <div class="heading bold"><h2>USER ID: <xsl:value-of select="." /></h2></div>
    </xsl:template>

    <xsl:template match="personal/name">
        <div class="small bold">NAME:</div> 
        <div class="large"><xsl:value-of select="." /></div>
    </xsl:template>

    <xsl:template match="personal/address1">
        <div class="small bold">ADDRESS:</div>
        <div class="large"><xsl:value-of select="." /></div>
    </xsl:template>

    <xsl:template match="personal/city">
        <div class="small bold">CITY:</div>
        <div class="large"><xsl:value-of select="." /></div>
    </xsl:template>

    <xsl:template match="personal/county">
        <div class="small bold">COUNTY:</div>
        <div class="large"><xsl:value-of select="." /></div>
    </xsl:template>

    <xsl:template match="personal/postcode">
        <div class="small bold">POSTCODE:</div>
        <div class="large"><xsl:value-of select="." /></div>
    </xsl:template>

    <xsl:template match="personal/telephone">
        <div class="small bold">TELEPHONE:</div>
        <div class="large"><xsl:value-of select="." /></div>
    </xsl:template>

    <xsl:template match="personal/mobile">
        <div class="small bold">MOBILE:</div>
        <div class="large"><xsl:value-of select="." />
        </div>
    </xsl:template>

    <xsl:template match="personal/email">
        <div class="small bold">EMAIL:</div>
        <div class="large">
            <xsl:element name="a">
                <xsl:attribute name="href">
                    <xsl:text>mailto:</xsl:text>
                    <xsl:value-of select="." />
                </xsl:attribute>
                <xsl:value-of select="." />
            </xsl:element>
        </div>
    </xsl:template>

    <xsl:template match="personal">
    <div class="small bold">SEX:</div>
    <div class="colored bold">
        <xsl:choose>
            <xsl:when test="sex='Male'">
                <div class="sex male"><xsl:value-of select="sex/."/></div>
            </xsl:when>
            <xsl:otherwise>
                <div class="sex female"><xsl:value-of select="sex/."/></div>
            </xsl:otherwise>
        </xsl:choose>
    </div>
    </xsl:template>

    <xsl:template match="account/username">
        <div class="small bold">USERNAME:</div>
        <div class="large"><xsl:value-of select="." /></div>
    </xsl:template>


    <xsl:template match="account">
        <div class="small bold">ACCOUNT TYPE:</div>
        <div class="colored ">
        <xsl:choose>
            <xsl:when test="userlevel='1'">
                <div class="nml bold">Normal User</div>
            </xsl:when>

            <xsl:when test="userlevel='2'">
                <div class="vol bold">Volunteer</div>
            </xsl:when>

            <xsl:when test="userlevel='3'">
                <div class="org bold">Organiser</div>
            </xsl:when>

            <xsl:otherwise>
                <div class="name adm bold">Administrator</div>
            </xsl:otherwise>
        </xsl:choose>
        </div>
    </xsl:template>

</xsl:stylesheet> 

and some of my xml

<?xml version="1.0" encoding="ISO-8859-1" ?>
<?xml-stylesheet type="text/xsl" href="users.xsl"?>
<folktask xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="folktask.xsd">
    <member>
        <user id="1">
            <personal>
                <name>Abbie Hunt</name>
                <sex>Female</sex>
                <address1>108 Access Road</address1>
                <address2></address2>
                <city>Wells</city>
                <county>Somerset</county>
                <postcode>BA5 8GH</postcode>
                <telephone>01528927616</telephone>
                <mobile>07085252492</mobile>
                <email>[email protected]</email>
            </personal>
            <account>
                <username>AdRock</username>
                <password>269eb625e2f0cf6fae9a29434c12a89f</password>
                <userlevel>4</userlevel>
                <signupdate>2010-03-26T09:23:50</signupdate>
            </account>
        </user>
        <volunteer id="1">
            <roles></roles>
            <region>South West</region>
        </volunteer>
    </member>
    <member>
        <user id="2">
            <personal>
                <name>Aidan Harris</name>
                <sex>Male</sex>
                <address1>103 Aiken Street</address1>
                <address2></address2>
                <city>Chichester</city>
                <county>Sussex</county>
                <postcode>PO19 4DS</postcode>
                <telephone>01905149894</telephone>
                <mobile>07784467941</mobile>
                <email>[email protected]</email>
            </personal>
            <account>
                <username>AmbientExpert</username>
                <password>8e64214160e9dd14ae2a6d9f700004a6</password>
                <userlevel>2</userlevel>
                <signupdate>2010-03-26T09:23:50</signupdate>
            </account>
        </user>
        <volunteer id="2">
            <roles>Van Driver,gas Fitter</roles>
            <region>South Central</region>
        </volunteer>
    </member>
</folktask>

© Stack Overflow or respective owner

Related posts about xsl

Related posts about apply-templates