Subject: Re: [xsl] Trouble creating tables while looping through elements From: Charles-Louis De Maere <charles-louis.demaere@xxxxxxxxxxxxxxx> Date: Mon, 10 May 2010 11:31:02 +0200 |
I will have to take the table declaration outside of the <xsl:template> tag, because otherwise I create different tables for each node, which is not what I expected.
<table><tbody><xsl:apply-templates select="node[condition 1]"/></tbody></table> <table><tbody><xsl:apply-templates select="node[condition 2]"/></tbody></table> ...
<xsl:template match="node[condition 1]"> <tr> some processing </tr> </xsl:template>
Wrong approach: XSLT stylesheets produce a tree as the output, not lexical XML; XSLT instructions create nodes on the tree, not tags in the serialized XML. So you can't write end tags and start tags as separate operations.
Ok, thanks for this explanation, it makes sense now that I see XSLT producing a tree rather than producing a raw text content.
Hi Charles,typically has 1<thead> and 1<tbody> tag.
It doesnt seem right to me that you create a tbody for each node. A table
condition it's best to create different templates using specific predicates.
If you want to create different tables for different nodes based on some
<xsl:template match="node[condition predicitate 1]"> <table> ... </table> </xsl:template>
<xsl:template match="node[condition predicitate 2]"> <table> ... </table> </xsl:template>
Cheers, Robby Pelssers
-----Original Message----- From: Charles-Louis De Maere [mailto:charles-louis.demaere@xxxxxxxxxxxxxxx] Sent: Monday, May 10, 2010 10:14 AM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: [xsl] Trouble creating tables while looping through elements
Dear all,
I'm looping through a (sorted) list of nodes, and would like to put them in different tables based on a certain condition using xslt.
At the moment, I'm doing the following :
<table> <xsl:for-each select="node"> <tbody> ... some formatting ... </tbody> <xsl:if test="not(subnode = following-sibling::node/subnode)"> </table> <h2>Some Title</h2> <table> </xsl-if> </xsl:for-each> </table>
However, this XSLT file is invalid (XMLSpy indicates a warning when I save it, because of the closing<table> tag underneath the if-test), and Firefox refuses to display it for the same reason.
Is there any easy way to have some kind of separation within the for-each loop, or should I take this formatting out of the loop ?
Thanks in advance,
Charles-Louis de Maere
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Trouble creating tables w, Robby Pelssers | Thread | RE: [xsl] Trouble creating tables w, Michael Kay |
RE: [xsl] Trouble creating tables w, Michael Kay | Date | [xsl] analyze-string and child node, Terry Ofner |
Month |