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

Re: Re: xpath for getting file version

Subject: Re: Re: xpath for getting file version
From: Dimitre Novatchev <dnovatchev@xxxxxxxxx>
Date: Wed, 15 Aug 2001 06:22:33 -0700 (PDT)
xpath highest
Jeni Tennison wrote:

[snip]
> 
> When it comes down to it, this is a problem of finding a calculated
> maximum within an XPath. I think you have at least four options.

> First, you could index the files by all their versions and worry about
> which is latest later on. So use the key:
> 
> <xsl:key name="file-version" match="file" use="versions/version" />
> 
> and then when you're processing the files that you retrieve using the
> key, filter out those that have been retrieved through an early
> version.

> Second, you could have a two-stage process (either with two
> stylesheets or using a node-set() extension function to do it all in
> one stylesheet). In the first pass, construct XML like the above, with
> a date attribute giving the entire date, and then use the XPath above
> in the key.

> Third, you could use an extension function for finding nodes with
> the highest values based on an expression, if your processor offers
> one. If you use Saxon, you could do:
> 
> <xsl:key name="file-version" match="file"
>          use="saxon:highest(versions/version,
>                             saxon:expression('concat(@year, @month,
>                                              @day)'))" />
> 
> Finally, you could write your own extension function to find the latest
> version of a file. With the EXSLT mechanism, it could look like:
> 
> <func:function name="my:latest-version">
>   <xsl:for-each select="versions/version">
>     <xsl:sort select="concat(@year, @month, @day)"
>               data-type="number" order="descending" />
>     <xsl:if test="position() = 1">
>       <func:result select="@name" />
>     </xsl:if>
>   </xsl:for-each>
> </func:function>
> 
> (or you could write a recursive function if speed was an issue)
> 
> In a processor that supports EXSLT - Functions (Saxon or 4XSLT), you
> could do:
> 
> <xsl:key name="file-version" match="file" use="my:latest-version()" />
> 
> I hope that helps,
> 
> Jeni

It would help much more to know that there is another way of finding any maximum.
This, as Jeni knows well, is to use a generic template.

Contrasted to half of the solutions above, the generic max() template, which can be
downloaded at 
http://vbxml.com/downloads/default.asp?id=v2001611171627  
is 100% pure XSLT and does not require the stylesheet programmer to be bound to use
a particular XSLT processor or to write any extension functions, which again will
make the stylesheet non-portable.

The current state of EXSLT as I see it, just clearly proves the need to have a good
100% pure XSLT template library. Ideally we could have a standard XSLT template
library developed by the W3 consortium (as contrasted by any initiative of small and
not quite representative group of people).

Hope this helped.

Cheers,
Dimitre Novatchev.

---
Jeni Tennison
http://www.jenitennison.com/


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



--------------------------------------------------------------------------------

References: 
xpath for getting file version 
From: Antony Suryadinata
Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]  
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next] 


__________________________________________________
Do You Yahoo!?
Make international calls for as low as $.04/minute with Yahoo! Messenger
http://phonecard.yahoo.com/

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


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.