XSLT, XML: Grouping by attribute value

后端 未结 1 1863
长情又很酷
长情又很酷 2021-01-21 14:40

Which is the best way to group Elements based on attribute value using XSLT? Would it be better to use XSLT 2.0 or higher?

Many thank in advance for your help

Th

相关标签:
1条回答
  • 2021-01-21 15:06

    In XSLT 2.0, you can use xsl:for-each-group, but if you are going to do <xsl:for-each-group select="record" group-by="@type"> then you must be positioned on the transaction record at that point.

    Additionally, you will need to make use of current-group to get all the record elements within the group.

    Try this XSLT

    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    
    <xsl:output method="xml" indent="yes" />
    
    <xsl:template match="transaction"> 
        <xsl:copy>
            <xsl:for-each-group select="record" group-by="@type"> 
                <records type="{current-grouping-key()}" >
                    <xsl:apply-templates select="current-group()" />
                </records>
            </xsl:for-each-group>
        </xsl:copy>
    </xsl:template> 
    
    <xsl:template match="@*|node()"> 
        <xsl:copy> 
            <xsl:apply-templates select="@*|node()"/> 
        </xsl:copy> 
    </xsl:template> 
    </xsl:stylesheet> 
    
    0 讨论(0)
提交回复
热议问题