xsl-list
[Top] [All Lists]

RE: Exclude elements in transformation

2004-09-17 00:08:26
M. David Peterson <mailto:m(_dot_)david(_at_)mdptws(_dot_)com> wrote on 
Thursday, September
16, 2004 2:22 PM:

Im not sure if I completely understand what you are trying to
do.  Ive checked
your mentioned thread it seems that you are really trying to
use template
matching rules to group/ungroup, include/exclude data
elements which is going to
be better served by grouping the data together in the correct
layout/format first and then apply-templates to the resulting
temporary 
tree.  Let me know if
the following concept is what you are ultimately attempting
to accomplish...

Thx for your answer. I am really no XML/XSLT geek. I just try to get my
template work :)

I'll try to write the whole story again:

I have a working XSLT Stylesheet for transforming a html-like syntax into
XSL-FO.

The output PDF should have the feature that a Heading never breaks with the
next elements into 2 pages.

XSL-FO has the the property "keep-with-next" for this issue, but I use FOP
as FO-processor and that only supports it within 2 table rows. So i needed a
template, that converts the <hX> tag and the following tag into a <fo:table>
with 2 rows. And the second template, that tells XSLT not to process the
elements preceeded by a <hX> tag twice. And i wrote you my stylesheets, but
the dont work:


[XSLT]
<xsl:template match="h1|h2|h3|h4|h5">
     <fo:table table-layout="fixed" width="100%">
             <fo:table-column
column-width="proportional-column-width(1)"/>
             <fo:table-body>
                     <fo:table-row keep-with-next="always">
                             <fo:table-cell>
                                     <fo:block
xsl:use-attribute-sets="name()">
                                             <xsl:apply-templates/>
                                     </fo:block>
                             </fo:table-cell>
                     </fo:table-row>
                     <fo:table-row>
                             <fo:table-cell>
                                     <fo:block>
                                             <xsl:apply-templates
select="following-sibling::*"/>
                                     </fo:block>
                             </fo:table-cell>
                     </fo:table-row>
             </fo:table-body>
     </fo:table>
</xsl:template>

<xsl:template match="*[preceding-sibling::(h1|h2|h3|h4|h5)]"/>
[/XSLT] 

But that does not work

1. The second element is there twice.
2. The xsl:use-attribute-sets="name()" does not work here.

Any idea?

So it's just a workaround and would not be possible if FOP supported the
"keep" for all elements as the standard says. I am happy with my 'dirty'
solution, because if FOP will support it the future, the workaround gets
kicked.

I would be really happy if you told me how to get this work!!

Thx, soenke.




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