0

我有一些这样的 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)定位。

尽管我希望从此链接中获得以下内容,但以下内容不起作用:

<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" />

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

任何想法如何将这些结合起来?

4

2 回答 2

1

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

于 2011-09-29T20:07:06.020 回答
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>

输出:

我想要这个和这个

于 2011-09-29T20:14:16.890 回答