This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: A very interesting feature of MSXML
- To: <xsl-list at lists dot mulberrytech dot com>
- Subject: RE: [xsl] A very interesting feature of MSXML
- From: "Oleg Tkachenko" <olegt at multiconn dot com>
- Date: Sat, 11 Aug 2001 18:37:51 +0200
- Reply-To: xsl-list at lists dot mulberrytech dot com
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