将元素中的文本节点与子元素匹配

时间:2014-01-14 16:10:14

标签: xml xslt xpath

我遇到与上述问题相同的问题 How to get text from the node in xml file, that contains text and child node? 但是我需要XSLT来匹配文本。

我有以下简化的XML:

<?xml version="1.0" encoding="UTF-8"?>
<order>2013-09-02T00:00:00COPY
<contentVersion>
    <versionIdentification>2.1.1</versionIdentification>
</contentVersion>
</order>

我尝试过以下XPATH:

<xsl:variable name="vtextPostM" select="text()[self::order]"/>
<xsl:variable name="vtextPostM" select="self::text()[1]"/>
<xsl:variable name="vtextPostM" select="text()[self::*]"/>

我期待:

2013-09-02T00:00:00COPY
你能帮帮我吗?谢谢。

祝你好运, 彼得

2 个答案:

答案 0 :(得分:2)

糟糕,刚刚编辑了我的回答:

<xsl:variable name="vtextPostM" select="order/child::node()[position()=1][self::text()]"/>

答案 1 :(得分:1)

在定义变量时,您到底在哪里?没有任何上下文,绝对路径:

/order/text()[1]

或仅(使用您的具体示例):

/order/text()

应该产生你想要的结果。您需要将它包装在normalize-space()中,因为它包含<contentVersion>之前的尾随换行符。