在XPath中组合谓词

时间:2011-09-29 19:40:56

标签: xslt xpath xslt-1.0 predicate google-search-appliance

我有一些像这样的XML:

<MT N="tag1" V="text"/>
<MT N="tag2" V="more text"/>
<MT N="tag3" V="other text"/>
<MT N="tag4" V="something cool"/>
<MT N="target_tag" V="i want this"/>
<MT N="target_tag" V="and this"/>

我正在尝试定位MT N=target_tag和数字(1或2)。

以下内容不起作用,尽管我希望this link

<xsl:variable name="display" select="MT[@N = 'target_tag' and 2]/@V" />

如果我试试这个,我会一直得到第一个:

<xsl:variable name="display" select="MT[@N = 'target_tag']/@V" />

如果我试试这个,我会一直得到第二个MT标签(在这个例子中是“更多文字”):

<xsl:variable name="display" select="MT[2]/@V" />

我也试过这个也没有运气:

<xsl:variable name="display" select="MT[2][@N = 'target_tag']/@V" />

根据我的要求,我需要将它们组合起来,这样当我循环遍历递归函数时,我可以显示第一个,然后是第二个,然后是第三个。

任何想法如何组合起来?

2 个答案:

答案 0 :(得分:1)

select="MT[@N = 'target_tag'][2]"应该有用。

答案 1 :(得分:0)

输入XML:

<root>
<MT N="tag1" V="text"/>
<MT N="tag2" V="more text"/>
<MT N="tag3" V="other text"/>
<MT N="tag4" V="something cool"/>
<MT N="target_tag" V="i want this"/>
<MT N="target_tag" V="and this"/>
</root>

<强> XSLT:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="root">
        <xsl:for-each select="MT">
            <xsl:if test="@N = 'target_tag'">
                <xsl:value-of select="@V"/>
            </xsl:if>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

<强>输出:

我想要这个和