Thanks Michael,
Unfortunately I am using 1.0 - So I will have to rework the table.
As for your 2.0 suggestion, I look forward to updating my stylesheets to
2.0.
Thanks,
Phil
-----Original Message-----
From: Michael Kay [mailto:mike(_at_)saxonica(_dot_)com]
Sent: Monday, March 02, 2009 9:30 AM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: RE: [xsl] Push Processing
Well, you can't apply templates to a node that isn't there, so you need to
find another way.
In XSLT 2.0 you could try this:
<xsl:function name="f:expand" as="element()">
<xsl:param name="item" as="element(item)"/>
<xsl:param name="child" as="element()?"/>
<xsl:choose>
<xsl:when test="exists($child)">
<xsl:sequence select="$child"/>
</xsl:when>
<xsl:otherwise>
<emptyCell/>
</xsl:otherwise>
</xsl:choose>
</xsl:function>
then
<xsl:apply-templates select="f:expand(.,label), f:expand(.,code),
f:expand(.,no), ..."/>
Michael Kay
http://www.saxonica.com/
-----Original Message-----
From: Philip Vallone [mailto:philip(_dot_)vallone(_at_)verizon(_dot_)net]
Sent: 02 March 2009 14:14
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Push Processing
Hi List,
I am using push processing to output a resulting FO file. I use
apply-templates to build a table row and its cells.
Normally I would build the table by using a pull philosophy, but it
would require a lot of rework to the stylesheet. My problem occurs
when I have an optional element. Using apply-templates, my output my
leave out a cell, causing my cell alignment to be off. The below is a
dumb-down version for example:
<item-entry>
<item>
<label>1</label>
<code>234</code>
<no>12345</no>
<partno>12-3456-0981-1</partno>
<name>Widget</name>
<qty>3</qty>
</item>
</item-entry>
Suppose I am missing <nsn>, I need to apply an empty cell.
How can I do this using push processing?
<xsl:template match="item-entry">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="item">
<fo:table-row>
<xsl:apply-templates/>
</fo:table-row>
</xsl:template>
<xsl:template match="label">
<fo:table-cell>
<fo:block>
<xsl:value-of select="."/>
</fo:block>
</fo:table-cell>
</xsl:template>
<xsl:template match="code">
<fo:table-cell>
<fo:block>
<xsl:value-of select="."/>
</fo:block>
</fo:table-cell>
</xsl:template>
<xsl:template match="nsn">
<fo:table-cell>
<fo:block>
<xsl:value-of select="."/>
</fo:block>
</fo:table-cell>
</xsl:template>
<xsl:template match="partno">
<fo:table-cell>
<fo:block>
<xsl:value-of select="."/>
</fo:block>
</fo:table-cell>
</xsl:template>
<xsl:template match="name">
<fo:table-cell>
<fo:block>
<xsl:value-of select="."/>
</fo:block>
</fo:table-cell>
</xsl:template>
<xsl:template match="qty">
<fo:table-cell>
<fo:block>
<xsl:value-of select="."/>
</fo:block>
</fo:table-cell>
</xsl:template>
Thanks,
Phil
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--