Subject: RE: [xsl] XSL selection question From: "Andrew Welch" <awelch@xxxxxxxxxxxxxxx> Date: Tue, 5 Nov 2002 10:55:21 -0000 |
Hi, You need to just apply-templates in document order, so in english you might say for each <inst-part> output <part-number> output <description> output <inst-notes> at the moment you are saying for each <inst-note> output <part-number> output <description> output content... so naturally enough you will get the <part-number> and <description> output every time you encounter an <inst-note>. Rearrange your templates a little and then apply them in document order (if your dtd allows) (untested) <xsl:template match="inst-part"> <!-- format the part number and description --> <!-- It is not that easy with FO --> <xsl:apply-templates/> </xsl:template> <xsl:template match="part-number"> <fo:table-row line-height="10pt"> <fo:table-cell padding="4pt"> <fo:block text-align="start"> <xsl:value-of select="."/> </fo:block> </fo:table-cell> <fo:table-cell padding="4pt" height="1cm"> </xsl:template> <xsl:template match="description"> <fo:table-cell padding="4pt" height="1cm"> <fo:block text-align="start"> <xsl:value-of select="."/> </fo:block> </fo:table-cell> </xsl:template> <xsl:template match="inst-note"> <!-- format the output of the "view" value along --> <!-- with the note contents. This will not start --> <!-- at the beginning of the line. --> <!--....part-number and description handling code separated out--> <fo:table-cell padding="4pt" height="1cm"> <fo:block text-align="center"> <xsl:value-of select="view"/> ..... cheers andrew > -----Original Message----- > From: jeremyf@xxxxxxxxxxx [mailto:jeremyf@xxxxxxxxxxx] > Sent: 04 November 2002 18:05 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] XSL selection question > > > Hi All, > I have an XML file such that: > > <report> > -snip- > <module-installation-requirements sectionID="4"> > <inst-part> > <part-number>G4P5616EGPPAE500</part-number> > <description>DESCRIPTION FOR INSTALLATION > REQUIREMENTS</description> > <inst-notes> > <inst-note> > <view>ENG</view> > <note> > <note-title>FREE FORM NOTE</note-title> > <note-description>TEXT FOR FREE FORM > NOTE</note-description> > </note> > </inst-note> > <inst-note> > <view>ENG</view> > <note> > <note-title>FREE FORM NOTE 2</note-title> > <note-description>TEXT FOR FREE FORM NOTE > 2</note-description> > </note> > </inst-note> > </inst-notes> > </inst-part> > </module-installation-requirements> > -snip- > </report> > > I want the following output > > > > G4P5616EGPPAE500 DESCRIPTION FORINSTALLATIONREQUIREMENTS ENG > FREE FORM NOTE TEXT FOR FREE FORM NOTE > > ENG > FREE FORM NOTE 2 TEXT FOR FREE FORM NOTE 2 > > Each of these is a row in my output. How do I select the number and > description the first time but not every time after until I > reach a new > number? > I have a template that gives me the nodes, but I also need to handle > different views for the same part/description and potentially multiple > <note> items per view. > My templates look something like this: > > -snip- > > <xsl:template match="module-installation-requirements"> > <!-- start of format specific setup --> > <fo:table height="1cm" table-layout="fixed"> > <fo:table-column column-width="25cm"/> > <fo:table-body font-family="Times-Roman" > font-weight="bold" font-size="8pt"> > <fo:table-row line-height="8pt"> > <fo:table-cell padding="8pt"> > <fo:block text-align="start" > height=".5cm">* * * * * * * * * * * * * * * * * * * * * * * * > * * * * * * * > * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * > * * * * * * * > * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * > * * * * * * * > * * * * * * * * </fo:block> > </fo:table-cell> > </fo:table-row> > <fo:table-row line-height="8pt"> > <fo:table-cell padding="8pt"> > <fo:block > text-align="center" > height=".5cm" font-weight="normal">. . . MODULE INSTALLATION > REQUIREMENTS . . .</fo:block> > </fo:table-cell> > </fo:table-row> > </fo:table-body> > </fo:table> > <fo:table height="1cm" table-layout="fixed"> > <fo:table-column column-width="6cm"/> > <fo:table-column column-width="4cm"/> > <fo:table-column column-width="2cm"/> > <fo:table-column column-width="4cm"/> > <fo:table-column column-width="8cm"/> > <fo:table-header font-family="Times-Roman" > font-weight="bold" font-size="8pt"> > <fo:table-row line-height="10pt"> > <fo:table-cell padding="4pt"> > <fo:block > text-align="start">PART > OR IDENTIFYING NUMBER</fo:block> > </fo:table-cell> > <fo:table-cell > padding="4pt" height > ="1cm"> > <fo:block text-align > ="start">DESCRIPTION</fo:block> > </fo:table-cell> > <fo:table-cell > padding="4pt" height > ="1cm"> > <fo:block text-align > ="center">VIEW</fo:block> > </fo:table-cell> > <fo:table-cell > padding="4pt" height > ="1cm"> > <fo:block text-align > ="center">NOTE TITLE</fo:block> > </fo:table-cell> > <fo:table-cell > padding="4pt" height > ="1cm"> > <fo:block > text-align="start">NOTE > DESCRIPTION</fo:block> > </fo:table-cell> > </fo:table-row> > </fo:table-header> > <fo:table-body font-family="Times-Roman" > font-weight="bold" font-size="8pt"> > <!-- end setup --> > <!-- call the template to format this section and pass > the title --> > <xsl:choose> > <xsl:when test="*"> > <xsl:apply-templates/> > </xsl:when> > <xsl:otherwise> > <fo:table height=".8cm" table-layout="fixed"> > <fo:table-column column-width="25cm"/> > <fo:table-body font-family="Times-Roman" font-weight > ="bold" font-size="8pt"> > <fo:table-row line-height="10pt"> > <fo:table-cell padding-top="8pt"> > <fo:block > text-align="center" height > =".8cm">NO APPLICABLE DATA EXISTS</fo:block> > </fo:table-cell> > </fo:table-row> > </fo:table-body> > </fo:table> > </xsl:otherwise> > </xsl:choose> > <!-- start of clean up --> > </fo:table-body> > </fo:table> > <!-- end clean up --> > </xsl:template> > > <xsl:template match="inst-part"> > <!-- format the part number and description --> > <!-- It is not that easy with FO --> > <xsl:apply-templates select="inst-notes"/> > </xsl:template> > > <xsl:template match="inst-note"> > <!-- format the output of the "view" value along --> > <!-- with the note contents. This will not start --> > <!-- at the beginning of the line. --> > <fo:table-row line-height="10pt"> > <fo:table-cell padding="4pt"> > <fo:block text-align > ="start"><xsl:value-of select="../../part-number"/></fo:block> > </fo:table-cell> > <fo:table-cell > padding="4pt" height > ="1cm"> > <fo:block text-align > ="start"><xsl:value-of select="../../description"/></fo:block> > </fo:table-cell> > <fo:table-cell > padding="4pt" height > ="1cm"> > <fo:block text-align > ="center"><xsl:value-of select="view"/></fo:block> > </fo:table-cell> > <fo:table-cell > padding="4pt" height > ="1cm"> > <fo:block text-align > ="center"><xsl:value-of select="note/note-title"/></fo:block> > </fo:table-cell> > <fo:table-cell > padding="4pt" height > ="1cm"> > <fo:block text-align > ="start"><xsl:value-of select="note/note-description"/></fo:block> > </fo:table-cell> > </fo:table-row> > <xsl:for-each select="inst-note/note"> > <fo:table-row line-height="10pt"> > <fo:table-cell padding="4pt"> > <fo:block > text-align="start"/> > </fo:table-cell> > <fo:table-cell > padding="4pt" height > ="1cm"> > <fo:block > text-align="start"/> > </fo:table-cell> > <fo:table-cell > padding="4pt" height > ="1cm"> > <fo:block text-align > ="center"><xsl:value-of select="view"/></fo:block> > </fo:table-cell> > <fo:table-cell > padding="4pt" height > ="1cm"> > <fo:block text-align > ="center"><xsl:value-of select="note-title"/></fo:block> > </fo:table-cell> > <fo:table-cell > padding="4pt" height > ="1cm"> > <fo:block text-align > ="start"><xsl:value-of select="note-description"/></fo:block> > </fo:table-cell> > </fo:table-row> > </xsl:for-each> > </xsl:template> > > I am certain that I am making this harder than it sould be, > but I am still > having trouble. > Any help is appreciated. > > Jeremy > > > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
<- Previous | Index | Next -> |
---|---|---|
[xsl] XSL selection question, jeremyf | Thread | RE: [xsl] XSL selection question, jeremyf |
AW: [xsl] expression must evaluate , "Braumüller, Hans" | Date | RE: [xsl] JavaScript problem again!, Jarno . Elovirta |
Month |