Subject: RE: [xsl] multiple transformations (pipelining) in one stylesheet From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Fri, 19 Oct 2007 18:19:19 +0100 |
> I tried to adapt your model (used your mode names to see if I > understand it) but there must be an error, I don't get any output. > > <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()" mode="phase-1"> > <xsl:copy> > <xsl:apply-templates select="@*|node()"/> You need to use mode="phase-1" here (or mode="#current") > </xsl:copy> > </xsl:template> > > <xsl:template match="acronym" mode="phase-1"> > <xsl:value-of select="@text"/> > </xsl:template> > > <xsl:template match="/" mode="phase-2"> > <p> > <xsl:value-of select="/file/content/para"/> > </p> > </xsl:template> > > <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> > > </xsl:stylesheet> > > So it works like this: > 1) template (match="/") pulls in result from $phase-2-output > 2) $phase-2-output is build by applying phase-2 templates to > $phase-1-output > 3) $phase-1-output is build by applying phase-1 templates to > root of document > > Am I right? > Yes, that's the idea. Note, the variables can either be global, or they can be local variables within the match="/" template. Michael Kay http://www.saxonica.com/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] multiple transformations , Oliver Lietz | Thread | Re: [xsl] multiple transformations , Oliver Lietz |
[xsl] error testing id() in externa, Trevor Nicholls | Date | RE: [xsl] error testing id() in ext, Michael Kay |
Month |