如何获取父元素的第一个子节点值

时间:2013-05-28 20:54:02

标签: xslt

我有一个像下面的xml,我想要做的是使用匹配模板获取父元素的文本节点。

<xml>
  <para>
    <text>
        para 1
    </text>
    <para>
      <text>
        para 2
      </text>     
    </para>
  </para>
</xml>

我的xslt如下所示

<xsl:template match="para">
          <xsl:value-of select="../para/text/text()"/>
</xsl:template> 

对于第一个para节点它没有返回任何好的文本但是对于第二个它返回第1段第2段,因为它应该只返回第1段。任何帮助或提示如何实现这个?

1 个答案:

答案 0 :(得分:0)

在XML中,第二个para元素的父元素是第一个para元素。这意味着,如果第二个para是您的上下文节点,则../para/text/text()将向父级(第一个para)向下移动到所有para个孩子(仅限于一个 - 再次第二个para,然后选择text子项中的文本para 2

如果您想要父para元素的第一个文本节点,那么您应该编写

select="parent::para/text[1]"

但是,您需要在模板中编写apply-templates,以便处理内部元素。