在 xslt 1.0 中格式化值数组

Formatting an value array in xslt 1.0

有哪位好心人能帮帮我遇到下面的情况吗?

我在下面有这个 xml,有些字段是一个数组,我需要获取这些字段的值并在 xslt 1.0

中用逗号分隔连接

输入XML


< key name="PeriodoInicial" value="2020-08-01"/>
< key name="PeriodoFinal" value="2020-08-04"/>
< key name="PartNumber" value="LIC-CUCM-12X-ESS"/>
< key name="NumeroProposta" value="34887"/>
< key name="CnpjCliente" value="59.285.411/0001-13"/>
< key name="NomeCliente" value="BANCO PAN S.A."/>
< key name="PO" value="1"/>
< key name="SO" value="2"/>
< key name="ShipmentId" value="12345"/>
< key name="CodigoTipoProduto" value="100"/>
< key name="CodigoTipoProduto" value="103"/>
< key name="CodigoFilial" value="1"/>
< key name="CodigoFilial" value="3"/>
< key name="CodigoVendedor" value="34"/>
< key name="CodigoVendedor" value="37"/>
< key name="CodigoVendedor" value="38"/>

我如何期望数组值退出

<输出>
< CodigoTipoProduto>100.103< /CodigoTipoProduto>
1.3< /CodigoFilial>
34,37,38< /CodigoVendedor>

您可以使用此 XSLT-1.0 样式表:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output indent="yes"/>  
    <xsl:variable name="delimiter" select="'.'"/>  
    
    <xsl:template match="/io">
      <out>
        <CodigoTipoProduto><xsl:for-each select="key[@name='CodigoTipoProduto']"><xsl:value-of select="@value" /><xsl:if test="position() != last()"><xsl:value-of select="$delimiter" /></xsl:if></xsl:for-each></CodigoTipoProduto>
        <CodigoFilial><xsl:for-each select="key[@name='CodigoFilial']"><xsl:value-of select="@value" /><xsl:if test="position() != last()"><xsl:value-of select="$delimiter" /></xsl:if></xsl:for-each></CodigoFilial>
        <CodigoVendedor><xsl:for-each select="key[@name='CodigoVendedor']"><xsl:value-of select="@value" /><xsl:if test="position() != last()"><xsl:value-of select="$delimiter" /></xsl:if></xsl:for-each></CodigoVendedor>    
      </out>
    </xsl:template>
    
</xsl:stylesheet>

其结果为:

<?xml version="1.0"?>
<out>
  <CodigoTipoProduto>100.103</CodigoTipoProduto>
  <CodigoFilial>1.3</CodigoFilial>
  <CodigoVendedor>34.37.38</CodigoVendedor>
</out>