|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Defining variables as sequence of strings
> I typically recommend to avoid using explicit XSLT conditional
> instructions. This said, here is an example as requested:
Hi Dimitre,
Thanks for the recommendation, I am certainly inclined to take your
advice however just so I understand can you elaborate on why?
> <xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> xmlns:xs="http://www.w3.org/2001/XMLSchema">
> <xsl:output method="text"/>
> <xsl:template match="/*">
> <xsl:variable name="vDays" as="xs:string*" >
> <xsl:choose>
> <xsl:when test=". eq 'Biology'">
> <xsl:sequence select="'Monday', 'Thursday'"/>
> </xsl:when>
> <xsl:when test=". eq 'Math'">
> <xsl:sequence select="'Tuesday', 'Friday'"/>
> </xsl:when>
> </xsl:choose>
> </xsl:variable>
>
> <xsl:sequence select="string-join($vDays, ' and ')"/>
> </xsl:template>
> </xsl:stylesheet>
That was my first crack, but as it iterates through nodes I need to add
each occurrence to the sequence.
> This can also be written in a shorter way as:
>
> <xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> xmlns:xs="http://www.w3.org/2001/XMLSchema">
> <xsl:output method="text"/>
> <xsl:template match="/*">
> <xsl:variable name="vDays" as="xs:string*" select=
> "if(. eq 'Biology')
> then ('Monday', 'Thursday')
> else if (. eq 'Math')
> then ('Tuesday', 'Friday')
> else () "/>
>
> <xsl:sequence select="string-join($vDays, ' and ')"/>
> </xsl:template>
> </xsl:stylesheet>
I ended up not worrying about XSLT 1 support for the moment until
I revisit it and used:
<xsl:variable name="MyVar" as="xs:string *">
<xsl:sequence select="for $t in distinct-values(/object/property/@type)
return
if ($t='foo')
then 'a'
else if ($t='bar' or $t='baz' or $t='bof')
then 'b'
else 'c'" />
</xsl:variable>
<xsl:for-each select="distinct-values($MyVar)">
<xsl:sort select="." />
<xsl:text>...</xsl:text>
<xsl:value-of select="." />
<xsl:text>;
</xsl:text>
</xsl:for-each>
Thanks a lot Dimitre,
jlc
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








