如何在XSL上进行计算

时间:2014-11-27 03:03:58

标签: c# xml xslt

我有一个像这样的xml文件:

<RESULTS>
    <COMPONENT>
        <COMPONENT_NAME>APP1</COMPONENT_NAME>
        <COMPONENT_TOTAL>26</COMPONENT_TOTAL>
        <COMPONENT_TESTED>4</COMPONENT_TESTED>
    <COMPONENT>

    <COMPONENT>  
         <COMPONENT_NAME>APP2</COMPONENT_NAME>
         <COMPONENT_TOTAL>10</COMPONENT_TOTAL>
         <COMPONENT_TESTED>9</COMPONENT_TESTED>
    </COMPONENT>
</RESULTS>

这是我当前的xsl C#代码:

     StringBuilder sb = new StringBuilder();                   

     sb.AppendLine("<xsl:for-each select='RESULTS/COMPONENT'>");

     sb.AppendLine("<xsl:value-of select='COMPONENT_NAME'/>    " + " = " + "
                    <xsl:value-of select='COMPONENT_TESTED'/>  " + " / " + " 
                    <xsl:value-of select='COMPONENT_TOTAL'/>") ;
它给出了; APP1 = 4/26           APP2 = 9/10

我想做一个计算。 (测试/总计)* 100

所以APP2(9/10)* 100 = 90&#34;%&#34;

我该怎么做?

到目前为止,我尝试了这些,

string a = "<xsl:value-of select='COMPONENT_NAME'/>"; // not working

sb.AppendLine("<xsl:value-of select= " + "\"" + "sum (COMPONENT/[@'COMPONENT_TESTED'] / COMPONENT/[@'COMPONENT_TOTAL']) " + "\"" + "   />");

sb.AppendLine("<xsl:name='tested' select='COMPONENT_TESTED'/>" + <xsl:name='total'  select='COMPONENT_TOTAL'/>"

它们都不起作用:(

1 个答案:

答案 0 :(得分:1)

尝试:

<xsl:value-of select='COMPONENT_TESTED div COMPONENT_TOTAL * 100'/>

或者,恕我直言更正确:

<xsl:value-of select='format-number(COMPONENT_TESTED div COMPONENT_TOTAL, "#%")'/>