RE: [xsl] multiple transformations (pipelining) in one stylesheet

Subject: RE: [xsl] multiple transformations (pipelining) in one stylesheet
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Fri, 19 Oct 2007 16:24:22 +0100
The general model is

<xsl:variable name="phase-1-output">
  <xsl:apply-templates select="/" mode="phase-1"/>
</xsl:variable>

<xsl:variable name="phase-2-output">
  <xsl:apply-templates select="$phase-1-output" mode="phase-2"/>
</xsl:variable>

<xsl:template match="/">
  <xsl:apply-templates select="$phase-2-output" mode="phase-3"/>
</xsl:template>

Use modes to make it clear which templates apply to which phase of
processing.

Michael Kay
http://www.saxonica.com/ 

> -----Original Message-----
> From: Oliver Lietz [mailto:list@xxxxxxxxxxxxxx] 
> Sent: 19 October 2007 16:08
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] multiple transformations (pipelining) in one stylesheet
> 
> Hello all,
> 
> this is my xml file:
> <?xml version="1.0" encoding="utf-8"?>
> <file>
>   <content>
>     <title>Lorem ipsum</title>
>     <para><acronym text="Lorem ipsum"/> dolor sit amet, ...</para>
>   </content>
> </file>
> 
> and here my xsl file:
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="2.0" 
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
>   <xsl:output method="xml" encoding="UTF-8" 
> omit-xml-declaration="yes"/>
> 
>   <xsl:template match="@*|node()">
>       <xsl:copy>
>         <xsl:apply-templates select="@*|node()"/>
>       </xsl:copy>
>   </xsl:template>
> 
>   <xsl:template match="acronym">
>     <xsl:value-of select="@text"/>
>   </xsl:template>
> 
>   <xsl:template match="/">
>     <p>
>       <xsl:value-of select="/file/content/para"/>
>     </p>
>   </xsl:template>
> 
> </xsl:stylesheet>
> 
> The second and third template alone with the first work as I 
> expect but the result should look like this:
> 
> <p>Lorem ipsum dolor sit amet, ...</p>
> 
> So what's the best way to use the result of the first 
> transformation (replace
> acronyms) as source for the second (make html)?
> I searched the web and this list and tried different 
> approaches but didn't succeed so far. Any hints? (using Saxon-B 8.9/j)
> 
> tia,
> O.

Current Thread