У меня есть один файл xslt, и я хочу объединить разные страны для одного и того же имени клиента через запятую.Для одного и того же клиента может быть много стран.Поэтому я хочу объединить все страны для одного и того же клиента.Ниже мой образец xml:
<ClientReferences>
<ClientReference>
<ClientName>ABCDEF PVT. LTD</ClientName>
<ClientCountry>India</ClientCountry>
</ClientReference>
<ClientReference>
<ClientName>ABCDEF PVT. LTD</ClientName>
<ClientCountry>China</ClientCountry>
</ClientReference>
<ClientReference>
<ClientName>ABCDEF PVT. LTD</ClientName>
<ClientCountry>USA</ClientCountry>
</ClientReference>
<ClientReference >
<ClientName>XYZ LIMITED</ClientName>
<ClientCountry>China</ClientCountry>
</ClientReference>
</ClientReferences>
Я хочу, чтобы результат был:
<ClientReferences>
<ClientReference>
<ClientName>ABCDEF PVT. LTD</ClientName>
<ClientCountry>India,China,USA</ClientCountry>
</ClientReference>
<ClientReference>
<ClientName>XYZ LIMITED</ClientName>
<ClientCountry>China</ClientCountry>
</ClientReference>
</ClientReferences>
Ниже мой код xslt:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/Sections">
<Sections>
<ClientReferences>
<xsl:for-each select="Section/ClientReferences/ClientReference[generate-id() = generate-id(key('sameClient', ClientName)[1])]">
<ClientReference>
<ClientName>
<xsl:value-of select="ClientName"/>
</ClientName>
<ClientCountry>
<xsl:for-each select="ClientName">
<xsl:value-of select="ClientCountry"/>
<xsl:if test="position() != last()">
<xsl:text>,</xsl:text>
</xsl:if>
</xsl:for-each>
</ClientCountry>
</ClientReference>
</xsl:for-each>
</ClientReferences>
</Sections>
</xsl:template>
</xsl:stylesheet>