0
の最後の発生は私のxmlファイルを考慮しなさい:カウンタ
<Record>
<AA bac="1" kjd="Same"/>
<BB dfd="02" dad="342"/>
<CC pod="11-A" dsd="11-B"/>
<CC pod="22-A" dsd="22-B"/>
<CC pod="33-A" dsd="33-B"/>
<CC pod="44-A" dsd="44-B"/>
<CC pod="55-A" dsd="55-B"/>
<CC pod="66-A" dsd="66-B"/>
<CC pod="77-A" dsd="77-B"/>
</Record>
私はCCのすべての3つの出現するためのカウンタである要素CC、下の別の属性(CNT)を追加する必要があります。それが4に達したら、私はそれを増やす必要があります。私はすでにその部分を行っていましたが、CCの@cntの最後の値を取得し、AAの属性の新しい(@ cnt_1)に配置する必要があります。
は、ここに私のXSLTです:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes" method="xml"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Record">
<xsl:copy>
<xsl:apply-templates select="* except CC"/>
<xsl:for-each-group select="CC" group-adjacent="(position() - 1) idiv 3">
<xsl:apply-templates select="current-group()">
<xsl:with-param name="group-pos" select="position()"/>
</xsl:apply-templates>
</xsl:for-each-group>
</xsl:copy>
</xsl:template>
<xsl:template match="CC">
<xsl:param name="group-pos"/>
<CC cnt="{$group-pos}" seq="{position()}">
<xsl:apply-templates select="@*"/>
</CC>
</xsl:template>
<xsl:template match="CC/@*[not(normalize-space())]"/>
<xsl:template match="BB/@*[not(normalize-space())]" />
<xsl:template match="AA/@*[not(normalize-space())]" />
予想される出力:
<Record>
<AA cnt_1="3" bac="1" kjd="Same"/>
<BB dfd="02" dad="342"/>
<CC cnt="1" seq="1" pod="11-A" dsd="11-B"/>
<CC cnt="1" seq="2" pod="22-A" dsd="22-B"/>
<CC cnt="1" seq="3" pod="33-A" dsd="33-B"/>
<CC cnt="2" seq="1" pod="44-A" dsd="44-B"/>
<CC cnt="2" seq="2" pod="55-A" dsd="55-B"/>
<CC cnt="2" seq="3" pod="66-A" dsd="66-B"/>
<CC cnt="3" seq="1" pod="77-A" dsd="77-B"/>
</Record>
ありがとう!およそ
はありがとうございました! –