比如有XML:
1<root>
2<item>abcdefabcdeabcdef</item>
3</root>
要求写XSL来转换该XML,输出中item的内容中所有的b都要变成B,普通XSL不能完成
嵌javascript的解决方法:
XSL如下:
1<xsl:stylesheet _="" _xmlns:msxsl="urn:schemas-microsoft-com:xslt" myns="urn:myNameSpace" version="1.0" xmlns:="" xmlns:xsl=" http://www.w3.org/1999/XSL/Transform ">
2** <msxsl:script implements-prefix=" myNS " language="JScript">
3<![CDATA[
4function trans(s)
5{
6var ary = s.split('b');
7return ary.join('B');
8}
9]]>
10</msxsl:script> **
11
12<xsl:template match="/">
13<xsl:apply-templates select="//root/item"></xsl:apply-templates>
14</xsl:template>
15<xsl:template match="root/item">
16<xsl:value-of select=" ** myNS :trans(string(.)) ** "></xsl:value-of>
17</xsl:template>
18</xsl:stylesheet>
**联想到了什么?
**
Script可以不是JScript, 而是C#:
__
1<msxsl:script implements-prefix="myNS" language=" c# ">
2<![CDATA[
3public string trans(string s)
4{
5string[] ary = s.Split('b');
6return string.Join('B', ary);
7}
8]]>
9</msxsl:script>
但只能是用 .net framework 的 System.Xml 来解析,
而不是客户端常用的 msxml。