我正在尝试对XML进行条件匹配,并从兄弟节点返回值。我想匹配Gender PreviousValue属性等于空字符串的记录。然后我想返回该从站的ID值。
我的例子:
<SlaveTeam>
<Slave>
<ID>
<Number>202</Number>
</ID>
<Personal>
<Gender>Female</Gender>
</Personal>
</Slave>
<Slave>
<ID>
<Number>303</Number>
</ID>
<Personal>
<Gender PreviousValue = "">Male</Gender>
</Personal>
</Slave>
</SlaveTeam>
我试图使用的XSLT是:
<xsl:template match="/SlaveTeam/Slave/Personal/Gender/@PreviousValue = '' ">
<xsl:value-of select="/SlaveTeam/Slave/ID/Number"/>
</xsl:template>
因为第二个奴隶的性别之前没有任何值,我希望得到的输出是:
303
我认为我对如何使用比赛存在基本的误解。真的很感激我能得到的任何帮助。
答案 0 :(得分:0)
我想你想要
<xsl:template match="/SlaveTeam/Slave[Personal/Gender/@PreviousValue = '' ]">
<xsl:value-of select="ID/Number"/>
</xsl:template>
这是一个完整的例子:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/SlaveTeam/Slave[not(Personal/Gender/@PreviousValue = '')]"/>
<xsl:template match="/SlaveTeam/Slave[Personal/Gender/@PreviousValue = '' ]">
<xsl:value-of select="ID/Number"/>
</xsl:template>
</xsl:stylesheet>
应用于输入
<SlaveTeam>
<Slave>
<ID>
<Number>202</Number>
</ID>
<Personal>
<Gender>Female</Gender>
</Personal>
</Slave>
<Slave>
<ID>
<Number>303</Number>
</ID>
<Personal>
<Gender PreviousValue = "">Male</Gender>
</Personal>
</Slave>
<Slave>
<ID>
<Number>404</Number>
</ID>
<Personal>
<Gender>Female</Gender>
</Personal>
</Slave>
<Slave>
<ID>
<Number>505</Number>
</ID>
<Personal>
<Gender PreviousValue = "">Male</Gender>
</Personal>
</Slave>
</SlaveTeam>
我得到了输出
303
505
所以我认为这场比赛就像我理解你的描述一样。