2013-10-09 2 views
0

막혔습니다. 내가하고 싶은 일은 셀의 속성에 숫자를 할당하는 것입니다. 템플릿을 호출하고 호출 한 템플릿에 param을 전달하여이 작업을 수행합니다.Param 및 XSLT 템플릿 적용

<xsl:call-template name="RowIdInitializer" > 
    <xsl:with-param name="i">1</xsl:with-param>   
    </xsl:call-template> 
I 그 다음 PARAM를 사용하여 전달할 정보 적용 템플릿에 그때 자체 (순환) 내에서 템플릿을 호출

<xsl:template name="RowIdInitializer"> 
<xsl:param name="i" /> 
    <xsl:apply-templates select="Data" mode="table" > 
    <xsl:with-param name="iThis" select="$i"/>    
    </xsl:apply-templates> 

<xsl:if test="@Exsist"> 
    <xsl:call-template name="RowIdInitializer"> 
    <xsl:with-param name="i" select="$i + 1">   
    </xsl:with-param>   
    </xsl:call-template> 
</xsl:if> 
</xsl:template> 

유의 사항 PARAM로, 그리고 증분 값을 전달

내가 스스로를 호출 할 때 param을 템플릿에 추가합니다. 각 데이터 모드에 속성이있는 for 루프를 모방하려고합니다. Exist (RowIdInitializer에 대한 첫 번째 호출이 행 노드에서 Exist 특성을 찾을 수있는 한 수준에서 호출되기 때문에 나중에 문제가 발생할 수 있습니다.

<xsl:template match="Row"> 
    ..... some other stuff  
    <xsl:call-template name="RowIdInitializer" > 
    <xsl:with-param name="i">1</xsl:with-param>   
    </xsl:call-template> 
</xsl:template> 

그러나 이것은 문제가 아닙니다. 적용 템플릿으로 전달 된 매개 변수는 속성 데이터 - 스 와이프 페이지에 할당됩니다.

<xsl:template select="Data" mode="table" > 
<xsl:param name="iThis" /> 
<td class="dataTableCell" onblur="cellEvent(event)" data-SwipePage ="$iThis">  
..otherstuff... 
</td> 

문제가 자리 잡고있는 곳입니다. 값이 전달되지 않고 문자열 리터럴이 값으로 할당됩니다. 브라우저에서 개발 콘솔의 HTML을 검사 할 때 행의 하위 인 각 데이터 노드에 대해 생성 된 모든 td 요소에 대해 data-SwipePage ="$iThis"이라는 속성이 표시됩니다. 나는이

<xsl:apply-templates select="Data" mode="table" > 
    <xsl:with-param name="iThis" select="1"/>    
    </xsl:apply-templates> 

<xsl:apply-templates select="Data" mode="table" > 
    <xsl:with-param name="iThis">1 </xsl:with-pam>    
    </xsl:apply-templates> 

나는 또한 사용하여 시도 파괴와-PARAM이

<xsl:with-param name="iThis"> 
     <xsl:value-of select="$i"/> 
    </xsl:with-param> 

같은 모든 <xsl:with-param과 같은 단지 숫자 하나를 전달 시도 리터럴 문자열 값이 계속 사용되고 있습니다. 완벽하게 코드를 평가하지 않고

답변

1

, 당신은 귀하의 변수, $ iThis을 포위 할 필요가있는 위의 명백한 우우 우우,이 {와} 같은 :

<xsl:template select="Data" mode="table" > 
<xsl:param name="iThis" /> 
<td class="dataTableCell" onblur="cellEvent(event)" data-SwipePage ="{$iThis}">  
..otherstuff... 
</td>