あるxml形式を別のxml形式に変換するためにxslt2.0を使用しています。これは私のサンプルxmlドキュメントです。
<w:document>
<w:body>
<w:p>Para1</w:p>
<w:p>Para2</w:p>
<w:p>Para3</w:p>
<w:p>Para4</w:p>
</w:body>
</w:document>
最初はこれが私のxmlformat.soであり、<w:p>
以下に示すxsltの関数を介してすべての要素を処理しました...
<xsl:template match="document">
<Document>
<xsl:sequence select="mf:group(body/p, 1,count(//w:body//w:p)-1)"/>
</Document>
</xsl:template>
したがって、そのxslt関数では、これらの要素を再フォーマットする方法をコーディングしました。正常に機能しています...
しかし今、Xmlフォーマットは以下のように再構築されています...
<w:document>
<w:body>
<w:tbl><!--some text with children elements--></w:tbl>
<w:tbl><!--some text with children elements--></w:tbl>
<w:p>Para1</w:p>
<w:p>Para2</w:p>
<w:p>Para3</w:p>
<w:p>Para4</w:p>
</w:body>
</w:document>
したがって、今のところ、両方と要素を同じシーケンスで処理する必要があります。
私がやりたいのは、
elemtentsに遭遇した場合は、以下に示すテンプレートを呼び出す必要があります...
<xsl:template match="document">
<Document>
<xsl:for-each select="w:tbl">
<xsl:apply-templates select="w:tbl">
</xsl:apply-templates>
</xsl:for-each>
<xsl:sequence select="mf:group(body/p, 1,count(//w:body//w:p)-1)"/>
</Document>
</xsl:template>
<xsl:template match="w:tbl">
<!--xslt code here -->
</xsl:template>
しかし、変換を試みたときにfor-eachステートメントが実行されません...
だから、この問題から抜け出すために私を導いてください...