XSLT条件模板匹配

时间:2014-04-02 14:04:03

标签: xml xslt conditional

我正在尝试对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

我认为我对如何使用比赛存在基本的误解。真的很感激我能得到的任何帮助。

1 个答案:

答案 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

所以我认为这场比赛就像我理解你的描述一样。