Subject: [xsl] RE: multi-phase transformations (was untitled) From: "Michael Kay" <mhkay@xxxxxxxxxxxx> Date: Wed, 14 Mar 2001 10:10:25 -0000 |
> I guess my general question is, how do you have one xsl > output an xml file > and then have a 2nd xsl automatically process it? > There are two approaches: the one-stylesheet approach and the multi-stylesheet approach. In the one-stylesheet approach, you need the node-set() extension to make the output of the first phase accessible to the second. You also need to ensure that the rules for each phase are kept separate. One way to do this is with modes, another way is by using a different namespace for the source tree and the intermediate tree. Putting the rules in different stylesheet modules is helpful but doesn't itself solve the problem. The typical logic (for three phases) is: <xsl:variable name="phase1-output"> <xsl:apply-templates select="/" mode="phase1"/> </xsl:variable> <xsl:variable name="phase2-output"> <xsl:apply-templates select="node-set($phase1-output)" mode="phase2"/> </xsl:variable> <xsl:templates match="/"> <xsl:apply-templates select="node-set($phase2-output)" mode="phase3"/> </xsl:template> The alternative multi-stylesheet approach is to control several transformations linked together into a pipeline from the transformation API. The TrAX API allows a transformation to be configured as a SAX Filter which makes this very convenient. Mike Kay Software AG XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Re:, Larry Garfield | Thread | [xsl] copying source tree with sutt, Roshan Sharma |
RE: [xsl] Using position() with sor, Michael Kay | Date | RE: [xsl] dash, Michael Kay |
Month |