2012-12-01 121 views
0

我有以下示例源XML数据。现在我需要得到输出 ,以便在XSLT的帮助下,每个序列号都必须用其管道符号concurinated的productNo值进行打印。使用XSLT连接非重复元素和重复元素

<orders> 
    <orderItems> 
     <productNo>500656-B21</productNo> 
     <serialNumber>KRW13707EV</serialNumber> 
     <serialNumber>PR9137RFRV</serialNumber> 
     <serialNumber>PR9137RFRW</serialNumber> 
     <serialNumber>PR9137RFRX</serialNumber> 
    </orderItems> 
    <orderItems> 
     <productNo>500686-B21</productNo> 
     <serialNumber>KRW13807EZ</serialNumber> 
     <serialNumber>PR9138RFRD</serialNumber> 
     <serialNumber>PR9138RFRY</serialNumber> 
     <serialNumber>PR9138RF51</serialNumber> 
    </orderItems> 
    <orderItems> 
     <productNo>500693-B26</productNo> 
     <serialNumber>KRW139075V</serialNumber> 
     <serialNumber>PR9139RFXV</serialNumber> 
     <serialNumber>PR9139RFW7</serialNumber> 
     <serialNumber>PR9139RFZ5</serialNumber> 
    </orderItems> 
</orders> 

预期成果是:

<orders> 
<serialNo>500656-B21|KRW13707EV</serialNo> 
<serialNo>500656-B21|PR9137RFRV</serialNo> 
<serialNo>500656-B21|PR9137RFRW</serialNo> 
<serialNo>500656-B21|PR9137RFRX</serialNo> 
<serialNo>500686-B21|KRW13807EZ</serialNo> 
<serialNo>500686-B21|PR9138RFRD</serialNo> 
<serialNo>500686-B21|PR9138RFRY</serialNo> 
<serialNo>500686-B21|PR9138RF51</serialNo> 
<serialNo>500693-B26|KRW139075V</serialNo> 
<serialNo>500693-B26|PR9139RFXV</serialNo> 
<serialNo>500693-B26|PR9139RFW7</serialNo> 
<serialNo>500693-B26|PR9139RFZ5</serialNo> 
</orders> 

感谢您的帮助。

回答

1
<xsl:template match="orders"> 
    <xsl:copy> 
    <xsl:apply-templates select="orderItems/serialNumber"/> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="serialNumber"> 
    <serialNo> 
    <xsl:value-of select="concat(../productNo, '|', .)"/> 
    </serialNo> 
</xsl:template> 

<xsl:output indent="yes"/> 

应该就足够了。