我有一个像下面的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段。任何帮助或提示如何实现这个?
答案 0 :(得分:0)
在XML中,第二个para
元素的父元素是第一个para
元素。这意味着,如果第二个para
是您的上下文节点,则../para/text/text()
将向父级(第一个para
)向下移动到所有para
个孩子(仅限于一个 - 再次第二个para
,然后选择text
子项中的文本para 2
。
如果您想要父para
元素的第一个文本节点,那么您应该编写
select="parent::para/text[1]"
但是,您需要在模板中编写apply-templates
,以便处理内部元素。