0

子ノードの属性に基づいて、次の「テストスイート」をソートしたいと考えています。この場合は「実行」。それ、どうやったら出来るの ?

これは私の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>
4

1 に答える 1

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)" />
于 2013-11-06T10:48:48.693 に答える