[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: [xsl] A very interesting feature of MSXML


Subject: RE: [xsl] A very interesting feature of MSXML
From: "Hewko, Doug" <Doug.Hewko@xxxxxxxxxxxxxxx>
Date: Mon, 13 Aug 2001 07:37:31 -0400

In Cocoon2, I get "<result xmlns:x="urn:x"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"></result>"

-----Original Message-----
From: Alexander Gutman [mailto:gutman@xxxxxxxxxxxxxxx]
Sent: August 11, 2001 8:58 AM
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