xslt选择何时不属于列表

时间:2017-11-21 13:32:20

标签: xslt foreach .when

我有以下xml:

<?xml version="1.0" encoding="UTF-8"?>
<pi:Payroll_Extract_Employees xmlns:pi="urn:com.workday/picof">
   <pi:company>
      <pi:employee>
         <pi:name>John</pi:name>
         <pi:division>Accounting</pi:division>
      </pi:employee>
      <pi:employee>
         <pi:name>Will</pi:name>
         <pi:division>IT</pi:division>
      </pi:employee>
      <pi:employee>
         <pi:name>Robert</pi:name>
         <pi:division>Finance</pi:division>
      </pi:employee>
   </pi:company>
</pi:Payroll_Extract_Employees>

我想使用for-each循环来迭代所有在Accounting或IT部门工作的员工。我使用此代码:

<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:pi="urn:com.workday/picof">
    <xsl:output method="text"/>

    <xsl:template match="pi:Payroll_Extract_Employees/pi:company">

        <xsl:for-each select="pi:employee[pi:division !=('Accounting','IT')]">
            <xsl:value-of select="pi:name"/>
        </xsl:for-each>

    </xsl:template> </xsl:stylesheet>

但它输出所有员工,是否可以更改for-each语句中的select以获得我想要的内容。我想在那里使用否定。

1 个答案:

答案 0 :(得分:0)

使用"pi:employee[not(pi:division =('Accounting','IT'))]表示该分部既不是Accounting也不是IT