Subject: [xsl] A very interesting feature of MSXML From: "Alexander Gutman" <gutman@xxxxxxxxxxxxxxx> Date: Sat, 11 Aug 2001 19:58:02 +0700 |
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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Conditional initialisatio, Oleg Tkachenko | Thread | RE: [xsl] A very interesting featur, Oleg Tkachenko |
[xsl] Conditional initialisation of, Michael Beddow | Date | RE: [xsl] Retrieving Full XPATH exp, Tom Landon |
Month |