xsl-list
[Top] [All Lists]

[xsl] Push Processing

2009-03-02 09:13:09
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>
--~--

<Prev in Thread] Current Thread [Next in Thread>