[xsl] Re: Re: Template match via xsl:param

Subject: [xsl] Re: Re: Template match via xsl:param
From: Dimitre Novatchev <dnovatchev@xxxxxxxxx>
Date: Tue, 15 Jan 2002 02:25:55 -0800 (PST)
> > Can anyone give me a simple example on how to achieve this without
> > genereting the xsl file on the fly?
> 
> You can't, I'm afraid.
> 
> If the $path parameter only specifies an element name, then what you
> could do is change the xsl:include to an xsl:import, and have the
> following template, which matches all elements, and goes on to process
> them with whatever's supplied in identity.xsl unless their name is the
> same as the $path parameter:
> 
> <xsl:template match="*">
>   <xsl:if test="name() != $path">
>     <xsl:apply-imports />
>   </xsl:if>
> </xsl:template>
> 
> If the $path is a more complex path, you could extend this solution to
> do more elaborate checks on the identity of the element (rather than
> just looking at its name) before going on to process it (or not).
> 
> Because of predicates, trying to implement a path pattern matcher in
> XSLT is just as hard as trying to implement an XPath evaluator in
> XSLT. But then probably the patterns that you're actually using are a
> subset of the patterns that would be allowed in the match attribute,
> so you might be able to make it work.
> 
> Otherwise, as you say, you need to generate the XSLT stylesheet on the
> fly.


There's an option not to ***generate*** a stylesheet, but to use a single stylesheet
and set the value of the "select" attribute of a given xsl:variable or xsl:param to
the desired XPath expression. Once this is done (e.g. via DOM), then the
transformation may be applied.

This is essentially how the XPath Visualiser works.

Cheers,
Dimitre Novatchev.



__________________________________________________
Do You Yahoo!?
Send FREE video emails in Yahoo! Mail!
http://promo.yahoo.com/videomail/

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


Current Thread