This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Creating nodes for the source versus the results tree.


use EXSLT this will ensure a bit of interoperability

www.exslt.org

cheers, jim fuller

----- Original Message ----- 
From: "Edward L. Knoll" <ed.knoll@cosd.fedex.com>
To: "Jeni Tennison" <jeni@jenitennison.com>
Cc: <XSL-List@lists.mulberrytech.com>
Sent: Monday, July 08, 2002 8:13 PM
Subject: Re: [xsl] Creating nodes for the source versus the results tree.


> I'm somewhat adverse to a specific product coupling, since it means the
> stylesheets might not be generically consumable if we want/have to switch
> to a different XSLT processor.   I'm also a bit leary about vendor
> specific extensions with respect to the next generate of XSL.  I was all
> set to take advantage of some XSL 1.1 features of a specific processor
> when I learned that XSL 1.1 had been abandoned and those features were to
> be handled very differently in XSL 2.0.
> 
> With that long-winded preamble, is utilizing this kind of "nodeset()"
> extentsion function type of approach  likely to be
> consistent/compatible/portable moving forward into the next generation of
> XSL?
> 
> Thanks for help,
> Ed
> 
> > Hi Ed,
> >
> > > I know this is something I could do in a two pass process: during
> > > pass1 process of the original/source XML to create the
> > > intermediate/temporary XML elements, during pass2 process both the
> > > original XML and generated XML elements to create the final output.
> > > I'd rather do this in a single pass; is this possible?
> >
> > Only using an extension function. You can store the result of the
> > first pass in a variable, but it's stored as a result tree fragment,
> > which means that you can't go on to process it further without turning
> > it into a node set. You can turn it into a node set with extension
> > functions; most processors have them...
> >
> > > Two other notes/constraints: (1) I'm using the XalanC++ processor,
> >
> > ... and in Xalan-C++ it's called nodeset(), in the namespace
> > http://xml.apache.org/xalan. So do something like:
> >
> > <xsl:stylesheet version="1.0"
> >                 xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
> >                 xmlns:xalan="http://xml.apache.org/xalan";
> >                 extension-element-prefixes="xalan">
> >
> > <xsl:template match="/">
> >   <xsl:variable name="pass1-rtf">
> >     <xsl:apply-templates mode="pass1" />
> >   </xsl:variable>
> >   <xsl:apply-templates select="xalan:nodeset($pass1-rtf)"
> >                        mode="pass2" />
> > </xsl:template>
> >
> > ...
> >
> > </xsl:stylesheet>
> >
> > with templates in 'pass1' mode for your first pass and in 'pass2' mode
> > for your second pass.
> 
> 
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]