XSLT 2.0-使用分组排序时删除属性

XSLT 2.0-使用分组排序时删除属性,xslt,Xslt,在对标记进行排序和分组时,如何从标记中删除属性 我找到了,但没有找到如何将其与分组相结合 我的代码实际上如下所示: <?xml version="1.0" ?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" encoding="UTF-8" indent="yes"/> <xsl:variab

在对标记进行排序和分组时,如何从标记中删除属性

我找到了,但没有找到如何将其与分组相结合

我的代码实际上如下所示:

<?xml version="1.0" ?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="UTF-8" indent="yes"/>
<xsl:variable name="sortOrder" select="'|IL|CL|BL|INST|CDOL|TL|SL|GL|DL|'" />
<xsl:template match="taskDesc">
    <xsl:copy>
        <xsl:apply-templates select="@*"/>
    <xsl:for-each-group select="sectionDesc" group-adjacent="replace(@name, '^(.*)?_[^_]*$', '$1')">
    <xsl:perform-sort select="current-group()">
        <xsl:sort select="string-length(substring-before($sortOrder,
                                concat('|', replace(@name, '^.*?_([^_]*$)', '$1'), '|')))"
        data-type="number" />
    </xsl:perform-sort>
    </xsl:for-each-group>
        </xsl:copy>
</xsl:template>
<xsl:template match="@*|node()"> <-- Copy
    <xsl:copy>
        <xsl:apply-templates select="@*|node()" />
    </xsl:copy>
</xsl:template>
</xsl:stylesheet>

我需要查看您的XML,但可能正在更改

<xsl:for-each-group select="sectionDesc" group-adjacent="replace(@name, '^(.*)?_[^_]*$', '$1')">
<xsl:perform-sort select="current-group()">
    <xsl:sort select="string-length(substring-before($sortOrder,
                            concat('|', replace(@name, '^.*?_([^_]*$)', '$1'), '|')))"
    data-type="number" />
</xsl:perform-sort>
</xsl:for-each-group>


以及添加模板

<xsl:template match="sectionDesc/@FMOrder"/>


帮助。

Francesco,请编辑您的问题,向我们展示XML输入示例和您想要的相应结果。您显示的XSLT是否完整?对不起,明天我将能够向您显示XML输入的一部分,我认为这是不必要的。XSLT已经完成,它只是一个带有属性删除的排序。如果您想删除某个元素上的属性节点,那么使用模板
就可以做到这一点,只要节点由模板处理。目前您的分组和排序没有进一步传递到节点上进行处理,我发布了,也许这有帮助并且足够了。谢谢您的回答。我明天会试试。我添加了我的输入代码,它符合你的建议。非常感谢。
<xsl:for-each-group select="sectionDesc" group-adjacent="replace(@name, '^(.*)?_[^_]*$', '$1')">
<xsl:apply-templates select="current-group()">
    <xsl:sort select="string-length(substring-before($sortOrder,
                            concat('|', replace(@name, '^.*?_([^_]*$)', '$1'), '|')))"
    data-type="number" />
</xsl:apply-templates>
</xsl:for-each-group>
<xsl:template match="sectionDesc/@FMOrder"/>