如何使用xslt按值对xml元素排序
我下面有一个xml如何使用xslt按值对xml元素排序,xml,sorting,xslt,xslt-1.0,xslt-2.0,Xml,Sorting,Xslt,Xslt 1.0,Xslt 2.0,我下面有一个xml <parent> <child1>False</child1> <child2>True</child2> <child3>False</child3> <child4>True</child4> </parent> <parent> <child4>False</child1> <child5>True&l
<parent>
<child1>False</child1>
<child2>True</child2>
<child3>False</child3>
<child4>True</child4>
</parent>
<parent>
<child4>False</child1>
<child5>True</child2>
<child3>False</child3>
<child4>False</child4>
</parent>
假的
真的
假的
真的
假的
真的
假的
假的
按True排序后,xml和最终的xml应该如下所示
<parent>
<child4>True</child4>
<child2>True</child2>
<child1>False</child1>
<child3>False</child3>
</parent>
<parent>
<child5>True</child2>
<child4>False</child1>
<child3>False</child3>
<child4>False</child4>
</parent>
真的
真的
假的
假的
真的
假的
假的
假的
这可以用xslt来完成。我需要xslt逻辑来按True对xml元素进行排序。
xsl:sort
是您需要的
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes" />
<xsl:template match="parent">
<parent>
<xsl:for-each select="*">
<xsl:sort select="." order="descending"/>
<xsl:copy-of select='.'/>
</xsl:for-each>
</parent>
</xsl:template>
</xsl:stylesheet>
仅添加一点,子元素可能也有属性。您到底在哪里遇到了这些问题?是XSLT 1还是XSLT 2?您已经包含了这两个标记。除了将“True”元素放在第一位之外,您还关心顺序吗?例如,在您的第一个父元素中,您是否关心child4是在child2之前,还是可以接受其他方式?当我在post@storia321“不工作”是什么意思?在这里工作:@storia321是否将父元素包装到外部元素中?因为它在您发布的示例上不起作用,因为它不是有效的xml(只能有一个顶级元素)。