[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: [XSL] Using Sort and Position Function

Subject: Re: [XSL] Using Sort and Position Function
From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx>
Date: Mon, 10 Dec 2007 15:42:39 +0900
Re:  [XSL] Using Sort and Position Function
At 2007-12-09 22:58 -0500, Alice Wei wrote:
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.

This surprises me. For example in the following:


   <xsl:template match="application">
       <xsl:for-each select=".">

... the <xsl:for-each> does nothing except to corrupt your position() value.

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.

I suspect you need something along the lines of the code below.


I hope this helps.

. . . . . . . . . Ken

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

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.