XSL Challenge
Roger Costello
costello at mitre.org
Sat Jun 5 14:53:50 BST 1999
Thanks James. Any way to do it with the Dec. 16 WD? /Roger
James Clark wrote:
>
> You have to use the variables feature of the current WD. Replace the
> second TR element in your attempted solution by the following:
>
> <TR>
> <xsl:variable name="cols" expr="Column"/>
> <xsl:for-each select="../../Columns/Column">
> <TD>
> <xsl:variable name="colname" expr="@name"/>
> <xsl:value-of select="$cols[@name=$colname]"/>
> </TD>
> </xsl:for-each>
> </TR>
>
> Roger Costello wrote:
> >
> > Hi Folks,
> >
> > Are you up for a mind-bending XSL problem? Someone presented
> > me with this problem several weeks ago and I have yet to find
> > a solution. It looks simple. It is deceptively challenging.
> >
> > An XML document stores database data as follows:
> >
> > <?xml version="1.0"?>
> > <DynamicTable>
> > <Columns>
> > <Column name="col1"/>
> > <Column name="col2"/>
> > </Columns>
> > <Rows>
> > <Row>
> > <Column name="col1">A</Column>
> > <Column name="col3">B</Column>
> > <Column name="col2">C</Column>
> > </Row>
> > <Row>
> > <Column name="col2">S</Column>
> > <Column name="col1">E</Column>
> > </Row>
> > <Row>
> > <Column name="col5">R</Column>
> > <Column name="col2">G</Column>
> > <Column name="col1">Q</Column>
> > </Row>
> > </Rows>
> > </DynamicTable>
> >
> > Note that the columns that we are interested in are col1 and col2.
> > A <Row> element may contain data from columns not of interest.
> > But, it will always contain at least data for col1 and col2.
> >
> > The problem is to create an XSL stylesheet that generates an
> > HTML table with a table header:
> >
> > col1 col2
> >
> > and within the table it has the row data. So the HTML table
> > should look like this:
> >
> > col1 col2
> > A C
> > E S
> > Q G
> >
> > I have shown an XML document which has just two columns. However,
> > the XSL stylesheet needs to be generic and capable of handling
> > XML documents with any number of columns (as listed in the <Columns>
> > section).
> > /Roger
> >
> > P.S. Below is what I tried, which doesn't work.
> >
> > <?xml version="1.0"?>
> > <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"
> > result-ns="html">
> > <xsl:template match="DynamicTable">
> > <HTML>
> > <HEAD>
> > <TITLE>Dynamic Table</TITLE>
> > </HEAD>
> > <BODY>
> > <TABLE BORDER="1" WIDTH="50%">
> > <TR>
> > <xsl:for-each select="Columns/Column">
> > <TH><xsl:value-of select="@name"/></TH>
> > </xsl:for-each>
> > </TR>
> > <xsl:for-each select="Rows/Row">
> > <TR>
> > <xsl:for-each select="../../Columns/Column">
> > <TD><xsl:value-of
> >
> > select="../../Rows/Row/Column[@name='{@name}']"/></TD>
> > </xsl:for-each>
> > </TR>
> > </xsl:for-each>
> > </TABLE>
> > </BODY>
> > </HTML>
> > </xsl:template>
> > </xsl:stylesheet>
xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at ic.ac.uk
Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/ and on CD-ROM/ISBN 981-02-3594-1
To (un)subscribe, mailto:majordomo at ic.ac.uk the following message;
(un)subscribe xml-dev
To subscribe to the digests, mailto:majordomo at ic.ac.uk the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa at ic.ac.uk)
More information about the Xml-dev
mailing list