2011-12-28 4 views
3

저는 일반적으로 jquery 템플릿을이 종류로 사용하지만 업데이트해야하는 XSLT 파일을 상속 받았지만이를 얻을 수있는 방법을 찾을 수 없습니다. 특정 템플릿 호출에 대한 총 요소 수 (반복)입니다.각 루프에 대한 XSLT의 요소 (반복) 총 수를 가져옵니다.

jquery 템플릿을 사용하면 다음과 같이 처리 할 수 ​​있습니다. 반복되는 애셋의 총 개수가 줄어 듭니다.

<span id="${spnID}"> 
    ${GroupName} (${Assets.length}) 
</span> 

루프에 다섯 개의 요소가 있으면 "Product x (5)"를 반환합니다.

간단하지만 XSLT로 동일한 작업을 수행하는 방법을 찾지 못하는 것 같습니다. 이런 식으로 뭔가, 나는 생각 : 당신이 어떤 $set 전체를 반복하는 경우

<span id="{$SpnId}"> 
    <xsl:value-of select="$GroupName"/> (<xsl:value-of select="$total-number-of-elements"/>) 
</span> 
+0

무엇이 문제입니까? 입력 XML을 제공 할 수 있습니까? –

+0

아마도 XPath [카운트 함수] (http://msdn.microsoft.com/en-us/library/ms256103.aspx)가 무엇을 찾고 있습니까? – Scott

답변

8

후 출력 count($set) 항목의 총수가 반복 될 얻을 수 있습니다. 이 입력에 대해

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="text" /> 
    <xsl:template match="/"> 
     <xsl:variable name="set" select="/table/row" /> 
     <xsl:variable name="count" select="count($set)" /> 
     <xsl:for-each select="$set"> 
      <xsl:value-of select="concat(position(), ' of ', $count, '&#xa;')" /> 
     </xsl:for-each> 
    </xsl:template> 
</xsl:stylesheet> 

: 예를 들어,이 스타일 시트를 시도

<table> 
    <row id="1" /> 
    <row id="2" /> 
    <row id="3" /> 
    <row id="4" /> 
    <row id="5" /> 
    <row id="6" /> 
</table> 

출력 : 우리가 /table/row가 선택한 노드를 통해 반복하고 count(/table/row)를 출력하고

1 of 6 
2 of 6 
3 of 6 
4 of 6 
5 of 6 
6 of 6 

주 반복 횟수를 구하십시오.

+0

그게 내가 찾고 있던 바로 그거야. 감사! – Aaron

1

웨인의 대답은 작동해야하며 충족되어야하는 다른 요구 사항이있는 특정 상황에서 필요할 수 있습니다. 그러나 간단한 상황이 있다면 Last() 함수를 사용하여보다 효율적으로 수행 할 수 있습니다. for-each가 처리 되 자마자 Last()는 집합의 상한 또는 개수를 포함합니다. 같은 XML에 대한

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="text" /> 
    <xsl:template match="/"> 
    <xsl:for-each select="/table/row"> 
     <xsl:value-of select="concat(position(), ' of ', last(), '&#xa;')" /> 
    </xsl:for-each> 
</xsl:template> 

실행, 출력은 웨인의 결과와 동일합니다.

1 of 6 
2 of 6 
3 of 6 
4 of 6 
5 of 6 
6 of 6 
관련 문제