XSLT得到值的计数值出现

时间:2013-11-17 17:52:19

标签: xml xslt

我正在尝试创建一个变量,它将给出我在xml中显示值1的次数:Eployee_Test:

这是我的XML:

<pd:Report_Data xmlns:wd="urn:com.playdate.report/TEST_REPORT">
    <pd:Report_Entry>
        <pd:Spouse_Test>0</pd:Spouse_Test>
        <pd:Employee_Test>1</pd:Employee_Test>
        <pd:DR-04-Last_Name>Jane</pd:DR-04-Last_Name>
        <pd:DR-05-First_Name>Smith</pd:DR-05-First_Name>
    </pd:Report_Entry>
    <pd:Report_Entry>
        <pd:Spouse_Test>0</pd:Spouse_Test>
        <pd:Employee_Test>1</pd:Employee_Test>
        <pd:DR-04-Last_Name>John</pd:DR-04-Last_Name>
        <pd:DR-05-First_Name>Smith</pd:DR-05-First_Name>
    </pd:Report_Entry>
    <pd:Report_Entry>
        <pd:Spouse_Test>0</pd:Spouse_Test>
        <pd:Employee_Test>1</pd:Employee_Test>
        <pd:DR-04-Last_Name>Jerry</pd:DR-04-Last_Name>
        <pd:DR-05-First_Name>Smith</pd:DR-05-First_Name>
    </pd:Report_Entry>

我试图在每次出现值= 1时返回3的计数,而不是xml for pd:Employee_Test

1 个答案:

答案 0 :(得分:1)

如果这只是一个关闭(假设样式表中有正确的命名空间绑定)

<xsl:variable name="numberOfOnes"
  select="count(/pd:Report_Data/pd:Report_Entry/pd:Employee_Test[. = '1'])" />

如果这是你要反复做的事情(比如计算1s,然后是2s等),那么定义一个键会更有效

<xsl:key name="employeeTestByValue" match="pd:Employee_Test" use="." />

然后您可以使用count(key('employeeTestByValue', '1'))来计算给定值的出现次数。