2014-01-23 4 views
0

Можете ли вы помочь мне лучше понять эту часть кода:XSLT - Вызов шаблон с параметрами

Когда «template1» называется, какие параметры посылаются и какие значения? Я понимаю, что параметр «xValue» отправляется в шаблон, но я не понимаю <xsl:param name="xValue" select="0"/>. Являются ли два условия после вызова шаблона для определения значения отправляемого параметра?

<xsl:call-template name="template1"> 
    <xsl:with-param name="xValue"> 
     <xsl:choose> 
      <xsl:when test="string-length($var1)=1 "> 
       ... 
      </xsl:when> 
      <xsl:otherwise> 
       ... 
      </xsl:otherwise> 
     </xsl:choose> 
    </xsl:with-param> 
</xsl:call-template> 


<xsl:template name="template1"> 
    <xsl:param name="xValue" select="0"/> 
    <xsl:param name="yValue" select="0"/> 
    <xsl:variable name="newValue"> 
     <xsl:variable name="char" select="substring($xValue,1,1)"/> 
     <xsl:choose> 
     <xsl:when test="matches(upper-case($char),'[A-F]')"> 
      ... 
     </xsl:when> 
     <xsl:otherwise> 
      ... 
     </xsl:otherwise> 
     </xsl:choose> 
    </xsl:variable> 
    <xsl:choose> 
     <xsl:when test="not(string-length($xValue) = 1)"> 
      ... 
     </xsl:when> 
     <xsl:otherwise> 
      ... 
     </xsl:otherwise> 
    </xsl:choose> 
    </xsl:template> 

ответ

1

Я не понимаю <xsl:param name="xValue" select="0"/>.

Это значение «0» является значением по умолчанию для параметра xValue. Если вы вызываете шаблон с другим значением, указанным явно (как и в вашем примере), значение по умолчанию переопределяется.

Являются ли два условия после вызова шаблона для определения значения параметра для отправки? ?

Да. Точнее, есть один выберите оператор, который определяет значение, которое нужно отправить; он имеет один тест и два значения на выбор, согласно результатам теста.

1

<xsl:param name="xValue" select="0"/> является определение параметра с именем xValue со значением по умолчанию 0.

Когда вы используете <xsl:with-param name="xValue"> в своем xsl:call-template, вы переопределяете это значение по умолчанию.

Смежные вопросы