xmltask - call不支持嵌套的“if”元素

时间:2014-07-07 14:29:07

标签: xml if-statement ant xmltask

我的新问题是标签中的if语句,我遇到了这个新问题:媒体是否会调用嵌套" if"元件。

rapport.xml:

<testsuites name="COMPTES" tests="6" time="7" timestamp="2014-07-01T17-20-07" failures="6" errors="0">
    <testsuite name="100" tests="6" failures="6" errors="0" time="7">
        <testcase classname="Script.COMPTES.100" name="TEST1" time="1">
            <failure message="Not exist file or counter or used" type="fichiersInexistants">
                File No matches
            </failure>
        </testcase>
        <testcase classname="Script.COMPTES.100" name="TEST2" time="2">
            <failure message="Not exist file or counter or used" type="fichiersUtilises">
                Data set in use
            </failure>
        </testcase>
        <testcase classname="Script.COMPTES.100" name="TEST3" time="3">
            <failure message="Not exist file or counter or used" type="fichiersInexistants">
                File No matches
            </failure>
        </testcase>
        <testcase classname="Script.COMPTES.100" name="TEST4" time="3">
            <failure message="File abended" type="abended">
                File abended
            </failure>
        </testcase>
    </testsuite>
</testsuites>

代码来源:

<xmltask source="rapport.xml">                                      
    <call path="//testsuites">
        <param name="comptes" path="@name"/>                        
        <param name="testsuite1" path="testsuite[1]/@name"/>
        <param name="compteur1" path="testsuite[1]/testcase/text()"/>
        <param name="compteurFailure1" path="testsuite[1]/testcase/failure/text()"/>
        <if>
            <or>
                <equals arg1="@{comptes}" arg2="COMPTES"/>  
                <equals arg1="@{comptes}" arg2="EXE"/> 
                <equals arg1="@{comptes}" arg2="RESTORE"/>
            </or>     
            <then>
                <param name="testsuite2" path="testsuite[2]/@name"/>    
                <param name="compteur2" path="testsuite[2]/testcase/text()"/>
                <param name="compteurFailure2" path="testsuite[2]/testcase/failure/text()"/>                                
            </then>                         
        </if>
        <actions>                           
            <if>
                <or>
                    <equals arg1="@{comptes}" arg2="COMPTES"/>  
                    <equals arg1="@{comptes}" arg2="EXE"/> 
                    <equals arg1="@{comptes}" arg2="RESTORE"/>
                </or>     
                <then>
                    <echo message="compteur"/>
                    <echo>  @{compteur1} </echo>    
                    <echo>  @{compteurFailure1} </echo> 
                    <echo>  @{compteur2} </echo>    
                    <echo>  @{compteurFailure2} </echo>                                     
                </then> 
                <else>
                    <echo message="compteur"/>
                    <echo>  @{compteur1} </echo>    
                    <echo>  @{compteurFailure1} </echo>                     
                </else>
            </if>
        </actions>
    </call>                               
</xmltask>  

我不明白为什么在&#34; @ {comptes}&#34;&#34; @ {comptes}&#34; =&#34; COMPTES&#34; ?

1 个答案:

答案 0 :(得分:0)

<xmltask source="rapport.xml">                                      
    <call path="//testsuites">
        <param name="comptes" path="@name"/>                        
        <param name="testsuite1" path="testsuite[1]/@name"/>
        <param name="compteur1" path="testsuite[1]/testcase/text()"/>
        <param name="compteurFailure1" path="testsuite[1]/testcase/failure/text()"/>        
        <actions>                       
            <var name="comptes" value="@{comptes}"/>                                                        
        </actions>
    </call>                               
</xmltask>  

<if>
    <or>
        <equals arg1="${comptes}" arg2="COMPTES"/>  
        <equals arg1="${comptes}" arg2="EXE"/> 
        <equals arg1="${comptes}" arg2="RESTORE"/>
    </or>     
    <then>
        <xmltask source="rapport.xml">                                      
            <call path="//testsuites">                                  
                <param name="testsuite1" path="testsuite[1]/@name"/>
                <param name="compteur1" path="testsuite[1]/testcase/text()"/>
                <param name="compteurFailure1" path="testsuite[1]/testcase/failure/text()"/>
                <param name="testsuite2" path="testsuite[2]/@name"/>    
                <param name="compteur2" path="testsuite[2]/testcase/text()"/>
                <param name="compteurFailure2" path="testsuite[2]/testcase/failure/text()"/>    
                <actions>
                    <if>
                        <or>
                        <not><equals arg1="@{testsuite1}" arg2="" /></not>
                        <not><equals arg1="@{testsuite2}" arg2="" /></not>
                        </or>
                        <then>                                      
                            <echo message="@{compteur1}"/>
                            <echo message="@{compteurFailure1}"/>
                            <echo message="@{compteur2}"/>
                            <echo message="@{compteurFailure2}"/>
                        </then>
                    </if>                                                                       
                </actions>
            </call>                               
        </xmltask>          
    </then>
    <else>
        <xmltask source="rapport.xml">                                      
            <call path="//testsuites">                                  
                <param name="testsuite1" path="testsuite[1]/@name"/>
                <param name="compteur1" path="testsuite[1]/testcase/text()"/>
                <param name="compteurFailure1" path="testsuite[1]/testcase/failure/text()"/>        
                <actions>
                    <if>
                        <not><equals arg1="@{testsuite1}" arg2="" /></not>
                        <then>                                      
                            <echo message="@{compteur1}"/>
                            <echo message="@{compteurFailure1}"/>
                        </then>
                    </if>                                                                       
                </actions>
            </call>                               
        </xmltask>  
    </else>
</if>