[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
|