커뮤니티에서 엄청난 제안을 한 후 처음으로 여기에 게시하십시오.중첩 된 각 그룹 통화의 증분 자
XSLT 2.0에는 어깨, 무릎, 발가락이 모두 같은 세 개의 필드가 있습니다. 나는 어깨와 무릎의 고유 한 조합에 기초하여 발가락의 합계를 출력해야하므로 두 개의 중첩 된 for-each-groups를 만들었습니다. 각 출력에서 1에서부터 어깨와 무릎의 독특한 조합 수로 증분기를 출력해야합니다.
이 인크 리 멘터는 내가 문제가있는 곳입니다. 가장 가까운 것은 position()을 호출하는 것입니다. 그러나 가장 안쪽 그룹에서 호출하면 각 고유 어깨에서 카운터가 재설정됩니다. 가장 바깥 쪽 그룹에서 호출하면 고유 한 어깨의 모든 무릎이 동일한 값을 얻습니다. 그런 다음 각 고유 한 어깨에서 재설정됩니다. 그룹 외부에서 완전히 호출하면 과거 1이되지 않습니다. 또한 xsl : number, keys 등을 사용하지 않으려 고 시도했습니다. 이 경우 올바른 행 수가 여전히 인쇄되고 있지만 증분 값은 그룹화되지 않은 개별 값을보고 있습니다.
템플릿간에 "터널링"값에 대한 제안을 읽었지 만 템플릿을 올바르게 호출하고 있다고 생각하지 않기 때문에 작동하지 못했습니다. 부모가 아닌 어린이). 각 그룹 또는 다른 사람과 함께이 작업을하는 데 대한 의견이 있으십니까? 미리 감사드립니다.
샘플 XML :
<bodies>
<parts>
<shoulders>shoulders1</shoulders>
<knees>knees1</knees>
<toes>1</toes>
</parts>
<parts>
<shoulders>shoulders2</shoulders>
<knees>knees2</knees>
<toes>2</toes>
</parts>
<parts>
<shoulders>shoulders1</shoulders>
<knees>knees2</knees>
<toes>10</toes>
</parts>
<parts>
<shoulders>shoulders2</shoulders>
<knees>knees1</knees>
<toes>10</toes>
</parts>
<parts>
<shoulders>shoulders1</shoulders>
<knees>knees1</knees>
<toes>9</toes>
</parts>
<parts>
<shoulders>shoulders2</shoulders>
<knees>knees2</knees>
<toes>8</toes>
</parts>
</bodies>
샘플 XSLT : 결과
<xsl:stylesheet exclude-result-prefixes="xsl" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" xmlns:this="urn:this-stylesheet" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsl:template match="/">
<xsl:for-each-group select="bodies/parts" group-by="shoulders">
<xsl:for-each-group select="current-group()" group-by="knees">
<xsl:value-of select="shoulders"/>
<xsl:text>, </xsl:text>
<xsl:value-of select="knees"/>
<xsl:text>, </xsl:text>
<xsl:value-of select="sum(current-group()/toes)"/>
<xsl:text>, </xsl:text>
<xsl:value-of select="position()"/>
<xsl:text>. </xsl:text>
</xsl:for-each-group>
</xsl:for-each-group>
</xsl:template>
</xsl:stylesheet>
출력 :
shoulders1, knees1, 10, 1 shoulders1, knees2, 10, 2 shoulders2, knees2 , 10, 1. 어깨 2, 무릎 1, 10, 2.
원하는 출력 :
shoulders1, knees1, 10, 1 shoulders1, knees2, 10, 2 shoulders2, knees2, 10, 3 shoulders2, knees1, 10, 4