Subject: RE: [xsl] Multiple tranformations of a given element using XSL From: "Michael Kay" <michael.h.kay@xxxxxxxxxxxx> Date: Wed, 11 Dec 2002 09:29:15 -0000 |
> > To make it more clear, after I change an element name > during the first pass, if I would like to change the > content of the element during the second pass, the > second template is working on the source tree (which > is never modified) and hence the first change is being > compromised on the output tree. If there is a way I can make > the second template work on the DOM modified by the first > template, then I can probably use the new element name in the > 'match' variable of the second template. > > In essence, the first set of templates will modify the > DOM during the first pass, the modified DOM will be > the source tree for the second set of templates and so > on. > Yes, it's perfectly possible to write multi-pass transformations, and it's often a good way of keeping your stylesheets well-structured and modular, even in cases where a single-pass solution is feasible. There are two approaches: using multiple transformations with multiple stylesheets, and using a single transformation with multiple phases within a single stylesheet. In the first approach you control the sequence of transformations from the processor's API. This is particularly convenient to do using JAXP in the Java world, but it's not difficult with Microsoft's API either. In the second approach you need to use a temporary tree and the xx:node-set extension. The typical logic is: <xsl:template match="/"> <xsl:variable name="temp"> <xsl:apply-templates select="/" mode="phase1"/> </xsl:variable> <xsl:apply-templates select="xx:node-set($temp)" mode="phase2"/> </xsl:template> You can of course implement the two modes (phases) in different stylesheet modules if you wish. Another approach is Saxon's "next-in-chain" extension which allows one stylesheet to nominate another stylesheet that is used to process the result tree from the first stylesheet. Incidentally, it's probably best not to use the term DOM to refer to trees in the XPath data model: there are many differences between the DOM model and the XPath model. Microsoft blur the distinction by implementing both models in one product. Michael Kay Software AG home: Michael.H.Kay@xxxxxxxxxxxx work: Michael.Kay@xxxxxxxxxxxxxx XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Multiple tranformations o, Conal Tuohy | Thread | Re: [xsl] Multiple tranformations o, Dimitre Novatchev |
RE: [xsl] superfluous namespace dec, Michael Kay | Date | [xsl] Identifying alternate rows., Jitu |
Month |