我想根据子节点的属性对以下'testsuite'进行排序。在这种情况下'执行'。我该怎么做?
这是我的XML
<test-suite name="AnalyticsRequestTest" success="True" time="0.003" asserts="0">
<results>
<test-case name="IntegrationTests" executed="True" success="True" time="0.002" asserts="1" />
<test-case name="IntegrationTests1" executed="False" success="False" time="0.002" asserts="1" />
我的XSLT
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template name="testsuites">
<xsl:variable name="lcletters">abcdefghijklmnopqrstuvwxyz</xsl:variable>
<xsl:variable name="ucletters">ABCDEFGHIJKLMNOPQRSTUVWXYZ</xsl:variable>
<xsl:for-each select="//test-suite[(child::results/test-case)]">
<xsl:sort select="child::results/test-case[translate(@executed,$ucletters,$lcletters)='false']" />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
答案 0 :(得分:2)
你快到了。但请记住,xxl:sort / @ select必须将排序键计算为字符串或数字(不是测试用例元素!)。所以我怀疑
<xsl:sort select="child::results/test-case[translate(@executed,$ucletters,$lcletters)='false']" />
应该是
<xsl:sort select="translate(child::results/test-case/@executed,$ucletters,$lcletters)" />