如何使用fronend xslt在模板中声明参数/变量

如何使用fronend xslt在模板中声明参数/变量,xslt,Xslt,我将这样的模板称为: <xsl:call-template name="trip_form"> <xsl:with-param name="header" select="'Spara din resa'" /> <xsl:with-param name="size" select="'savetrip'" /> </xsl:call-template> <xsl:template name="trip_form">

我将这样的模板称为:

<xsl:call-template name="trip_form">
   <xsl:with-param name="header" select="'Spara din resa'" />
   <xsl:with-param name="size" select="'savetrip'" />
  </xsl:call-template>
<xsl:template name="trip_form">
  <xsl:param name="type" />
  <xsl:param name="size" />
  <xsl:param name="header" />
  <xsl:if test="type = ''">
   <xsl:if test="/root/meta/url_params/has_car = 1">
    <xsl:with-param name="'type'" select="'driver'" />
   </xsl:if>
   <xsl:if test="/root/meta/url_params/has_car = 0">
    <xsl:variable name="'type'" select="'passenger'" />
   </xsl:if>
  </xsl:if>

模板如下所示:

<xsl:call-template name="trip_form">
   <xsl:with-param name="header" select="'Spara din resa'" />
   <xsl:with-param name="size" select="'savetrip'" />
  </xsl:call-template>
<xsl:template name="trip_form">
  <xsl:param name="type" />
  <xsl:param name="size" />
  <xsl:param name="header" />
  <xsl:if test="type = ''">
   <xsl:if test="/root/meta/url_params/has_car = 1">
    <xsl:with-param name="'type'" select="'driver'" />
   </xsl:if>
   <xsl:if test="/root/meta/url_params/has_car = 0">
    <xsl:variable name="'type'" select="'passenger'" />
   </xsl:if>
  </xsl:if>

等等


当我在调用模板时指定$type变量时,我想使用该值,但如果我不想使用该值,我想检查Url_params/has_car节点并相应地设置该变量,我该怎么做?

初始设置参数或变量后,您不能更新其值。但是,您可以做的是创建一个新变量,并根据是否设置了原始参数$type来设置该变量

试试这样的。这将创建一个新变量$newtype,然后可以在模板中使用它。如果设置了$type,那么$newtype将等于$type,否则它将查看Url_params/has_car元素

<xsl:template name="trip_form">
   <xsl:param name="type"/>
   <xsl:param name="size"/>
   <xsl:param name="header"/>
   <xsl:variable name="newtype">
      <xsl:choose>
         <!-- Check if type is defined -->
         <xsl:when test="$type = ''">
            <!-- Determine if a driver or passenger -->
            <xsl:choose>
               <xsl:when test="/root/meta/url_params/has_car = 1">
                  <xsl:value-of select="'driver'"/>
               </xsl:when>
               <xsl:otherwise>
                  <xsl:value-of select="'passenger'"/>
               </xsl:otherwise>
            </xsl:choose>
         </xsl:when>
         <xsl:otherwise>
            <!-- Use value of parameter -->
            <xsl:value-of select="$type"/>
         </xsl:otherwise>
      </xsl:choose>
   </xsl:variable>

   <!-- Use the new variable $newtype here -->
   <xsl:value-of select="$newtype"/>
</xsl:template>

如果要为参数定义默认值,只需将其添加到参数声明中即可。例如:

<xsl:template name="trip_form"> 
    <xsl:param name="type"> 
        <xsl:choose> 
           <xsl:when test="/root/meta/url_params/has_car = 1">driver</xsl:when> 
           <xsl:otherwise>passenger</xsl:otherwise> 
        </xsl:choose> 
    </xsl:param> 
    <xsl:param name="size"/> 
    <xsl:param name="header"/> 
</xsl:template> 

司机
乘客
或:


这是壁炉,我也喜欢when/否则,我一直在寻找这样的东西!