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]

RE: A very interesting feature of MSXML


Hello Alexander !

I think that is a good example of how extension functions can break up xslt's free of side-effects nature.

---
Oleg Tkachenko,
Multiconn International 

> -----Original Message-----
> From: owner-xsl-list@lists.mulberrytech.com 
> [mailto:owner-xsl-list@lists.mulberrytech.com]On Behalf Of 
> Alexander Gutman
> Sent: Saturday, August 11, 2001 2:58 PM
> To: xsl-list@lists.mulberrytech.com
> Subject: [xsl] A very interesting feature of MSXML
> 
> 
> Hello, friends.
> 
> I have just discovered a very interesting feature of MSXML.
> If we transform this:
> 
>   <root>
>     <one/>
>     <two/>
>     <three/>
>   </root>
> 
> via this:
> 
>   <xsl:transform version="1.0"
>     xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
>     xmlns:msxsl="urn:schemas-microsoft-com:xslt"
>     xmlns:x="urn:x">
> 
>     <msxsl:script language="JScript" implements-prefix="x">
>       var m = 'old';
>       function setMode(newMode){ m = newMode; return 'changed' }
>       function mode(){ return m }
>     </msxsl:script>
> 
>     <xsl:template match="/root" priority="1">
>       <result>
>         <xsl:apply-templates select="*"/>
>       </result>
>     </xsl:template>
> 
>     <xsl:template match="*[x:mode()='old']">
>       <xsl:copy>
>         <xsl:attribute name="mode">old</xsl:attribute>
>       </xsl:copy>
>     </xsl:template>
> 
>     <xsl:template match="*[x:mode()='new']">
>       <xsl:copy>
>         <xsl:attribute name="mode">new</xsl:attribute>
>       </xsl:copy>
>     </xsl:template>
> 
>     <xsl:template match="two" priority="1">
>       <two mode="{x:setMode('new')}"/>
>     </xsl:template>
> 
>   </xsl:transform>
> 
> then we obtain:
> 
>   <result>
>     <one mode="old"/>
>     <two mode="changed"/>
>     <three mode="new"/>
>   </result>
> 
> I did not believe it would work, but it works!
> I am not sure that this behavior is standards-driven,
> but it is very convenient.
> 
> -- 
> Alexander E. Gutman
> 
>  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]