Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
xslt-组合在元素文本上匹配的子元素_Xslt - Fatal编程技术网

xslt-组合在元素文本上匹配的子元素

xslt-组合在元素文本上匹配的子元素,xslt,Xslt,我正在尝试设计一个XSLT转换模板,它可以组合与其元素文本匹配的子元素(可以是任何内容) 示例输入XML <test> <name>Alpha</name> <value>11</value> </test> <test> <name>Beta</name> <value>14</value> </test> <te

我正在尝试设计一个XSLT转换模板,它可以组合与其元素文本匹配的子元素(可以是任何内容)

示例输入XML

<test>
    <name>Alpha</name>
    <value>11</value>
</test>
<test>
    <name>Beta</name>
    <value>14</value>
</test>
<test>
    <name>Alpha</name>
    <value>22</value>
</test>

阿尔法
11
贝塔
14
阿尔法
22
我希望转换将子元素与匹配元素结合起来,这样任何名为Alpha的子元素都将在输出中分组

示例结果XML

<test>
    <name>Alpha</name>
    <valuelist>11,22</valuelist>
</test>
<test>
    <name>Beta</name>
    <valuelist>14</valuelist>
<test>

阿尔法
11,22
贝塔
14
name文本的值可以是任何内容,因此不能在模板匹配中特别注明。

使用XSLT 2.0:

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

    <xsl:output indent="yes"/>

    <xsl:template match="root">
        <xsl:copy>
            <xsl:for-each-group select="test" group-by="name">
                <test>
                    <xsl:copy-of select="name"/>
                    <valuelist>
                        <xsl:value-of select="current-group()/value" separator=","/>
                    </valuelist>
                </test>
            </xsl:for-each-group>
        </xsl:copy>
    </xsl:template>

</xsl:transform>

在线样本位于。

这是一个(典型的)分组问题。您可以使用像Saxon 9这样的XSLT2.0处理器吗?