[Home] [By Thread] [By Date] [Recent Entries]
Cho, Minho wrote:
I do need the for loop because my xml file has more then one set of infobject. That's what template matching is all about. For-loops are a usage from imperative languages, whereas XSLT more like a functional one. Using a template match will 'call' that template automagically each time the processor encounters a node that fits the specification in the match-attribute. Thus, instead of using for-each, you could best use the example from Richard. It will save you from a lot of xsl:if and xsl:choose branches (also procedural heritage) I GOT IT !! :-) <xsl:for-each select="//infoObject"> This will select ALL infoObjects, at any level, however deep and is an expensive operation. Better do it so: <xsl:apply-templates select="infoObject/infoObjectDetail[@title='Description']" /> <xsl:template match="infoObjectDetail"> <tr> <td> <xsl:value-of select="."/> <xsl:text> </xsl:text> </td> </tr> </xsl:template> Or like this, if you have more of this type of matches, you can specify it more precisely at template level: <tr> <td> <xsl:apply-templates select="infoObject/infoObjectDetail" /> </td> </tr> <xsl:template match="infoObjectDetail[@title='Description]"> <xsl:value-of select="."/> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="infoObjectDetail[@title!='Description]"> NO DESCRIPTOIN FOUND! </xsl:template> Of course, if you insist, you can always stick to the for-each loop. Cheers -- Abel
|

Cart



