몇 가지 카운트 로직을 사용하여 for-each에서 루프 로직으로 전환하는 방법을 모르겠습니다.XSLT 1.0 루핑
다음은 XML의 작은 샘플입니다. 시퀀스 번호와 할인 번호는 크게 다를 수 있습니다. xml이 올바른 순서로 정렬되도록 사전 정렬했습니다.
<ns2:_x002F_POSDW_x002F_E1BPLINEITEMDISCOUNT002>
<ns2:RETAILSEQUENCENUMBER>1</ns2:RETAILSEQUENCENUMBER>
<ns2:DISCOUNTSEQUENCENUMBER>1</ns2:DISCOUNTSEQUENCENUMBER>
<ns2:DISCOUNTTYPECODE>ZD01</ns2:DISCOUNTTYPECODE>
</ns2:_x002F_POSDW_x002F_E1BPLINEITEMDISCOUNT002>
<ns2:_x002F_POSDW_x002F_E1BPLINEITEMDISCOUNT002>
<ns2:DATAHEADERCOLUMN_SEGNAM>/POSDW/E1BPLINEITEMDISCOUNT002</ns2:DATAHEADERCOLUMN_SEGNAM>
<ns2:RETAILSEQUENCENUMBER>1</ns2:RETAILSEQUENCENUMBER>
<ns2:DISCOUNTSEQUENCENUMBER>2</ns2:DISCOUNTSEQUENCENUMBER>
<ns2:DISCOUNTTYPECODE>Z407</ns2:DISCOUNTTYPECODE>
</ns2:_x002F_POSDW_x002F_E1BPLINEITEMDISCOUNT002>
<ns2:_x002F_POSDW_x002F_E1BPLINEITEMDISCOUNT002>
<ns2:DATAHEADERCOLUMN_SEGNAM>/POSDW/E1BPLINEITEMDISCOUNT002</ns2:DATAHEADERCOLUMN_SEGNAM>
<ns2:RETAILSEQUENCENUMBER>1</ns2:RETAILSEQUENCENUMBER>
<ns2:DISCOUNTSEQUENCENUMBER>3</ns2:DISCOUNTSEQUENCENUMBER>
<ns2:DISCOUNTTYPECODE>Z407</ns2:DISCOUNTTYPECODE>
</ns2:_x002F_POSDW_x002F_E1BPLINEITEMDISCOUNT002>
<ns2:_x002F_POSDW_x002F_E1BPLINEITEMDISCOUNT002>
<ns2:RETAILSEQUENCENUMBER>2</ns2:RETAILSEQUENCENUMBER>
<ns2:DISCOUNTSEQUENCENUMBER>1</ns2:DISCOUNTSEQUENCENUMBER>
<ns2:DISCOUNTTYPECODE>ZD01</ns2:DISCOUNTTYPECODE>
</ns2:_x002F_POSDW_x002F_E1BPLINEITEMDISCOUNT002>
<ns2:_x002F_POSDW_x002F_E1BPLINEITEMDISCOUNT002>
<ns2:DATAHEADERCOLUMN_SEGNAM>/POSDW/E1BPLINEITEMDISCOUNT002</ns2:DATAHEADERCOLUMN_SEGNAM>
<ns2:RETAILSEQUENCENUMBER>2</ns2:RETAILSEQUENCENUMBER>
<ns2:DISCOUNTSEQUENCENUMBER>2</ns2:DISCOUNTSEQUENCENUMBER>
<ns2:DISCOUNTTYPECODE>Z407</ns2:DISCOUNTTYPECODE>
</ns2:_x002F_POSDW_x002F_E1BPLINEITEMDISCOUNT002>
가 여기에 XML과 장소는 NS2하지만 내 요구 사항은 루프입니다
<xsl:for-each select="ns0:idocData/ns2:_x002F_POSDW_x002F_E1POSTR_CREATEMULTIP001GRP">
<xsl:for-each select="ns2:_x002F_POSDW_x002F_E1BPLINEITEMDISCOUNT002">
<ns2:_x002F_POSDW_x002F_E1BPLINEITEMDISCOUNT002>
<ns2:DATAHEADERCOLUMN_SEGNAM><xsl:value-of select="ns2:DATAHEADERCOLUMN_SEGNAM"/></ns2:DATAHEADERCOLUMN_SEGNAM>
<ns2:RETAILSEQUENCENUMBER><xsl:value-of select="ns2:RETAILSEQUENCENUMBER"/></ns2:RETAILSEQUENCENUMBER>
<ns2:DISCOUNTSEQUENCENUMBER><xsl:value-of select="ns2:DISCOUNTSEQUENCENUMBER"/></ns2:DISCOUNTSEQUENCENUMBER>
<ns2:DISCOUNTTYPECODE><xsl:value-of select="ns2:DISCOUNTTYPECODE"/></ns2:DISCOUNTTYPECODE>
</ns2:_x002F_POSDW_x002F_E1BPLINEITEMDISCOUNT002>
</xsl:for-each>
</xsl:for-each>
내 XSLT입니다 : DISCOUNTTYPECODE는 것으로 밝혀 ZD01 ZD11 확인하십시오. 동일한 ns2 : RETAILSEQUENCENUMBER 내에 다른 ZD01이있는 경우 다음 DISCOUNTTYPECODE = ZD12를 작성한 다음 ZD13 등을 작성하십시오 (ZD01 레코드에만 해당).
XML이 다음 RETAILSEQUENCENUMBER로 떨어지면 논리는 ZD01이 ZD11이되도록 다시 시작해야합니다.
이것은 XSLT 1.0에서 까다로운 문제입니다. (변수를 증가시킬 수있는 루프 유형이 없습니다.) http://www.dpawson.co.uk/xsl/sect2/N4486.html#d5509e427을 읽고이를 통해 도움이되는지 확인하십시오. – LarsH