获取当前节点的值

时间:2014-08-04 07:41:15

标签: xml xslt xpath

我对术语并不过分熟悉,所以我甚至不确定问题的标题是否准确,但我会尽力解释。

我有以下XML示例。

<countries>
  <country name="Afghanistan" population="22664136" area="647500">
    <language percentage="11">Turkic</language>
    <language percentage="35">Pashtu</language>
    <language percentage="50">Afghan Persian</language>
  </country>
</countries>

我将XPath用于语言节点(/ countries / country /,然后是for-each for languages)。

<language percentage="11">Turkic</language>

使用XSLT如何在上面的示例&#34; Turkic&#34;中输出值。我无法想出另一种表达问题的方法,但它就像我在节点上并且不知道获取此节点值的语法。

提前致谢

2 个答案:

答案 0 :(得分:11)

xsl:value-of元素和current()函数应该可以解决问题:

<xsl:value-of select="current()"/>

我不知道模板的确切结构,但是例如下面的一个输出语言名称:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/countries">
    <xsl:for-each select="country">
      <xsl:value-of select="current()"/>
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>

答案 1 :(得分:0)

我知道这是旧帖子,但是如果有人仍在寻找答案或对原始问题稍作扩展。

如何根据元素<language>中的属性选择重复元素e.g. percentage with value '11'的特定元素值。如果您在获取价值方面遇到了挑战(如问题中所述),即<language percentage="11">Turkic</language>

获取标签语言

其百分比值为11

然后尝试以下代码:

<xsl:template match="/">
    <xsl:for-each select="/countries/country">                               
       <language>                                                           
          <xsl:value-of select="./language[@percentage='11']"/>              
       <language>                                                              
    </xsl:for-each>                                                     
 </xsl:template>

输出:

<language>Turkic<language>