[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Adding a class to HTML's class attribute
> Hello, > > I have a HTML which transformed with XSL. It contains tags like these > > 1. <li class="foo"></li> > 2. <li></li> > > I want to add a certain class to the attributes: > > 1. <li class="foo bar"></li> > 2. <li class="bar"></li> > > Anybody with a smart solution? The only (dump but simple) solution I > have in my mind is to use <xsl:choose> to handle the different cases. > No, xsl:choose is almost never a good solution. Here's one approach, which is usually the best if input and output look alike: the copy idiom: <xsl:template match="node() |@*"> <xsl:copy> <xsl:apply-templates select="node() | @*"> </xsl:copy> </xsl:template> <xsl:template match="li/@class"> <xsl:attribute name="class"> <xsl:value-of select="."> <xsl:text> bar</xsl:text> </xsl:attribute> </xsl:template> That will do what you want. Cheers, -- Abel Braaksma PS: whenever you are trying a solution and you find yourself doing 'traditional' style programming from you Perl/C++/PHP/VB/Java days (i.e.: imperative programming) with things like many xsl:if / xsl:choose / xsl:for-each to instruct your processor, you should try to turn the logic around, like in the example above (define matching templates and let the processor do the math for you instead of the other way around)
|
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
|