Xslt 在XPath中组合谓词
我有这样一些XML:Xslt 在XPath中组合谓词,xslt,xpath,xslt-1.0,predicate,google-search-appliance,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="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"/>
如果我尝试这个,我总是得到第一个:
<xsl:variable name="display" select="MT[@N = 'target_tag']/@V" />
如果我尝试这样做,我会一直得到第二个MT标记(因此在本例中为“更多文本”):
我也尝试过,但运气不好:
<xsl:variable name="display" select="MT[2][@N = 'target_tag']/@V" />
根据我的需求,我需要组合它们,这样当我循环递归函数时,我可以显示第一个,然后是第二个,然后是第三个
有什么想法可以把它们结合起来吗?选择=“MT[@N='target\u tag'][2]”应该可以用。输入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>
<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>
XSLT:
<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>
<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>
输出:
<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>
<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>
我要这个和这个