1 つの xml ファイルを別の xml ファイルに変換するために xslt 2.0 を使用しています。XSLT 2.0 では、引数を 1 つ取る関数を作成しました。実際には、引数は<w:p>
要素のコレクションです。以下のXMLファイルには、要素間に1つの>要素が含まれているとします。したがって、各要素をブロックで処理した後、関数をチェックインしたいと思います。<xsl:for-each-group>
<w:p>
<w:table
<w:p>
following-sibling::w:table
<w:p>
<xsl:for-each-group>
XML ファイル
<w:document>
<w:p> para0</w:p>
<w:p> para1</w:p>
<w:table>table</w:table>
<w:p>para3</w:p>
</w:document>
XSLT スニペット:
<xsl:for-each-group select="$paragraphs" group-starting-with="w:p">
<xsl:apply-templates select="current-group()"> <!-- for processing <w:p>elements -->
</xsl:apply-templates>
<xsl:if test="following-sibling::w:table"> <!--check following-sibling of current <w:p> is <w:table> -->
<xsl:apply-templates select="following-sibling::w:table"> </xsl:apply-templates>
</xsl:if>
</xsl:for-each-group>
しかし、最初の要素が処理されたときに呼び出されるチェック.2番目の要素が処理されたときにのみ呼び出されます.したがって、現在の処理要素のfollowing-sibling::w:table
次の即時のみをチェックしたい...following-sibling
だから、この問題から抜け出すために私を導いてください...