Как мне объявить параметр / переменную внутри шаблона, используя fronend-xslt - PullRequest
2 голосов
/ 19 августа 2010

Я называю такой шаблон:

<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 и соответственно устанавливать переменную, как мне это сделать? 1009 *

Ответы [ 2 ]

3 голосов
/ 19 августа 2010

Вы не можете обновить значение параметра или переменной после того, как оно было изначально установлено.Однако вы можете создать новую переменную и установить ее в соответствии с тем, был ли установлен исходный параметр $ 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>
0 голосов
/ 19 августа 2010

Если вы хотите определить значение по умолчанию для параметра, вам просто нужно добавить его в объявление параметра.Как пример:

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

Или:

<xsl:template name="trip_form"> 
    <xsl:param name="type" 
               select="substring('passengerdriver',
                                 1 + 9 * (/root/meta/url_params/has_car = 1),
                                 9 - 3 * (/root/meta/url_params/has_car = 1)"> 
    </xsl:param> 
    <xsl:param name="size"/> 
    <xsl:param name="header"/> 
</xsl:template> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...