使用XSLT查找节点和特定属性值
这是我的xml代码的一个示例:使用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</
<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 < '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 < 3 and string(.)='AAA']]">
<name num="{set[@num < 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 < 3 and string(.)='AAA']]">
<name num="{set[@num < 3 and string(.)='AAA']/@num}">
<xsl:value-of select="name" />
</name>
</xsl:for-each>
</result>
</xsl:template>
工作得很好!非常感谢。我知道这就是问题所在,但却找不到如何同时满足这两个条件。我搜索了一段时间,从来没有看到“字符串(.)”工作得很好!非常感谢。我知道这就是问题所在,但却找不到如何同时满足这两个条件。我搜索了一段时间,没有看到“字符串(.”