halfhand Posted October 30, 2006 Posted October 30, 2006 I have a problem here that is beyond the scope of my limited XSL knowledge. I have a bit of xml that is coming from a third party that I need to format into an xml table. The xml I am getting looks like this: <cells> <cell row="0" column="0"> <data>1</data> </cell> <cell row="0" column="1"> <data>2</data> </cell> <cell row="0" column="2"> <data>3</data> </cell> <cell row="1" column="0"> <data>Insert a hickey doo</data> </cell> <cell row="1" column="1"> <data>Test</data> </cell> <cell row="1" column="2"> <data>Text</data> </cell> </cells>I'm completely stumped as to how to do this. How can I take this list and break it into rows? Is there some way to layout a nested for-each to manage this? I appreciate any help of thoughts anyone has.
aalbetski Posted October 30, 2006 Posted October 30, 2006 This was covered in detail just two posts agoCheck out: Using XSLT to convert a XML file to a table in HTML ???
halfhand Posted October 30, 2006 Author Posted October 30, 2006 This was covered in detail just two posts agoCheck out: Using XSLT to convert a XML file to a table in HTML ???I did see that, but I had tried something similar to one of the posted solutions that didn't work. I have since delved deeper into a different linked solution and I think it will work out. Thanks for the reply and sorry for the superfluous post.
halfhand Posted November 1, 2006 Author Posted November 1, 2006 I did see that, but I had tried something similar to one of the posted solutions that didn't work. I have since delved deeper into a different linked solution and I think it will work out. Thanks for the reply and sorry for the superfluous post.I misspoke in my initial post. What I was trying to transform the xml structure to was not just an XML table but an XSL <fo:table>. Since nothing I was able to find here on the forums led me in the right direction, I thought I would post the solution for anyone else who might also be looking for an answer to this problem.<xsl:template match="spreadsheet"> <fo:table> <fo:table-body> <xsl:apply-templates select="cells/cell"> <xsl:sort select="@row"/> <xsl:sort select="@column"/> </xsl:apply-templates> </fo:table-body> </fo:table> </xsl:template> <xsl:template match="cell"> <fo:table-cell xsl:use-attribute-sets="tablecells"> <xsl:if test="@row != preceding-sibling::*[1]/@row"> <xsl:attribute name="starts-row">true</xsl:attribute> </xsl:if> <fo:block><xsl:value-of select="data" /></fo:block> </fo:table-cell> </xsl:template> Although I haven't tried it I think it might also provide a more elegant solution to some of the "Building a dynamic HTML table" problems I've seen.It took me a lot of time to get here and I hope this saves some other newbie a headache or is at least useful to someone.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now