我有以下xml:
<p>
<tx>
<ts>
<mtr>
<pos>
<Part>Text1</Part>
</pos>
</mtr>
Text2<hyph/>Text3
</ts>
</tx>
</p>
<p>
<tx>
<ts>
Text4
</ts>
</tx>
</p>
所以基本上我有一系列p / tx / ts,ts有时会有可选的子节点。
现在我需要在p / tx / ts下面找到所有文本节点,而不是那些嵌套在ts子节点中的文本节点。 在上面的例子中我需要text2,text3和text4但不需要text1(因为它嵌套在mtr / pos / part中,即ts的子节点)
答案 0 :(得分:0)
此XPath应该返回您要查找的内容:
/*/p/tx/ts/text()[normalize-space(.)!='']
注意:添加了第一个/*
,因为您需要一个根元素才能使您的示例格式正确。
答案 1 :(得分:0)
这回报了我要找的东西:
<xsl:template match="p">
<xsl:for-each select="./tx/ts">
<xsl:apply-templates select="child::text()" />
</xsl:for-each>
</xsl:template>