Re: [xsl] how to match node set with attribute then pass to atemplate

Subject: Re: [xsl] how to match node set with attribute then pass to atemplate
From: Biying Huang <biying@xxxxxxxxxxxxxxx>
Date: Fri, 26 Sep 2003 15:52:59 -0400
Thank you very much. I have never know this before.

But I use FOP to generate PDF, it give me an error says:
java.lang.RuntimeException: org.apache.fop.apps.FOPException: Currently only
Table Rows are supported in table body, header and footer

So I have to put <fo:table-row>.  In my case, for each Attachment, how can I
output its <info> on top of its <filename>, so the output will look like:
......
                <table-cell border="solid" starts-row="true">
                   <block>information for Image5445.jpg</block>
                </table-cell>
                <table-cell border="solid">
                   <block>information for Image5447.jpg</block>
                </table-cell>

                <table-cell border="solid" starts-row="true">
                   <block>Image5445.jpg</block>
                </table-cell>
                <table-cell border="solid">
                   <block>Image5447.jpg</block>
                </table-cell>
......

Biying


"G. Ken Holman" wrote:

> At 2003-09-26 12:24 -0400, Biying Huang wrote:
> >In PDF output, I am trying to display 2 images side by side and its info
> >above each image, but only display images that has the attribute
> >showImage="true".
>
> This is an ideal situation for the cell-based row-grouping strategy in
> XSL-FO ... most of my students have never heard of this and only think of
> the row-based row-grouping strategy because of their background in HTML.  I
> see from your attempt that you, too, were trying to work out an answer
> using the row-based row-grouping strategy.
>
> When dealing algorithmically with column counts in XSL-FO, using the
> cell-based row-grouping strategy delegates the hard work to the XSL-FO
> engine, making the stylesheet very easy.
>
> The example below works as expected in both Antenna House and RenderX
> XSL-FO engines.  I increased the size of the data sample to show it working
> with more cells.
>
> I hope this helps.
>
> ...................... Ken
>
> T:\Biying>type biying.xml
> <AttachmentList>
>      <Attachment showImage="true">
>          <filename>Image5445.jpg</filename>
>          <info>image information</info>
>    </Attachment>
>
>    <Attachment showImage="false">
>          <filename>Image5446.jpg</filename>
>          <info>image information</info>
>    </Attachment>
>
>    <Attachment showImage="true">
>          <filename>Image5447.jpg</filename>
>          <info>image information</info>
>    </Attachment>
>    <Attachment showImage="false">
>          <filename>Image5448.jpg</filename>
>          <info>image information</info>
>    </Attachment>
>
>    <Attachment showImage="true">
>          <filename>Image5449.jpg</filename>
>          <info>image information</info>
>    </Attachment>
>    <Attachment showImage="false">
>          <filename>Image5450.jpg</filename>
>          <info>image information</info>
>    </Attachment>
>
>    <Attachment showImage="true">
>          <filename>Image5451.jpg</filename>
>          <info>image information</info>
>    </Attachment>
>
>    <Attachment showImage="true">
>          <filename>Image5452.jpg</filename>
>          <info>image information</info>
>    </Attachment>
>    <Attachment showImage="false">
>          <filename>Image5453.jpg</filename>
>          <info>image information</info>
>    </Attachment>
>
>    <Attachment showImage="true">
>          <filename>Image5454.jpg</filename>
>          <info>image information</info>
>    </Attachment>
>
> </AttachmentList>
>
> T:\Biying>type biying.xsl
> <?xml version="1.0" encoding="iso-8859-1"?>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
>                  xmlns="http://www.w3.org/1999/XSL/Format";
>                  version="1.0">
>
> <xsl:output indent="yes"/>
>
> <xsl:template match="/">
> <root font-family="Times" font-size="20pt">
>
>    <layout-master-set>
>      <simple-page-master master-name="frame"
>                          page-height="210mm" page-width="297mm"
>                          margin-top="1cm" margin-bottom="1cm"
>                          margin-left="1cm" margin-right="1cm">
>        <region-body region-name="frame-body"/>
>      </simple-page-master>
>    </layout-master-set>
>
>    <page-sequence master-reference="frame">
>      <flow flow-name="frame-body">
>        <block>Test of table columns</block>
>        <table border="solid">
>          <table-body>
>            <xsl:apply-templates select="/AttachmentList/
>                                         Attachment[@showImage='true']"/>
>          </table-body>
>        </table>
>      </flow>
>    </page-sequence>
> </root>
> </xsl:template>
>
> <xsl:template match="Attachment">
>    <table-cell border="solid">
>      <xsl:if test="count( preceding-sibling::Attachment[@showImage='true'] )
>                    mod 2 = 0">
>        <xsl:attribute name="starts-row">true</xsl:attribute>
>      </xsl:if>
>      <block>
>        <xsl:value-of select="filename"/>
>      </block>
>    </table-cell>
> </xsl:template>
>
> </xsl:stylesheet>
> T:\Biying>saxon -o biying.fo biying.xml biying.xsl
>
> T:\Biying>type biying.fo
> <?xml version="1.0" encoding="utf-8"?>
> <root xmlns="http://www.w3.org/1999/XSL/Format"; font-family="Times"
> font-size="20pt">
>     <layout-master-set>
>        <simple-page-master master-name="frame" page-height="210mm"
> page-width="297mm" margin-top="1cm" margin-bottom="1cm" margin-left="1cm"
> margin-right="1cm">
>           <region-body region-name="frame-body"/>
>        </simple-page-master>
>     </layout-master-set>
>     <page-sequence master-reference="frame">
>        <flow flow-name="frame-body">
>           <block>Test of table columns</block>
>           <table border="solid">
>              <table-body>
>                 <table-cell border="solid" starts-row="true">
>                    <block>Image5445.jpg</block>
>                 </table-cell>
>                 <table-cell border="solid">
>                    <block>Image5447.jpg</block>
>                 </table-cell>
>                 <table-cell border="solid" starts-row="true">
>                    <block>Image5449.jpg</block>
>                 </table-cell>
>                 <table-cell border="solid">
>                    <block>Image5451.jpg</block>
>                 </table-cell>
>                 <table-cell border="solid" starts-row="true">
>                    <block>Image5452.jpg</block>
>                 </table-cell>
>                 <table-cell border="solid">
>                    <block>Image5454.jpg</block>
>                 </table-cell>
>              </table-body>
>           </table>
>        </flow>
>     </page-sequence>
> </root>
>
> --
> Next public US delivery:        3-day XSLT/2-day XSL-FO 2003-10-13
> Next public European delivery:  3-day XSLT/2-day XSL-FO 2003-11-??
> Instructor-led on-site corporate, government & user group training
> for XSLT and XSL-FO world-wide:  please contact us for the details
>
> G. Ken Holman                 mailto:gkholman@xxxxxxxxxxxxxxxxxxxx
> Crane Softwrights Ltd.          http://www.CraneSoftwrights.com/s/
> Box 266, Kars, Ontario CANADA K0A-2E0    +1(613)489-0999 (F:-0995)
> ISBN 0-13-065196-6                       Definitive XSLT and XPath
> ISBN 0-13-140374-5                               Definitive XSL-FO
> ISBN 1-894049-08-X   Practical Transformation Using XSLT and XPath
> ISBN 1-894049-11-X               Practical Formatting Using XSL-FO
> Member of the XML Guild of Practitioners:     http://XMLGuild.info
> Male Breast Cancer Awareness  http://www.CraneSoftwrights.com/s/bc
>
>  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