今天在umbraca上看到这样一篇文章可以利用C#和JavaScript扩展XSLT说实在的以前不知道啊前几天看到有位博主实现了一个split方法利用原有的xslt函数现在看来可以直接编程实现一个split函数了哦
下面看下怎么用C#和JavaScript扩展XSLT
一使用C#
先上代码
<?xml version= encoding=UTF?>
<!DOCTYPE xsl:Stylesheet [ <!ENTITY nbsp 
> ]>
<xsl:stylesheet
version=
xmlns:xsl=%
xmlns:msxml=urn:schemasmicrosoftcom:xslt
xmlns:msxsl=urn:schemasmicrosoftcom:xslt
xmlns:umbracolibrary=urn:umbracolibrary
xmlns:mycustomprefix=urn:mycustomprefix
excluderesultprefixes=msxml umbracolibrary mycustomprefix msxsl>
<xsl:output method=xml omitxmldeclaration=yes/>
<msxsl:script language=CSharp implementsprefix=mycustomprefix>
<![CDATA[
public int? testNumber(int? num)
{
if(num> || num<= || num== null)
{
return ;
}
else
{
return num;
}
}
]]>
</msxsl:script>
<xsl:param name=currentPage/>
<xsl:variable name=numberToTest select=mycustomprefix:testNumber(number(/macro/numberToTest))/>
<xsl:template match=/>
<! start writing XSLT >
<xsl:valueof select=$numberToTest/>
</xsl:template>
</xsl:stylesheet>
上面代码实现了一个testNumber函数当输入数值大于时返回小于时返回数值例子很简单看一眼就明了不过去对喜欢xslt的同仁带来很大的发挥空间哦
二用JavaScript
<?xml version= encoding=UTF?>
<!DOCTYPE xsl:Stylesheet [ <!ENTITY nbsp 
> ]>
<xsl:stylesheet
version=
xmlns:xsl=%
xmlns:msxml=urn:schemasmicrosoftcom:xslt
xmlns:msxsl=urn:schemasmicrosoftcom:xslt
xmlns:umbracolibrary=urn:umbracolibrary
xmlns:mycustomprefix=urn:mycustomprefix
excluderesultprefixes=msxml umbracolibrary mycustomprefix msxsl>
<xsl:output method=xml omitxmldeclaration=yes/>
<msxsl:script language=JavaScript implementsprefix=mycustomprefix>
<![CDATA[
function testNumber(num)
{
if(num> || num<= || num== null)
{
return ;
}
else
{
return num;
}
}
]]>
</msxsl:script>
<xsl:param name=currentPage/>
<xsl:variable name=numberToTest select=mycustomprefix:testNumber(number(/macro/numberToTest))/>
<xsl:template match=/>
<! start writing XSLT >
<xsl:valueof select=$numberToTest/>
</xsl:template>
</xsl:stylesheet>
和使用C#一样不多说了
现在就可以实现那个split函数了是吧?不用那个substringbefore和substringafter了哦
那篇文章的链接