[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: table formating
On 26/01/2011 14:08, Michael Kay wrote:
Do a preprocessing pass to add an @index attribute to all cells.Sorry, that's the answer to a slightly different question - but one that's often useful in this kind of situation. For your problem I'd be inclined to use sibling recursion: <xsl:template match="row"> <xsl:apply-templates select="cell[1]" mode="add-missing-cells"> <xsl:wirh-param name="present-in-output select="0"/> </xsl:apply-templates> </xsl:template> <xsl:template match="cell" mode="add-missing-cells" priority="1"> <xsl:with-param name="present-in-output" as="xs:integer"/> <xsl:copy-of select="."/> <xsl:apply-templates select="following-sibling::cell[1]" mode="add-missing-cells"> <xsl:with-param name="present-in-output select="$present-in-output+1"/> </xsl:apply-templates> </xsl:template> <xsl:template match="cell[@index]" mode="add-missing-cells" priority="2"> <xsl:wirh-param name="present-in-output" as="xs:integer"/> <xsl:variable name="missing" select="@index - ($present-in-output + 1)" as="xs:integer"/> <xsl:for-each select="1 to $missing"><cell/></xsl:for-each> <xsl:copy-of select="."/> <xsl:apply-templates select="following-sibling::cell[1]" mode="add-missing-cells"> <xsl:with-param name="present-in-output select="$present-in-output+$missing+1"/> </xsl:apply-templates> </xsl:template> Michael Kay Saxonica
|
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
|