【问题标题】:XSLT sort based on attributes基于属性的 XSLT 排序
【发布时间】:2013-11-06 09:44:23
【问题描述】:

我想根据子节点的属性对以下“测试套件”进行排序。在这种情况下“执行”。我该怎么做?

这是我的 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>

【问题讨论】:

    标签: xml xslt xslt-1.0


    【解决方案1】:

    你快到了。但请记住 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)" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-24
      • 2021-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-16
      • 1970-01-01
      • 2014-07-09
      相关资源
      最近更新 更多