XSL testing empty strings with <xsl:if> and sorting

Posted by AdRock on Stack Overflow See other posts from Stack Overflow or by AdRock
Published on 2010-04-24T18:22:31Z Indexed on 2010/04/24 18:33 UTC
Read the original article Hit count: 539

Filed under:
|
|
|

I am having trouble with a template that has to check 3 different nodes and if they are not empty, print the data

I am using for each node then doing the output but it is not printing anything. It is like the test returns zero.

I have selected the parent node of each node i want to check the length on as the template match but it still doesn't work.

Another thing, how do i sort the list using . I tried using this but i get an error about loading the stylesheet. If i take out the sort it works

<xsl:template match="folktask/member">
    <xsl:if test="user/account/userlevel='3'">
        <xsl:sort select="festival/event/datefrom"/>
        <div class="userdiv">   
            <xsl:apply-templates select="user"/>    
            <xsl:apply-templates select="festival"/>    
        </div>
    </xsl:if>
</xsl:template>
<xsl:template match="festival">
    <xsl:apply-templates select="contact"/>
</xsl:template>

This should hopefully finish all my stylesheets.

This is the template I am calling

<xsl:template match="contact">
 <xsl:if test="string-length(contelephone)!=0">
  <div class="small bold">TELEPHONE:</div>
  <div class="large">
   <xsl:value-of select="contelephone/." />
  </div>
 </xsl:if>

 <xsl:if test="string-length(conmobile)!=0">
  <div class="small bold">MOBILE:</div>
  <div class="large">
   <xsl:value-of select="conmobile/." />
  </div>
 </xsl:if>

 <xsl:if test="string-length(fax)!=0">
  <div class="small bold">FAX:</div>
  <div class="large">
   <xsl:value-of select="fax/." />
  </div>
 </xsl:if>
</xsl:template>

and a section of my xml. If you need me to edit my post so you can see the full code i will but the rest works fine.

<folktask>
 <member>
  <user id="4">
   <personal>
    <name>Connor Lawson</name>
    <sex>Male</sex>
    <address1>12 Ash Way</address1>
    <address2></address2>
    <city>Swindon</city>
    <county>Wiltshire</county>
    <postcode>SN3  6GS</postcode>
    <telephone>01791928119</telephone>
    <mobile>07338695664</mobile>
    <email>[email protected]</email>
   </personal>
   <account>
    <username>iTuneStinker</username>
    <password>3a1f5fda21a07bfff20c41272bae7192</password>
    <userlevel>3</userlevel>
    <signupdate>2010-03-26T09:23:50</signupdate>
   </account>
  </user>
  <festival id="1">
   <event>
    <eventname>Oxford Folk Festival</eventname>
    <url>http://www.oxfordfolkfestival.com/</url>
    <datefrom>2010-04-07</datefrom>
    <dateto>2010-04-09</dateto>
    <location>Oxford</location>
    <eventpostcode>OX1 9BE</eventpostcode>
    <coords>
     <lat>51.735640</lat>
     <lng>-1.276136</lng>
    </coords>
   </event>
   <contact>
    <conname>Stuart Vincent</conname>
    <conaddress1>P.O. Box 642</conaddress1>
    <conaddress2></conaddress2>
    <concity>Oxford</concity>
    <concounty>Bedfordshire</concounty>
    <conpostcode>OX1 3BY</conpostcode>
    <contelephone>01865 79073</contelephone>
    <conmobile></conmobile>
    <fax></fax>
    <conemail>[email protected]</conemail>
   </contact>
  </festival>
 </member>
</folktask>

© Stack Overflow or respective owner

Related posts about xsl

Related posts about Xml