使用XSLT查找节点和特定属性值

使用XSLT查找节点和特定属性值,xslt,xpath,Xslt,Xpath,这是我的xml代码的一个示例: <db> <group> <name>Team1</name> <set num="1">AAA</set> <set num="2">BBB</set> <set num="3">CCC</set> </group> <group> <name>Team2</

这是我的xml代码的一个示例:

<db>
  <group>
  <name>Team1</name>
    <set num="1">AAA</set>
    <set num="2">BBB</set>
    <set num="3">CCC</set>
  </group>
  <group>
  <name>Team2</name>
    <set num="1">DDD</set>
    <set num="2">AAA</set>
    <set num="3">FFF</set>
    <set num="4">EEE</set>
  </group>
  <group>
  <name>Team3</name>
    <set num="1">AAA</set>
    <set num="2">GGG</set>
    <set num="3">FFF</set>
  </group>
  <group>
  <name>Team4</name>
    <set num="1">BBB</set>
    <set num="2">EEE</set>
    <set num="3">AAA</set>
  </group>
</db>

第1组
AAA
BBB
CCC
第二组
DDD
AAA
FFF
EEE
第三小组
AAA
GGG
FFF
团队4
BBB
EEE
AAA
我如何使用xslt显示AAA的num小于3的所有实例的名称和num,以便我的输出如下所示:

<result value="AAA">
  <name num="1">Team1</name>
  <name num="2">Team2</name>
  <name num="1">Team3</name>
</result>

第1组
第二组
第三小组
我一直尝试使用的代码如下:

...
<xsl:template match="/db">
  <result value="AAA">
    <xsl:for-each select="group[set/@num &lt; '3' and set='AAA']">
      <name num="{@num}">
        <xsl:value-of select="name" />
      </name>
    </xsl:for-each>
  </result>
</xsl:template>
。。。
但这会给出所有包含“AAA”的组,而不管num是什么,num总是显示为“”,不管发生什么

任何帮助都将不胜感激,因为我是XSLT新手。 谢谢

这应该可以做到:

  <xsl:template match="/db">
    <result value="AAA">
      <xsl:for-each select="group[set[@num &lt; 3 and string(.)='AAA']]">
        <name num="{set[@num &lt; 3 and string(.)='AAA']/@num}">
          <xsl:value-of select="name" />
        </name>
      </xsl:for-each>
    </result>
  </xsl:template>
这应该做到:

  <xsl:template match="/db">
    <result value="AAA">
      <xsl:for-each select="group[set[@num &lt; 3 and string(.)='AAA']]">
        <name num="{set[@num &lt; 3 and string(.)='AAA']/@num}">
          <xsl:value-of select="name" />
        </name>
      </xsl:for-each>
    </result>
  </xsl:template>

工作得很好!非常感谢。我知道这就是问题所在,但却找不到如何同时满足这两个条件。我搜索了一段时间,从来没有看到“字符串(.)”工作得很好!非常感谢。我知道这就是问题所在,但却找不到如何同时满足这两个条件。我搜索了一段时间,没有看到“字符串(.”