[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

for-each loop not working properly in XSL-FO

Subject: for-each loop not working properly in XSL-FO
From: Lisa.Mychalishyn@xxxxxxxxxxxxx
Date: Wed, 21 Jan 2004 16:47:41 -0500
xsl fo for each



Please bear with me, as I'm new to XSL....I've stumbled my way through what
you'll read below.  I'm trying to create a new page for each <picture>,
however, the for-each only works with the <area>.  When I use <area> the
resultant pdf works properly, but it is possible to have mulitple <picture>
elements for one <area>.  I feel as though I've tried everything, using
multiple for-each loops, changing the names of the tags, using absolute
referencing, using // referencing.....any suggestions as to why this would
not be working?

Here's an excerpt of my XML...

<pb>
      <section>
            <sectionname>Overview</sectionname>

            <area>
                  <areaname>Defects</areaname>
                  <picture>
                        <caption>Defect-12</caption>
                        <pictureurl>/autoproposal/25.jpeg</pictureurl>

<drawingurl>/autoproposal/LS-4-00_T_Joint.gif</drawingurl>
                        <height>4.50in</height>
                        <width>4.50in</width>
                        <defect>
                              <description>Deck-rusted</description>
                              <cause>Acids in air/ ext and int
moisture</cause>
                              <impact>Safety issues, debris getting into
machinery</impact>
                              <solution>Tear-off and lay another sheet of
deck on top</solution>
                        </defect>
                  </picture>
            </area>

      </section>
</pb>


Here's my XSL-FO...

<xsl:template match="pb">
<fo:root>
      <fo:layout-master-set>
            <fo:simple-page-master master-name="picturebook">
                  <fo:region-before
display-align="center"></fo:region-before>
                  <fo:region-body margin=".5in" />
            </fo:simple-page-master>
      </fo:layout-master-set>
<xsl:for-each select="descendant::area">
      <fo:page-sequence master-reference="picturebook">
            <fo:flow flow-name="xsl-region-body">
                  <fo:table>
                        <fo:table-column column-width="2.5in"
number-columns-repeated="2" />
                        <fo:table-column column-width="2in"
number-columns-repeated="1" />
                        <fo:table-body>
                              <xsl:apply-templates mode="header" />
                              <xsl:apply-templates mode="caption" />
                              <xsl:apply-templates mode="picture" />
                              <xsl:apply-templates mode="drawing" />
                        </fo:table-body>
                  </fo:table>
            </fo:flow>
      </fo:page-sequence>
</xsl:for-each>
</fo:root>
</xsl:template>

<xsl:template match="pb" mode="header">
      <xsl:apply-templates select="section" mode="header" />
</xsl:template>

<xsl:template match="section" mode="header">
            <fo:table-row>
                  <fo:table-cell>
                        <fo:block space-before="12pt"><fo:inline
font-weight="bold"><xsl:text>Section: </xsl:text></fo:inline><xsl:value-of
select="sectionname" /></fo:block>
                  </fo:table-cell>
                  <fo:table-cell />
            </fo:table-row>
</xsl:template>

<xsl:template match="pb" mode="caption">
      <xsl:apply-templates select="picture" mode="caption" />
</xsl:template>

<xsl:template match="picture" mode="caption">
      <fo:table-row>
            <fo:table-cell>
                  <xsl:if test="string(caption)">
                        <fo:block space-before="12pt"><fo:inline
font-weight="bold"><xsl:text>Caption: </xsl:text></fo:inline><xsl:value-of
select="caption" /></fo:block>
                  </xsl:if>
            </fo:table-cell>
            <fo:table-cell />
      </fo:table-row>

</xsl:template>

<xsl:template match="pb" mode="picture">
      <xsl:apply-templates select="picture" mode="picture" />
</xsl:template>

<xsl:template match="picture" mode="picture">
      <fo:table-row>
            <fo:table-cell number-columns-spanned="2">
                  <fo:block>
                        <fo:external-graphic>
                              <xsl:attribute name="height">
                                    <xsl:value-of select="height" />
                              </xsl:attribute>
                              <xsl:attribute name="width">
                                    <xsl:value-of select="width" />
                              </xsl:attribute>
                              <xsl:attribute name="src">
                                    <xsl:value-of select="pictureurl" />
                              </xsl:attribute>
                        </fo:external-graphic>
                  </fo:block>
            </fo:table-cell>
            <fo:table-cell padding="6pt">
                  <xsl:if test="string(descendant::description)">
                        <fo:block font-weight="bold"
space-before="8pt">Description</fo:block>
                        <fo:block space-after="20pt"><xsl:value-of
select="descendant::description" /></fo:block>
                        <fo:block font-weight="bold">Cause</fo:block>
                        <fo:block space-after="20pt"><xsl:value-of
select="descendant::cause" /></fo:block>
                        <fo:block font-weight="bold">Impact</fo:block>
                        <fo:block space-after="20pt"><xsl:value-of
select="descendant::impact" /></fo:block>
                  </xsl:if>
            </fo:table-cell>
      </fo:table-row>
</xsl:template>

<xsl:template match="pb" mode="drawing">
      <xsl:apply-templates select="picture" mode="drawing" />
</xsl:template>

<xsl:template match="picture" mode="drawing">
      <fo:table-row>
            <fo:table-cell>
                  <xsl:if test="string(descendant::solution)">
                        <fo:block font-weight="bold"
space-before="8pt">Solution</fo:block>
                        <fo:block><xsl:value-of
select="descendant::solution" /></fo:block>
                  </xsl:if>
            </fo:table-cell>
            <fo:table-cell number-columns-spanned="2">
                  <fo:block>
                        <fo:external-graphic>
                              <xsl:attribute name="height">
                                    <xsl:value-of select="height" />
                              </xsl:attribute>
                              <xsl:attribute name="width">
                                    <xsl:value-of select="width" />
                              </xsl:attribute>
                              <xsl:attribute name="src">
                                    <xsl:value-of select="drawingurl" />
                              </xsl:attribute>
                        </fo:external-graphic>
                  </fo:block>
            </fo:table-cell>
      </fo:table-row>
</xsl:template>

Lisa Mychalishyn
Business Analyst

800-423-5667 ext. 249


_____________________________________________________________________
This message has been checked for all known viruses by a Third Party virus scanning service.  Please direct any questions or comments to Helpdesk@xxxxxxxxxxxxxx

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.