zoukankan      html  css  js  c++  java
  • 用C#或JavaScript扩展XSLT

    今天在umbraca上看到这样一篇文章,可以利用C#和JavaScript扩展XSLT,说实在的,以前不知道啊,前几天看到有位博主实现了一个split方法,利用原有的xslt函数,现在看来可以直接编程实现一个split函数了哦。

    下面看下怎么用C#和JavaScript扩展XSLT:

    一、使用C#

    先上代码:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE xsl:Stylesheet [  <!ENTITY nbsp "&#x00A0;"> ]>
    <xsl:stylesheet
        version="1.0"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform%22
        xmlns:msxml="urn:schemas-microsoft-com:xslt"
        xmlns:msxsl="urn:schemas-microsoft-com:xslt"
        xmlns:umbraco.library="urn:umbraco.library"
        xmlns:mycustomprefix="urn:mycustomprefix"
        exclude-result-prefixes="msxml umbraco.library mycustomprefix msxsl">
     

       <xsl:output method="xml" omit-xml-declaration="yes"/>

        <msxsl:script language="CSharp" implements-prefix="mycustomprefix">
          <![CDATA[
                public int? testNumber(int? num)
                {
                      if(num> 5 || num<= 0 || num== null)
                      {
                            return 5;
                      }
                      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:value-of select="$numberToTest"/>
        </xsl:template>
    </xsl:stylesheet>

    上面代码实现了一个testNumber函数,当输入数值大于5时返回5,小于5时返回数值。例子很简单,看一眼就明了,不过去对喜欢xslt的同仁带来很大的发挥空间哦。

    二、用JavaScript

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE xsl:Stylesheet [  <!ENTITY nbsp "&#x00A0;"> ]>
    <xsl:stylesheet
        version="1.0"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform%22
        xmlns:msxml="urn:schemas-microsoft-com:xslt"
        xmlns:msxsl="urn:schemas-microsoft-com:xslt"
        xmlns:umbraco.library="urn:umbraco.library"
        xmlns:mycustomprefix="urn:mycustomprefix"
        exclude-result-prefixes="msxml umbraco.library mycustomprefix msxsl">
     

       <xsl:output method="xml" omit-xml-declaration="yes"/>

        <msxsl:script language="JavaScript" implements-prefix="mycustomprefix">
          <![CDATA[ 
                function testNumber(num)
                {
                      if(num> 5 || num<= 0 || num== null)
                      {
                            return 5;
                      }
                      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:value-of select="$numberToTest"/>
        </xsl:template>
    </xsl:stylesheet>

    和使用C#一样,不多说了

    现在就可以实现那个split函数了,是吧?不用那个substring-beforesubstring-after了哦。

    那篇文章的链接:http://www.cnblogs.com/jaxu/archive/2009/11/16/1603756.html

  • 相关阅读:
    LeetCode第[84]题(Java):Largest Rectangle in Histogram(最大的矩形柱状图)
    LeetCode第[79]题(Java):Word Search(矩阵单词搜索)
    LeetCode第[78]题(Java):Subsets(求子集)扩展——第[90]题:Subsets 2
    关于SpringMVC中两种映射器不能共存的解决
    LeetCode第[73]题(Java):Set Matrix Zeroes(矩阵置0)
    php分页的实现
    PHP编码规范
    PHP常用函数
    PHP配置文件详解php.ini
    面向对象编程——parent—this
  • 原文地址:https://www.cnblogs.com/hongyin163/p/1605359.html
Copyright © 2011-2022 走看看