Subject: RE: RE: [xsl] How to implement an array From: Imrran Wahid <devguy2003@xxxxxxxxx> Date: Thu, 13 Feb 2003 14:01:34 -0800 (PST) |
Well I got this far with this problem and is once again stumped. I am hoping one of you can detect the problem. Snippet from lookup.xml file: <TableStructures> <Item> <ItemLine>Required</ItemLine> <ItemAcct>Required</ItemAcct> <Option>Optional</Option> <ItemText>Required</ItemText> </Item> </TableStructures> Snippet from the xml file with the data: <Content> <CodeI>2</CodeI> <ID>6</ID> <TranNum>1</TranNum> <Table1> <Item> <ItemLine>3</ItemLine> <ItemAcct>6</ItemAcct> <Option>Contains Data1</Option> <ItemText>This is line 3</ItemText> </Item> <Item> <ItemLine>4</ItemLine> <ItemAcct>34</ItemAcct> <ItemText>This is line 4</ItemText> </Item> <Item> <ItemLine>5</ItemLine> <ItemAcct>34</ItemAcct> <Option>Contains Data2</Option> <ItemText>This is line 5</ItemText> </Item> </Table1> </Content> I am applying two templates, one creates the column heading and the other creates the table cells. The elements in the rows are optional...that is, an element could exist in one row and be absent in another. So to create the heading, I test all the elements of the parent node for existence of an element whose name matches that from the lookup table. If count > 0 then a heading is created for the element. I try to use the same logic to populate the individual cells in the second template...but it obviously is incorrect... <xsl:apply-templates select="//Content/Table1" mode="header"/> <xsl:apply-templates select="//Content/Table1" mode="celldata"/> Here are the templates: <xsl:template match="Table1" mode="header"> <xsl:variable name="Table1" select="."/> <!-- process each Item element from lookup.xml --> <tr> <xsl:for-each select="$Table1Struct"> <xsl:variable name="ItemName" select="string(name(.))"/> <xsl:if test="count($Table1//*[name(.)=$ItemName]) > 0"> <td><xsl:value-of select="$ItemName"/></td> </xsl:if> </xsl:for-each> </tr> </xsl:template> <xsl:template match="Table1/Item" mode="celldata"> <xsl:variable name="Table1" select="."/> <tr> <xsl:for-each select="./*"> <xsl:variable name="tval" select="text()"/> <xsl:for-each select="$Table1Struct"> <xsl:variable name="ItemName" select="string(name(.))"/> <xsl:if test="count($Table1//*[name(.)=$ItemName]) > 0"> <td><xsl:value-of select="$tval"/></td> </xsl:if> </xsl:for-each> </xsl:for-each> </tr> </xsl:template> Here's the output: ItemLine ItemAcct Option ItemText 3 3 3 3 6 6 6 6 Contains Data1 Contains Data1 Contains Data1 Contains Data1 This is line 3 This is line 3 This is line 3 This is line 3 4 4 4 34 34 34 This is line 4 This is line 4 This is line 4 5 5 5 5 34 34 34 34 Contains Data2 Contains Data2 Contains Data2 Contains Data2 This is line 5 This is line 5 This is line 5 This is line 5 Imrran --- Wendell Piez <wapiez@xxxxxxxxxxxxxxxx> wrote: > At 04:39 PM 2/12/2003, I wrote: > ><xsl:template match="events"> > > <xsl:variable name="events" select="."/> > > <!-- bind the current node to a variable so we > can get it back > > after we change context --> > > <tr> > > <xsl:for-each select="$months"> > > <xsl:variable name="monthname" > select="@name"/> > > <td> > > <xsl:choose> > > <xsl:when > > > test="not($events/event[@date[contains(.,$monthname)]])"> > > <xsl:text> </xsl:text><!-- nbsp > --> > > </xsl:when> > > <xsl:otherwise> > > <xsl:apply-templates > > > select="$events/event[@date[contains(.,$monthname)]]"/> > > </xsl:otherwise> > > </xsl:choose> > > </td> > > </xsl:for-each> > > </tr> > ></xsl:template> > > Of course, looking now at my own code I can see the > xsl:choose could just > as well be: > > <xsl:apply-templates > > select="$events/event[@date[contains(.,$monthname)]]"/> > <xsl:if > test="not($events/event[@date[contains(.,$monthname)]])"> > <xsl:text> </xsl:text><!-- nbsp --> > </xsl:if> > > Note: I do not, myself, have obsessive-compulsive > disorder. But living in > my brain is someone who does. > > Cheers, > Wendell __________________________________________________ Do you Yahoo!? Yahoo! Shopping - Send Flowers for Valentine's Day http://shopping.yahoo.com XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: RE: [xsl] How to implement an a, Michael Semcheski | Thread | RE: RE: [xsl] How to implement an a, Wendell Piez |
Re: [xsl] Reference to variable can, Imrran Wahid | Date | [xsl] XMLNS and XSL, abdu . r . el-whidi |
Month |