/ 同じ複数のソース要素から単一のターゲット要素への/ xsltマッピング - xml、xslt

同じ複数のソース要素を単一のターゲット要素にマッピングするxslt - xml、xslt

xsltマッピングについてあなたの助けが必要です。 ソースが以下のようになっているとします。

   <A>
<B>
<C>Test1</C>
<D></D>
</B>
<B>
<C>Test2</C>
<D></D>
</B>
</A>

要素Bが無制限の場合は、ターゲットのxsdを以下のようにします。

 <X>
<Y></Y>
</X>

そのようにC要素のすべての値をY要素にマップしたい。

<X><Y>Test1,Test2</Y></X>

どうやって実装できますか、あなたの助けが必要ですか よろしく

回答:

回答№1は0

使用しているXSLTのバージョンに基づいて、任意のオプションを試すことができます。

XSLT 1.0

XSLT 1.0では、次のものをループ処理する必要があります。 <C> 要素と値を連結します。 , セパレータXSLT 2.0と比較して、これはもっとコーディングが必要です。

<xsl:template match="A">
<X>
<Y>
<xsl:for-each select="B/C">
<xsl:value-of select="." />
<xsl:if test="position() != last()">
<xsl:value-of select="", "" />
</xsl:if>
</xsl:for-each>
</Y>
</X>
</xsl:template>

XSLT 2.0

XSLT 2.0では、Saxon vizなどのファクトリを使用している場合に限り、非常に最適化されたアプローチが利用可能です。 saxon9he.jar Javaの場合

<xsl:template match="A">
<X>
<Y>
<xsl:value-of select="B/C" separator=", " />
</Y>
</X>
</xsl:template>

これらのテンプレートは両方とも望ましい出力を提供します。

<X>
<Y>Test1, Test2</Y>
</X>