Jump to content

Fo:table-row Question


anmarie63
 Share

Recommended Posts

Well if you use the position() function then it is not necessarily linked to node positions, rather it is linked to the order you process items with in your stylesheet.I am not really sure what you want to achieve when you say you want "to produce a table with alternating row colors" ... "without linking to node positions". Are the rows in the table not filled with data from nodes in an XML input document?

Link to comment
Share on other sites

Well if you use the position() function then it is not necessarily linked to node positions, rather it is linked to the order you process items with in your stylesheet.I am not really sure what you want to achieve when you say you want "to produce a table with alternating row colors" ... "without linking to node positions". Are the rows in the table not filled with data from nodes in an XML input document?
Here's the XSL for the table body and the XML. Rows 2(addRecord), 4(editRecord), 5(toggleRecord), and 7(updateEntry) are shaded. I want alternating row shading regardless of the node position in the XML document.
<fo:table-body><xsl:variable name="varNormalBGColor">rgb(255,255,255)</xsl:variable><xsl:variable name="varAccentBGColor">rgb(230,230,230)</xsl:variable><xsl:for-each select="category/attribute"><xsl:if test="property='private methods'"><fo:table-row><xsl:attribute name="background-color"><xsl:choose><xsl:when test="(position() mod 2) = 0"><xsl:value-of select="$varNormalBGColor"/></xsl:when><xsl:otherwise><xsl:value-of select="$varAccentBGColor"/></xsl:otherwise></xsl:choose></xsl:attribute><fo:table-cell padding="5pt,10pt" border-style="solid" border-color="rgb(166,166,166)"><fo:block><fo:external-graphic src="C:\arrow.png" content-width="9pt" content-height="9pt"/></fo:block></fo:table-cell><fo:table-cell padding="5pt" border-style="solid" border-color="rgb(166,166,166)"><fo:block font-weight="bold"><xsl:value-of select="name"/></fo:block><fo:block font-weight="normal" font-family="tahoma"><xsl:value-of select="description"/></fo:block></fo:table-cell><fo:table-cell padding="1pt" border-style="solid" border-color="rgb(166,166,166)"><fo:block><xsl:value-of select="defined"/></fo:block></fo:table-cell></fo:table-row></xsl:if></xsl:for-each></fo:table-body>

XML

<category><attribute><name>numOfEntries</name><description>numOfEntries description</description><property>public</property><defined>smith3</defined></attribute><attribute><name>updateRecord()</name><description>updateRecord() description</description><property>private methods</property><defined>smith1</defined></attribute><attribute><name>addRecord()</name><description>addRecord() description</description><property>private methods</property><defined>smith1</defined></attribute><attribute><name>removeRecord()</name><description>removeRecord() description</description><property>private methods</property><defined>smith1</defined></attribute><attribute><name>id</name><description>id description</description><property>public</property><defined>smith</defined></attribute><attribute><name>className</name><description>className description</description><property>public</property><defined>smith2</defined></attribute><attribute><name>editRecord()</name><description>editRecord() description</description><property>private methods</property><defined>smith1</defined></attribute><attribute><name>class_buf</name><description>class_buf description</description><property>private</property><defined>smith6</defined></attribute><attribute><name>toggleRecord()</name><description>toggleRecord() description</description><property>private methods</property><defined>smith1</defined></attribute><attribute><name>valid()</name><description>valid() description</description><property>private methods</property><defined>smith1</defined></attribute><attribute><name>updateEntry()</name><description>updateEntry() description</description><property>private methods</property><defined>smith1</defined></attribute></category>

Link to comment
Share on other sites

I think instead of xsl:for-each with a nested xsl:if you simply want

	  <xsl:for-each select="category/attribute[property='private methods']">

and then remove the xsl:if but continue to use the position() function as you have. As I said, it relates to the position in sequence of processed nodes, not to the position in the input document.

Link to comment
Share on other sites

I think instead of xsl:for-each with a nested xsl:if you simply want
	  <xsl:for-each select="category/attribute[property='private methods']">

and then remove the xsl:if but continue to use the position() function as you have. As I said, it relates to the position in sequence of processed nodes, not to the position in the input document.

Can another attribute match be added onto this path?<xsl:for-each select="category/attribute[property=private methods]">
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...