<XSL:for-each> 跳过具有特定值的节点

Den*_*one 1 xml xslt

仍然很难掌握一些较难的模板,任何帮助都会很棒。

现在我正在使用一个简单的 for-each 循环,它对表格中的数据进行排序和显示。我想做同样的事情,但跳过所有节点,其中“状态”=“讨论”下面是我当前的样式表,下面是我的 XML。我想我可以在当前循环中添加一个 for-each 来忽略满足我的条件的节点。我正在转义单引号,因为它是更大的 php 脚本的一部分。

<?xml version="1.0" encoding="ISO-8859-1"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <html>
  <body>
    <table cellpadding="3" cellspacing="0" width="390">
      <tr>
        <th style="text-align:left;"><span style="font:20px arial; font-weight:bold;">Agent Name</span></th>
        <th style="text-align:center;"><span style="font:20px arial; font-weight:bold;">State</span></th>
        <th style="text-align:center;"><span style="font:20px arial; font-weight:bold;">Time</span></th>
      </tr>
      <xsl:for-each select="NewDataSet/AgentSales">
<tr>
 <xsl:if test="(position() mod 2 = 1)">
    <xsl:attribute name="bgcolor">#cccccc</xsl:attribute>
    </xsl:if>

 <xsl:if test="AgentSales[State=\'Talking Out\']">

    </xsl:if>

        <td style="text-align:left;"><span style="font:14px arial; font-weight:bold;"><xsl:value-of select="AgentName"/></span></td>
        <td style="text-align:center;"><span style="font:14px arial; font-weight:bold;"><xsl:value-of select="State"/></span></td>
    <td style="text-align:center;"><span style="font:14px arial; font-weight:bold;"><xsl:value-of select="time"/></span></td>
</tr>   

      </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

这是我的 XML

<?xml version="1.0" encoding="ISO-8859-1"?>
<NewDataSet>
  <AgentSales>
    <AgentName>MCCALLISTER AARON</AgentName>
    <State>Talking Out</State>
    <Reason />
    <time>9</time>
  </AgentSales>
  <AgentSales>
    <AgentName>APPELHANS BARRY</AgentName>
    <State>Talking Out</State>
    <Reason />
    <time>1</time>
  </AgentSales>
  <AgentSales>
    <AgentName>ARREDONDO KARLA</AgentName>
    <State>Talking Out</State>
    <Reason />
    <time>0</time>
  </AgentSales>
  <AgentSales>
    <AgentName>WOOTERS CHAD</AgentName>
    <State>Talking In</State>
    <Reason />
    <time>5</time>
  </AgentSales>
  <AgentSales>
    <AgentName>LANDINI EUGENE</AgentName>
    <State>Not Ready</State>
    <Reason>TRAINING</Reason>
    <time>16</time>
  </AgentSales>
  <AgentSales>
    <AgentName>BROWN EYES JONETTE</AgentName>
    <State>Not Ready</State>
    <Reason>TRAINING</Reason>
    <time>13</time>
  </AgentSales>
</NewDataSet>
Run Code Online (Sandbox Code Playgroud)

Dim*_*hev 5

现在我正在使用一个简单的 for-each 循环,它对表格中的数据进行排序和显示。我想做同样的事情,但跳过“状态”=“说出来”的所有节点

只需更换:

  <xsl:for-each select="NewDataSet/AgentSales">
Run Code Online (Sandbox Code Playgroud)

<xsl:for-each select="NewDataSet/AgentSales[not(State='Talking Out')]">
Run Code Online (Sandbox Code Playgroud)