逗号分离

时间:2013-02-25 13:21:30

标签: xslt xslt-2.0

我有一组产品,如(123565,589655,45585,666669,5888)我想在这些ID组的前后放逗号(,123565,589655,45585,666669,5888,)。

如何编写XSLT代码来执行此操作?

2 个答案:

答案 0 :(得分:2)

只需使用

<xsl:text>,</xsl:text><xsl:value-of select="$yourSequence" 
                                    separator=","/><xsl:text>,</xsl:text>

答案 1 :(得分:0)

非常依赖您的输入XML文件以及您希望输出的样子。无论如何,由于您使用的是XSLT 2.0,因此可以使用string-join()函数。

假设您有一个输入XML文件,如下所示:

<products>
  <product>
    <name>Product #1</name>
    <id>123565</id>
  </product>
  <product>
    <name>Product #1</name>
    <id>589655</id>
  </product>
  <product>
    <name>Product #1</name>
    <id>45585</id>
  </product>
</products>

你可以有一个这样的样式表:

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">

  <xsl:output method="text" indent="yes"/>
  <xsl:variable name="SEPARATOR" select="','"/>

  <xsl:template match="/">
    <!--
    Join the values of each products/product/id element with $SEPARATOR; prepend
    and append the resulting string with commas.
    -->
    <xsl:value-of
      select="concat($SEPARATOR, string-join((products/product/id),
        $SEPARATOR), $SEPARATOR)"/>
  </xsl:template>

</xsl:stylesheet>

哪会产生以下输出:

,123565,589655,45585,

如果您编辑问题以包含输入XML以及输出XML的外观,我可以相应地修改我的答案。