같은 노드는 단일 카운터 요소 아래에 있어야합니다. 입력 : 우리는 카운터 변수를 증가시킬 필요가 각각의 팩 번호XSLT 1.0 노드의 논리 코드
<Move-Afile>
<Afile>
<Item>
<PACK050>
<PackNumber>1234</PackNumber>
</PACK050>
</Item>
<Item>
<PACK050>
<PackNumber>567</PackNumber>
</PACK050>
</Item>
<Item>
<PACK050>
<PackNumber>567</PackNumber>
</PACK050>
</Item>
<Item>
<PACK050>
<PackNumber>126</PackNumber>
</PACK050>
</Item>
<Item>
<PACK050>
<PackNumber>567</PackNumber>
</PACK050>
</Item>
</Afile>
</Move-Afile>
하지만 여기에 하나 개의 조건이 이의 제기를 무시해야 할 전류 같다 이전 경우처럼 존재 같은 (증가 할 필요가 없다) 아래 출력과 같은 하나의 카운터 아래에 동일한 노드가 있습니다.
XSLT 템플릿은 아래 구조와 같이 <for-each>
이어야합니다.
<xsl:template match="/">
<A>
<target>
<xsl:for-each select="/Move-Afile/Afile/Item/PACK050/PackNumber">
<xsl:variable name="count">
<!-- get the count here-->
</xsl:variable>
<counter>$count</counter>
<PNumber><xsl:value-of select="."/></PNumber>
</xsl:for-each>
</target>
</A>
</xsl:template>
출력 :
<A>
<target>
<Item>
<PACK050>
<counter>1</counter><!-- if previous <PackNumber> is not equal to current <PackNumber> increment the count-->
<PNumber>1234</PNumber>
</PACK050>
</Item>
<Item
<PACK050>
<counter>2</counter><!-- if previous <PackNumber> is not equal to current <PackNumber> increment the count-->
<PNumber>567</PNumber>
</PACK050>
</Item>
<Item><!-- if previous <PackNumber> is equal to current <PackNumber> ignore the counter -->
<PACK050>
<PNumber>567</PNumber>
</PACK050>
</Item>
<Item><!-- if previous <PackNumber> is equal to current <PackNumber> ignore the counter -->
<PACK050>
<PNumber>567</PNumber>
</PACK050>
</Item>
<Item>
<PACK050>
<counter>3</counter><!-- if previous <PackNumber> is not equal to current <PackNumber> increment the count-->
<PNumber>126</PNumber>
</PACK050>
</Item>
</target>
</A>
+1 나는 내 대답에 조금 엉성했다. 네가 더 완벽 해. – ABach