熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

用C#或JavaScript擴展XSLT

2013-11-13 10:29:11  來源: .NET編程 

  今天在umbraca上看到這樣一篇文章可以利用C#和JavaScript擴展XSLT說實在的以前不知道啊前幾天看到有位博主實現了一個split方法利用原有的xslt函數現在看來可以直接編程實現一個split函數了哦

  下面看下怎麼用C#和JavaScript擴展XSLT

  一使用C#

  先上代碼

  <?xml version= encoding=UTF?>

  <!DOCTYPE xsl:Stylesheet [  <!ENTITY nbsp &#xA;> ]>

  <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 &#xA;> ]>

  <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了哦

  那篇文章的鏈接


From:http://tw.wingwit.com/Article/program/net/201311/13790.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.