2017-09-18 4 views
0

Ich habe einen EingangXSLT zu verbinden Elemente BPEL

<features> 
<feature name="Television" featureSpecID="2000"> 
    <displayName>TV</displayName> 
    <parameters> 
     <parameter name="Remote" > 
     </parameter> 
     <parameter name="Cable Box"> 
     </parameter> 
     <parameter name="Carrier"/> 
    </parameter> 
</parameters> 

wo ich umwandeln sollte als

<productname>Remote;Cable Box;Carrier</productname> 

ich meinen Code versucht, durch for-each der Parameter tun

<xsl:if test='count(tns:parameters/tns:parameter) > "0"'> 
    <xsl:for-each select="tns:parameters/tns:parameter"> 
     <productname> 
     <xsl:value-of select='concat(@name,";")'/> 
     </productname> 
    </xsl:for-each> 
</xsl:if> 
+0

mit meinem Code zu setzen ist: Remote Kabelbox Träger user3557442

Antwort

0

Die <productname> Knoten sollte außerhalb der <xsl:for-each> Schleife sein. Bitte ändern Sie es wie unten

<productname> 
    <xsl:for-each select="tns:parameters/tns:parameter"> 
     ... 
    </xsl:for-each> 
</productname> 

Eine Bedingung nicht die semi-colon am Ende der Produktnamen gemäß Beispielausgabe hinzugefügt werden muss angefügt werden.

<xsl:if test="position() != last()"> 
    <xsl:value-of select="';'"/> 
</xsl:if> 

XSLT-Code ändern

<productname> 
    <xsl:for-each select="tns:parameters/tns:parameter"> 
     <xsl:value-of select="@name" /> 
     <xsl:if test="position() != last()"> 
      <xsl:value-of select="';'"/> 
     </xsl:if> 
    </xsl:for-each> 
</productname> 

Ausgabe

<productname>Remote;Cable Box;Carrier</productname> 
+0

In XSLT 2 sollten Sie xslvalue-of mit Trennzeichen verwenden Attribut: