Subject: RE: [xsl] A very interesting feature of MSXML From: "Oleg Tkachenko" <olegt@xxxxxxxxxxxxx> Date: Sat, 11 Aug 2001 18:37:51 +0200 |
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@xxxxxxxxxxxxxxxxxxxxxx > [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]On Behalf Of > Alexander Gutman > Sent: Saturday, August 11, 2001 2:58 PM > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > 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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] A very interesting feature of, Alexander Gutman | Thread | RE: [xsl] A very interesting featur, Hewko, Doug |
RE: [xsl] Conditional initialisatio, Oleg Tkachenko | Date | [xsl] call-template not finding xsl, Phillip Rhodes |
Month |