首页 > 解决方案 > XSLT 转换 XML:选择 uuid 并按顺序排序

问题描述

   ## 

我确实有多个 uuid 分组在不同元素下的大型 xml 文件。我希望它们在每个组中进行排序。有人可以在此发表他们的想法。---------

这是用于格式化的 xslt 文件

预期输出:对文件中的所有 uid 进行排序

标签: xmlsortingxsltuuid

解决方案


如果要对uuid元素进行排序,则必须对它们应用排序指令,从它们的父uuids 元素的上下文 - 而不是从不存在test元素的上下文到不存在的table元素。

此外,UUID 不是数字,将它们按数字排序是没有意义的。事实上,根本不清楚对它们进行排序有什么意义,因为它们在定义上毫无意义。不过,如果你愿意,你可以这样做:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>

<!-- identity transform -->
<xsl:template match="@*|node()">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
</xsl:template>

<xsl:template match="uuids">
    <xsl:copy>
        <xsl:apply-templates select="uuid">
            <xsl:sort select="."/>
        </xsl:apply-templates>
    </xsl:copy>
</xsl:template>

</xsl:stylesheet>

演示https ://xsltfiddle.liberty-development.net/6qaHaQP


推荐阅读