concat中的concat不同的值

时间:2014-02-03 16:06:18

标签: xslt-1.0

我遇到了一个问题,我正在寻找一个快速解决方案。我有一个xml,我从中获取了一些值:

<root>
<item>
<property1>value</property1>
<property2>value</property2>
<property3>value</property3>
</item>
<item>...</item>
<item>...</item>
<item>...</item>
</root>

我在使用后使用变量:

<xsl:for-each select="root/item"><xsl:value-of select="concat(property1,';')"/></xsl:for-each>

但是当项目太多时,我遇到了一个问题,变量太大(超过255个字符)。所以我想只采用唯一值(唯一属性值)。

任何简单的方法吗?

由于

1 个答案:

答案 0 :(得分:0)

请测试下面的样式表:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="1.0">

<xsl:key name="group" match="property1" use="."/>

<xsl:variable name="unique_properties">
    <xsl:for-each select="//property1[count(. | key('group', .)[1]) = 1]"><!-- this selects unique values -->
        <xsl:value-of select="concat(.,';')"/>
    </xsl:for-each>
</xsl:variable>

    <xsl:template match="root">
        <xsl:value-of select="$unique_properties"/>
    </xsl:template>
</xsl:stylesheet>