Xml 如何在xslt中进行嵌套分组
下面是xmlXml 如何在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">
<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>