Michael;
Thanks for your patience.
Here is one template that calls the template I keep showing.
<xsl:template name="s1_pdf">
<!-- text 1 -->
<fo:flow flow-name="xsl-region-body">
<fo:block font-family="Helvetica" font-size="12pt" font-weight="bold"
break-after="auto" space-after="10pt" text-align="left">
<xsl:call-template name="text_display_and_edit">
<xsl:with-param name="text_number" select="number('1')" />
</xsl:call-template>
</fo:block>
<!-- text 2 -->
<fo:block font-family="Helvetica" font-size="12pt" font-weight="normal"
text-align="left">
<xsl:call-template name="text_display_and_edit">
<xsl:with-param name="text_number" select="number('2')" />
</xsl:call-template>
</fo:block>
</fo:flow>
</xsl:template>
I tested adding the match="P" template. I didn't replace anything. I think
this might be because I changed the output method to xml to deal with
entities like
I am thinking the <P> tags are now <P> so the template is not matching
them. I am adding some logging to verify this, if this is the case I may
need to rethink things.
Luke
----- Original Message -----
From: "Michael Kay" <mike(_at_)saxonica(_dot_)com>
To: <xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com>
Sent: Monday, January 17, 2005 6:02 PM
Subject: RE: [xsl] Entity Questions
So taking this template for example:
<!-- the html i am looking at is machine generated and in all caps -->
<xsl:template match="P">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
This is matching a P node (<P>) and replacing it with the
<fo:block>the
contents of the matched node</fo:block>.
Is this correct?
Yes that's correct.
If this is correct than I should be able to do the following:
<!-- output the text from the xml document -->
<xsl:template name="text_display_and_edit">
<xsl:param name="text_number" />
<xsl:param name="textname" select="concat('TEXT',$text_number)" />
<xsl:if test="DATA/VERSION/ITEM[(_at_)NAME=$textname] !=''" >
<xsl:value-of select="DATA/VERSION/ITEM[(_at_)NAME=$textname]"/>
</xsl:if>
</xsl:template>
You've shown this named template several times, but you haven't shown any
code that calls it, or the section of the source document that it's
processing. A named template is invoked using xsl:call-template,
<!-- this template will catch the <P> and output their
contents inside of
<fo:block> instead-->
<xsl:template match="P">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
This is just the template rule you showed us before.
Is this making more sense?
One thing I don't understand. How does <xsl:apply-template/>
manage to write
the content of the node out?
It does it indirectly. It selects some nodes from the source document; the
template rules that match those nodes are activated, and instructions
within
those template rules, such as <B>...</B> or <xsl:value-of select="@x"/>,
write nodes to the result tree.
Michael Kay
http://www.saxonica.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>
--~--