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>