By Ben


比如有XML:

<root>


     <item>abcdefabcdeabcdef</item>


</root>


 


要求写XSL来转换该XML,输出中item的内容中所有的b都要变成B,普通XSL不能完成


嵌javascript的解决方法:

XSL如下:


 


<?xml version="1.0" encoding="gb2312"?>

<xsl:stylesheet version="1.0" xmlns:xsl="​​http://www.w3.org/1999/XSL/Transform​​"


 xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:myNS="urn:myNameSpace">

<msxsl:script language="JScript" implements-prefix="myNS">
<![CDATA[
function trans(s)
{
 var ary = s.split('b');
 return ary.join('B');
}
]]>
</msxsl:script>


<xsl:template match="/">

 <xsl:apply-templates select="//root/item"/>

</xsl:template>


<xsl:template match="root/item">

 <xsl:value-of select="myNS:trans(string(.))"/>

</xsl:template>

</xsl:stylesheet>


联想到了什么?

Script可以不是JScript, 而是C#:


 


<msxsl:script language="c#" implements-prefix="myNS">

<![CDATA[

public string  trans(string s)

{

 string[] ary = s.Split('b');

 return string.Join('B', ary);

}

]]>

</msxsl:script>



但只能是用 .net framework 的 System.Xml 来解析,


而不是客户端常用的 msxml。