2011-09-29 106 views
0

我有一些這樣的XML:結合謂詞的XPath

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

根據我的要求,我需要將它們結合起來,這樣,當我通過循環遞歸函數我可以顯示第一,然後是第二,那麼第三。

任何想法如何將這些結合起來?

回答

1

select="MT[@N = 'target_tag'][2]"應該工作。

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> 

輸出:

我想這thisand