RE: [xsl] Entity Questions

Subject: RE: [xsl] Entity Questions
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 17 Jan 2005 23:02:17 -0000
> 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[@NAME=$textname] !=''" >
> <xsl:value-of select="DATA/VERSION/ITEM[@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/

Current Thread