xslt 2.0を使用して、あるxml形式を別のxml形式に変換したい。次に、コンテキストノードの次の直後の:: node()要素を取得したい。たとえば、
これは私のxmlドキュメントです:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"
xmlns:v="urn:schemas-microsoft-com:vml">
<w:body>
<w:p>para1</w:p> <!-- assume this as context node -->
<w:tbl>table data 1</w:tbl>
<w:tbl>table data 2</w:tbl>
<w:p>para2</w:p>
<w:tbl>table data 3</w:tbl>
<w:tbl>table data 4</w:tbl>
<w:tbl>table data 5</w:tbl>
<w:tbl>table data 6</w:tbl>
<w:p>para3</w:p>
</w:body>
</w:document>
したがって、上記のxmlファイルに記載されているコンテキストノードに従って、テーブルデータ1とテーブルデータ2のみを選択します。
たとえば、コンテキストノードがpara2の場合、テーブルデータ3、テーブルデータ4、テーブルデータ5、およびテーブルデータ6のみを選択します。
だから、私はこのようにxsltを書いた、
<xsl:for-each select="following::node()/self::w:tbl">
<xsl:choose>
<xsl:when test="self::w:tbl">
<xsl:apply-templates select="self::w:tbl"></xsl:apply-templates>
</xsl:when>
</xsl:choose>
</xsl:for-each>
しかし、それは間違った結果を生み出しました...
この問題から抜け出すために私を導いてください...