Subject: Re: [xsl] [XSL] Using Sort and Position Function From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx> Date: Mon, 10 Dec 2007 15:42:39 +0900 |
I am trying to output HTML that sorts the items according to a particular attribute, and then apply it using position() to display it.
Here is my XML:
<application> <ability rank="1">Adobe Acrobat Professional</ability> <type>Graphic Design</type> </application> <application> <ability rank="2">Ulead Video Studio</ability> <type>Graphic Design</type> </application> <application> <ability rank="2">Dreamweaver</ability> <type>Graphic Design</type> </application> <!--More code--> </computer>
The XSL:
<xsl:template match="application"> <xsl:for-each select="."> <xsl:sort select="@rank" order="ascending"/> <span> <xsl:attribute name="title"> <xsl:value-of select="type"/> </xsl:attribute> <xsl:value-of select="ability"/> </span> <xsl:choose> <xsl:when test="position( ) !=last( )">, </xsl:when> <xsl:otherwise><!--Don't display anything--></xsl:otherwise> </xsl:choose> </xsl:for-each> </xsl:template>
This stylesheet works.
<xsl:template match="application"> <xsl:for-each select=".">
The only problem is that I want the second to last to last element to use and instead of a comma, and I tried putting it in the <xsl:otherwise> tags. Didn't work as I thought, though.
Anyone know how I fix this? Thanks in advance to any who could help.
t:\ftemp>type alice.xml <computer>
<application> <ability rank="1">Adobe Acrobat Professional</ability> <type>Graphic Design</type> </application> <application> <ability rank="2">Ulead Video Studio</ability> <type>Graphic Design</type> </application> <application> <ability rank="2">Dreamweaver</ability> <type>Graphic Design</type> </application> <!--More code--> </computer>
t:\ftemp>type alice.xsl <?xml version="1.0" encoding="US-ASCII"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output indent="yes"/> <xsl:output method="text"/>
<xsl:template match="computer"> <xsl:apply-templates select="application"> <xsl:sort select="@rank" order="ascending"/> </xsl:apply-templates> </xsl:template>
<xsl:template match="application"> <span> <xsl:attribute name="title"> <xsl:value-of select="type"/> </xsl:attribute> <xsl:value-of select="ability"/> </span> <xsl:if test="position( ) !=last( )">, </xsl:if> </xsl:template>
</xsl:stylesheet> t:\ftemp>xslt alice.xml alice.xsl con Adobe Acrobat Professional, Ulead Video Studio, Dreamweaver t:\ftemp>
-- Comprehensive in-depth XSLT2/XSL-FO1.1 classes: Austin TX,Jan-2008 World-wide corporate, govt. & user group XML, XSL and UBL training RSS feeds: publicly-available developer resources and training G. Ken Holman mailto:gkholman@xxxxxxxxxxxxxxxxxxxx Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/ Box 266, Kars, Ontario CANADA K0A-2E0 +1(613)489-0999 (F:-0995) Male Cancer Awareness Nov'07 http://www.CraneSoftwrights.com/s/bc Legal business disclaimers: http://www.CraneSoftwrights.com/legal
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] [XSL] Using Sort and Position, Alice Wei | Thread | RE: [xsl] [XSL] Using Sort and Posi, Michael Kay |
Re: [xsl] stylesheet expansion, Colin Paul Adams | Date | Re: [xsl] current-group() question, Ruud Grosmann |
Month |