xml – XSLT参数的使用; &

前端之家收集整理的这篇文章主要介绍了xml – XSLT参数的使用; &前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
请说明我可以使用最好的XSLT参数。
以< xsl:param> &安培; < XSL:与-PARAM>

示例LOC:

<xsl:call-template name="ABC">
    <xsl:with-param name="title" />
</xsl:call-template>

Please explain me how best XSLT param can be used. in terms of
<xsl:param> & <xsl:with-param>

< XSL:PARAM>可以在全局级别(作为xsl:stylesheet的子代)指定,或者如果它在模板中,则它必须是其子代,并且必须位于xsl:template的任何非xsl:param子元素之前。

这是允许模板或整个转换(在全局xsl:param的情况下)分别从模板的调用者/启动器或整个转换接收变化的数据的工具。

在模板/转换的调用者/启动器的一边,使用xsl:with-param指令传递参数。它可以是xsl:apply-templates或xsl:call-template的子代。

xsl:param或xsl:with-param的name属性是必需的。它标识参数。

xsl:with-param的select属性可以用于指定任何XPath表达式,其评估结果传递给被调用/应用的模板。

或者,该值可以在xsl:with-param的内容(正文)中指定。

xsl:with-param必须具有select属性或body。但不是两者。

一个xsl:param也可以有一个select属性或body。在这种情况下,这些指定参数的默认值,如果调用者没有指定此名称的参数,则使用该参数。

最后,这是一个完整的例子,说明大部分这些概念:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:param name="pTarget" select="'love'"/>
 <xsl:param name="pReplacement" select="'like'"/>

 <xsl:template match="/*">
  <xsl:call-template name="replace">
   <xsl:with-param name="pPattern" select="$pTarget"/>
   <xsl:with-param name="pRep" select="$pReplacement"/>
  </xsl:call-template>

  <xsl:text>&#xA;</xsl:text>

  <xsl:call-template name="replace"/>

  <xsl:text>&#xA;</xsl:text>

  <xsl:apply-templates select="text()">
   <xsl:with-param name="pPattern" select="$pTarget"/>
   <xsl:with-param name="pRep" select="'adore'"/>
  </xsl:apply-templates>
 </xsl:template>

 <xsl:template match="text()" name="replace">
   <xsl:param name="pText" select="."/>
   <xsl:param name="pPattern" select="'hate'"/>
   <xsl:param name="pRep" select="'disapprove'"/>

   <xsl:if test="string-length($pText) >0">
       <xsl:choose>
        <xsl:when test="not(contains($pText,$pPattern))">
          <xsl:value-of select="$pText"/>
        </xsl:when>
        <xsl:otherwise>
         <xsl:value-of select="substring-before($pText,$pPattern)"/>
         <xsl:value-of select="$pRep"/>

         <xsl:call-template name="replace">
           <xsl:with-param name="pPattern" select="$pPattern"/>
           <xsl:with-param name="pRep" select="$pRep"/>
           <xsl:with-param name="pText" select=
            "substring-after($pText,$pPattern)"/>
         </xsl:call-template>
        </xsl:otherwise>
       </xsl:choose>
   </xsl:if>
 </xsl:template>
</xsl:stylesheet>

当应用于此XML文档时…

<t>Sports stars we really love,love to hate,hate</t>

…结果是…

Sports stars we really like,like to hate,hate
Sports stars we really love,love to disapprove,disapprove
Sports stars we really adore,adore to hate,hate

说明:

>替换模板被调用两次。在两个调用中,省略了pText参数。其默认值由被调用的模板使用。>第一个调用提供模式和替换参数,所以“爱”被替换为“喜欢”。>请注意,全局参数$ pTarget和$ pReplacement的值将被传递。如果转换的启动器决定传递其他值(而不是此代码中使用的默认值),则这些值将被传递给替换模板,而不是缺省值“爱”和“喜欢”。>第二个调用根本不提供任何参数值,因此使用替换模板中的所有默认值 – 字符串“hate”由字符串“rejectrove”替代。>请注意,替换模板会自动递归调用,以使所有出现的模式被替换。>此外,递归调用的pText参数的值不是静态的,而是动态计算的。>第三次从外部启动替换模板是通过xsl:apply-templates。这里我们还显示一个模板可以同时具有匹配和名称属性,并且可以使用xsl:apply-templates和xsl:call-template来启动这样一个模板。

猜你在找的XML相关文章