同じ値を持つ直後の兄弟を一緒に合成しようとしています。しかし、IMMEDIATE 兄弟だけを選択するのに苦労しています。
入力:
<ROWS>
<ROW>
<MONTH>1</MONTH>
<START_DATE>15/04/2013</START_DATE>
<RATE_AMOUNT>10</RATE_AMOUNT>
<DISCOUNT>-2</DISCOUNT>
</ROW>
<ROW>
<MONTH>2</MONTH>
<START_DATE>15/05/2013</START_DATE>
<RATE_AMOUNT>10</RATE_AMOUNT>
<DISCOUNT>-2</DISCOUNT>
</ROW>
<ROW>
<MONTH>3</MONTH>
<START_DATE>15/06/2013</START_DATE>
<RATE_AMOUNT>10</RATE_AMOUNT>
<DISCOUNT>-5</DISCOUNT>
</ROW>
<ROW>
<MONTH>4</MONTH>
<START_DATE>15/07/2013</START_DATE>
<RATE_AMOUNT>10</RATE_AMOUNT>
<DISCOUNT>-2</DISCOUNT>
</ROW>
</ROWS>
期待される出力:
<RateList>
<Rate>
<NoOfMonths>2</NoOfMonths>
<StartDate>15/04/2013</StartDate>
<RateAmount>10</RateAmount>
<Discount>-2</Discount>
</Rate>
<Rate>
<NoOfMonths>1</NoOfMonths>
<StartDate>15/06/2013</StartDate>
<RateAmount>10</RateAmount>
<Discount>-5</Discount>
</Rate>
<Rate>
<NoOfMonths>1</NoOfMonths>
<StartDate>15/07/2013</StartDate>
<RateAmount>10</RateAmount>
<Discount>-2</Discount>
</Rate>
</RateList>
これが私の XSL です。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<RateList>
<xsl:apply-templates/>
</RateList>
</xsl:template>
<xsl:template match="ROW">
<xsl:variable name="noOfMonths" select=".|following-sibling::*[RATE_AMOUNT=current()/RATE_AMOUNT][DISCOUNT=current()/DISCOUNT]"/>
<xsl:if test="not(preceding-sibling::*[RATE_AMOUNT=current()/RATE_AMOUNT][DISCOUNT=current()/DISCOUNT])">
<Rate>
<NoOfMonths>
<xsl:value-of select="count($noOfMonths)"/>
</NoOfMonths>
<StartDate>
<xsl:value-of select="START_DATE"/>
</StartDate>
<RateAmount>
<xsl:value-of select="RATE_AMOUNT"/>
</RateAmount>
<Discount>
<xsl:value-of select="DISCOUNT"/>
</Discount>
</Rate>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
そして、これは私が得ている出力です:
<RateList>
<Rate>
<NoOfMonths>3</NoOfMonths>
<StartDate>15/04/2013</StartDate>
<RateAmount>10</RateAmount>
<Discount>-2</Discount>
</Rate>
<Rate>
<NoOfMonths>1</NoOfMonths>
<StartDate>15/06/2013</StartDate>
<RateAmount>10</RateAmount>
<Discount>-5</Discount>
</Rate>
</RateList>
誰か助けてくれませんか?直系の兄弟のみを選択/カウントするにはどうすればよいですか?
ありがとうございました!