0
次の兄弟がテーブルノートでエントリを持つ行に属性type = "bottom line"属性を追加したいと思います。しかし、問題は、結合された列がある場合は追加する必要がありますtype = "bottom line"を入力してください。この数は、エントリ数が等しい場合には停止する必要があります。XSLT 2での再帰
をするテーブルノート
に一番下の行を追加します。OUTPUT
<table> <row> <entry id="1"></entry> <entry id="2"></entry> <entry id="3" merged="1"></entry> <entry id="4"></entry> <entry id="5"></entry> </row> <row> <entry id="1"></entry> <entry id="2"></entry> <entry id="3" merged="1" type="bottom line"></entry> <entry id="4"></entry> <entry id="5"></entry> </row> <row> <entry id="6" merged="1" type="bottom line"></entry> <entry id="7"></entry> <entry id="8"></entry> <entry id="9"></entry> </row> <row> <entry id="10"></entry> <entry id="11"></entry> <entry id="12"></entry> <entry id="13"></entry> <entry id="14"></entry> </row> <row> <entry id="15" type="bottom line"></entry> <entry id="16" type="bottom line"></entry> <entry id="17" type="bottom line"></entry> </row> <row> <entry type="table notes">test</entry> <entry type="table notes">test</entry> <entry type="table notes">test</entry> </row> </table>
私がこれまで書いたXSLT期待
入力XML
<table> <row> <entry id="1"></entry> <entry id="2"></entry> <entry id="3" merged="1"></entry> <entry id="4"></entry> <entry id="5"></entry> </row> <row> <entry id="1"></entry> <entry id="2"></entry> <entry id="3" merged="1"></entry> <entry id="4"></entry> <entry id="5"></entry> </row> <row> <entry id="6" merged="1"></entry> <entry id="7"></entry> <entry id="8"></entry> <entry id="9"></entry> </row> <row> <entry id="10"></entry> <entry id="11"></entry> <entry id="12"></entry> <entry id="13"></entry> <entry id=“14"></entry> </row> <row> <entry id="15"></entry> <entry id="16"></entry> <entry id="17"></entry> </row> <row> <entry type="table notes">test</entry> <entry type="table notes">test</entry> <entry type="table notes">test</entry> </row> </table>
マージされたエントリー
<xsl:template match="row/entry[@merged]" mode="merged"> <xsl:copy> <xsl:apply-templates select="@*"/> <xsl:attribute name="type">bottom line</xsl:attribute> <xsl:apply-templates/> </xsl:copy> <xsl:apply-templates/> </xsl:template> <xsl:template match="row[last()-1]"> <xsl:if test="count(./entry) > count(./preceding-sibling::row/entry)"> <xsl:apply-templates mode="merged"/> </xsl:if> </xsl:template>
用 ボトムライン
この問題を解決するために私を助けてください。 おかげで..
ここでは、すべてのエントリ[@merged]に下線を追加しましたが、これを制限したいと思います。現在の行エントリ数が前の行エントリ数と等しい場合は、この属性を追加しないでください。@Lingamurthy 。 – user2490093
@ user2490093私はそれを理解しませんでした。もっと説明してください。あなたの期待された出力はあなたがコメントしたものですか? –