zoukankan      html  css  js  c++  java
  • call-template和apply-templates

    对xml模板 来说,name属性是很关键的 call-template /apply-template 的name必须要和模板的name相对应。模板相当于一个函数,可以暂时这么看。而name相当于函数名称.

    简单说apply是应用,call是调用。    
    用apply时,引擎自动搜索与当前select指定xpath的匹配节点相匹配的template(该template必须有属性match)并使用该template进行处理,此时需要指定的是select的path。 
    用call时就跟其它语言调用函数一样,必须指定name属性,相应的,该template必须有name属性,当然,也可以在这时with-param(当然相应的模板中有对应的param才行,不过这个不强制要求)。

    1)从名字区分:call-template,一次只对一个node名字有效;而apply-templates,注意是是复数,所以这个是对所有符合条件的node有效。
    2)从手法上:call-template,手段是通过name;apply-templates手段是通过match。

    3)使用apply调用的模板,   其中的上下文节点是与之匹配的节点。使用call调用的模板,   它没有上下文节点,参数通过param进行传递

    call-template的用法

    比如用到枚举型

    定义

    <xsl:call-template name="pollutionSource">
                      <xsl:with-param  name="source" select="ns1:PollutionSource"></xsl:with-param>
    </xsl:call-template>

    实现

    <xsl:template name="pollutionSource">
        <xsl:param name="source" />   
        <xsl:if test="$source=0">
          <xsl:text></xsl:text>
        </xsl:if>
        <xsl:if test="$source=1">
          <xsl:text></xsl:text>
        </xsl:if>
        <xsl:if test="$source=2">
          <xsl:text>生物</xsl:text>
        </xsl:if>
        <xsl:if test="$source=3">
          <xsl:text></xsl:text>
        </xsl:if>
      </xsl:template>
  • 相关阅读:
    1.12学习总结:分区
    1.11学习总结:持久化
    1.10学习总结:RDD的行动操作
    1.9学习总结:RDD的转换操作
    1.8学习总结:RDD创建
    1.7学习总结:pyspark实例WordCount
    1.6学习总结:Spark集群的高可用配置
    1.5学习总结:安装Spark
    毕业设计第四周第七天完成情况汇总
    毕业设计第四周第五天完成情况汇总
  • 原文地址:https://www.cnblogs.com/tech-bird/p/3618075.html
Copyright © 2011-2022 走看看