比如有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。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=130529