对于这个 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
如果 A 标记多次出现,则此 xslt 生成正确的输出,但是当上述 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