Subject: RE: [xsl] Comparison Table for XML files|
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Thu, 14 Jun 2007 09:27:18 +0100
In 2.0 it's basically <xsl:for-each select="distinct-values($files/nodes/node/name)"> <xsl:variable name="name" select="."/> <row> <xsl:for-each select="$files"> <column> <xsl:value-of select="(nodes/node[name=$name]/value, 'NA')"/> </column> </xsl:for-each> </row> </xsl:for-each> adapted of course to your precise input structure, plus a little code to add row and column headers. Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: Dan Johnson [mailto:siliconice@xxxxxxxxx] > Sent: 14 June 2007 03:11 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] Comparison Table for XML files > > I need to generate a comparison table of several XML data files. > > Each data file contains various nodes with "names" and > "values". Some nodes exist on one file and not in others. No > one file is guaranteed to have all possible node "names". > > I would like to generate a table (using XSLT) as follows: > > The left column will be the "name" - all names from the input > files need to be listed in this column. Each file will have a > corresponding labeled column in the table, and the value of > each "name" node will be placed in the correct spot in the > grid. If a particular file does not have a "name" node for > some name, a filler will be inserted ("N/A" or > something) instead of a value. This may not show up, but for example: > (f1) (f2) (f3) > A NA 2 3 > B 1 NA NA > C 1 2 NA > > A real-world example of such a table is a product feature > comparison chart for various products. > > It's a very simple concept, but not so simple to implement it seems.