Xml 如何在xslt中进行嵌套分组

Xml 如何在xslt中进行嵌套分组,xml,xslt,xslt-2.0,xslt-grouping,Xml,Xslt,Xslt 2.0,Xslt Grouping,下面是xml <Report> <ReportBody> <Level type="Assessment-Area" name="Etch"> <Level type="Issue" Issue-Severity="Critical"> <Level type="Issue" Issue-Severity="Critical">

下面是xml

<Report>
    <ReportBody>
        <Level type="Assessment-Area" name="Etch">
            <Level type="Issue" Issue-Severity="Critical">
                <Level type="Issue" Issue-Severity="Critical">
                    <Level type="Issue" Issue-Severity="Critical">
                        <Level type="Checklist" name="CEDM - IPC Rules::High-Dense">
                            <Level type="Action" name="Padstack Analysis (High-Dense)" Checklist="CEDM - IPC Rules::High-Dense" Model="High-Dense">
                                <Level type="Category" name="abc" Range="*:via2toep;XX_w = 4.675 4.921 5.167 ">
                                    <Measurement LocationY="5.9547242" Layer="signal_1" Net1="$NONE$" name="CEDM - IPC Rules::High-Dense-11-signal_1-127--1-42" Component2="U56" Overview="some value" image="some_base 64 code">
                                    </Measurement>
                                </Level>
                            </Level>
                        </Level>
                    </Level>
                </Level>
            </Level>
            <Level type="Issue" Issue-Severity="Critical">
                <Level type="Issue" Issue-Severity="Critical">
                    <Level type="Issue" Issue-Severity="Critical">
                        <Level type="Checklist" name="CEDM - IPC Rules::High-Dense">
                            <Level type="Action" name="Padstack Analysis (High-Dense)" Checklist="CEDM - IPC Rules::High-Dense" Model="High-Dense">
                                <Level type="Category" name="xyz" Range="*:via2toep;XX_w = 4.675 4.921 5.167 ">
                                    <Measurement LocationY="5.9547242" Layer="signal_2" Net1="$NONE$" name="CEDM - IPC Rules::High-Dense-11-signal_1-127--1-42" Component2="U56" Overview="some value" image="some_base 64 code">
                                    </Measurement>
                                </Level>
                            </Level>
                        </Level>
                    </Level>
                </Level>
            </Level>
            <Level type="Issue" Issue-Severity="Critical">
                <Level type="Issue" Issue-Severity="Critical">
                    <Level type="Issue" Issue-Severity="Critical">
                        <Level type="Checklist" name="CEDM - IPC Rules::High-Dense">
                            <Level type="Action" name="Padstack Analysis (High-Dense)" Checklist="CEDM - IPC Rules::High-Dense" Model="High-Dense">
                                <Level type="Category" name="abc" Range="*:via2toep;XX_w = 4.675 4.921 5.167 ">
                                    <Measurement LocationY="5.9547242" Layer="signal_2" Net1="$NONE$" name="CEDM - IPC Rules::High-Dense-11-signal_1-127--1-42" Component2="U56" Overview="some value" image="some_base 64 code">
                                    </Measurement>
                                </Level>
                            </Level>
                        </Level>
                    </Level>
                </Level>
            </Level>
            <Level type="Issue" Issue-Severity="Critical">
                <Level type="Issue" Issue-Severity="Critical">
                    <Level type="Issue" Issue-Severity="Critical">
                        <Level type="Checklist" name="CEDM - IPC Rules::High-Dense">
                            <Level type="Action" name="Padstack Analysis (High-Dense)" Checklist="CEDM - IPC Rules::High-Dense" Model="High-Dense">
                                <Level type="Category" name="xyz" Range="*:via2toep;XX_w = 4.675 4.921 5.167 ">
                                    <Measurement LocationY="5.9547242" Layer="signal_2" Net1="$NONE$" name="i" Component2="U56" Overview="some value" image="some_base 64 code">
                                    </Measurement>
                                </Level>
                            </Level>
                        </Level>
                    </Level>
                </Level>
            </Level>
        </Level>
    </ReportBody>
</Report>

我是xslt新手。所以我尝试了几种在谷歌上找到的方法。但它不起作用

我想将“Measurement”标记中显示的所有base 64图像分组
然后将那些在“测量”标记正上方的“级别”标记中具有相同“名称”属性的图像分组。

您所需的输出不太清楚,但下面是一个示例,您可以根据其父级别的名称对测量进行分组

然后我只是复制了度量节点,但是您可以选择只保留所需的属性



您所需的输出不太清楚,但下面是一个示例,您可以根据父级别的名称对度量值进行分组

然后我只是复制了度量节点,但是您可以选择只保留所需的属性


“我尝试了两种方法‘发布您的最佳尝试,以便我们能够修复它,而不必从头开始为您编写代码。同时显示预期的输出。”我尝试了两种方法‘发布您的最佳尝试,以便我们能够修复它,而不必从头开始为您编写代码。同时显示预期的输出。
<xsl:template match="/">
    <xsl:for-each-group select="//Measurement" group-by="../@name">
        <xsl:element name="Level">
            <xsl:attribute name="name" select="current-grouping-key()"/>
            <xsl:for-each select="current-group()">
                <xsl:copy-of select="current()"/>
            </xsl:for-each>
        </xsl:element>
    </xsl:for-each-group>
</xsl:template>