Subject: Re: [xsl] Problem with iterating through a sequence of integers From: ac <ac@xxxxxxxxxxxxx> Date: Mon, 28 Apr 2008 18:35:59 -0400 |
1. Would it not be preferable to invert the choose as in
<xsl:for-each select="( . . .)"> <xsl:choose> <xsl:when test=". instance of xs:anyAtomicType"> <xsl:value-of select="."/> </xsl:when> <xsl:otherwise> <xsl:apply-templates select="$foo,." /> </xsl:otherwise> </xsl:choose> </xsl:for-each>
... <xsl:choose> <xsl:when test=". instance of xs:integer"> ... </when> <xsl:when test=". instance of number()"> ... </when> <xsl:when test=". instance of xs:boolean"> ... </when> <xsl:when test=". castable as xs:integer"> ... </when> <xsl:when test=". castable as number()"> ... </when> <xsl:when test=". castable as xs:boolean"> ... </when> <xsl:when test=". castable as xs:string"> ... </when> <xsl:otherwise><xsl:apply-templates select="$foo,." /></xsl:otherwise> </xsl:choose>
3. What would be the best way to do this ?
4. As for the use cases, aren't there more than might seem at first, especially where dynamic evaluation (ex: saxon:eval()) is used?
Cheers, ac
a safer way is to use a global param, this prevents a static type error (as the system can not know that you will not pass in a node) but if you never do pass in a value then teh run time behaviour is as you wish:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:param name="foo" select="()"/> <xsl:template name="x"> <xsl:for-each select="(1, 2, 3)"> <xsl:choose> <xsl:when test=". instance of node()"> <xsl:apply-templates select="$foo,." /> </xsl:when> <xsl:otherwise> <xsl:value-of select="."/> </xsl:otherwise> </xsl:choose> </xsl:for-each> </xsl:template> </xsl:stylesheet>
$ saxon9 -it x stst.xsl <?xml version="1.0" encoding="UTF-8"?>123
________________________________________________________________________ The Numerical Algorithms Group Ltd is a company registered in England and Wales with company number 1249803. The registered office is: Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.
This e-mail has been scanned for all viruses by Star. The service is
powered by MessageLabs. ________________________________________________________________________
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Problem with iterating th, David Carlisle | Thread | RE: [xsl] Problem with iterating th, Costello, Roger L. |
Re: [xsl] for-each-group group-by e, David Carlisle | Date | Re: [xsl] for-each-group group-by e, Robert Koberg |
Month |