/ / xslt mapping per lo stesso elemento di origine multipla a elemento di destinazione singola - xml, xslt

mappatura xslt per lo stesso elemento di origine multipla a elemento di destinazione singola - xml, xslt

Hai bisogno del tuo aiuto per la mappatura xslt. Supponiamo che la fonte sia come sotto.

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

Laddove l'elemento B è illimitato, lascia il mio target xsd come sotto.

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

Voglio mappare tutto il valore dell'elemento C nell'elemento Y in questo modo.

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

Come posso implementare, ho bisogno del tuo aiuto Saluti

risposte:

0 per risposta № 1

Puoi provare qualsiasi opzione in base alla versione XSLT che stai utilizzando.

XSLT 1.0

In XSLT 1.0, è necessario scorrere il file <C> elementi e concatenare i valori e , separatore. Rispetto a XSLT 2.0, questo ha bisogno di più codice.

<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

In XSLT 2.0, è disponibile un approccio molto ottimizzato, a condizione che si stia utilizzando una fabbrica come Saxon vale a dire. saxon9he.jar in caso di Java.

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

Entrambi questi modelli forniscono l'output desiderato.

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