この xml の場合:
<G>
<P>
<A>
<b>value b</b>
<c>value c</c>
</A>
<A>
<b>value b2</b>
<c>value c2</c>
</A>
<D>value ew</D>
<D>value e2</D>
<E>value f</E>
</P>
<P>
<A>
<b>value bx</b>
<c>value cx</c>
</A>
<A>
<b>value b2x</b>
<c>value c2x</c>
</A>
<D>value exw</D>
<D>value ex2</D>
<D>value ex2</D>
<E>value fx</E>
</P>
</G>
A や D などのタグは複数回発生する可能性があります。私が作業している元の xml には多数のタグがあり、それらの多くは複数回発生しています。次のように出力を生成する必要があります:
値b値c値ew値f
値b値c値e2値f
値b2値c2値ew値f
値b2値c2値e2値f
値bx値cx値exw値fx
値bx値cx 値 ex2 値 fx
値 bx 値 cx 値 ex3 値 fx
値 b2x 値 c2x 値 exw 値 fx
値 b2x 値 c2x 値 ex2 値 fx
値 b2x 値 c2x 値 ex3 値 fx
この xslt は、A タグが複数回出現する場合は正しい出力を生成しますが、上記の xml の D のような他のタグが繰り返される場合、これは機能しません。
<xsl:for-each select="//A">
<xsl:value-of select="b"/>
<xsl:text>,</xsl:text>
<xsl:value-of select="c"/>
<xsl:text>,</xsl:text>
<xsl:value-of select="ancestor::P/D"/>
<xsl:text>,</xsl:text>
<xsl:value-of select="ancestor::P/E"/>
<xsl:text>
</xsl:text>
</xsl:for-each>
正しいxsltを提案してください