如何只选择不在div标签中的文字?
例如
<div>
<div>not this</div>
1<br/>
<div>not this</div>
1<br/>
1<br/>
<div>not this</div>
</div>
<div>
<div>not this</div>
2
<div>not this</div>
2
2
<div>not this</div>
</div>
<div>
<div>not this</div>
3
<div>not this</div>
3
3
<div>not this</div>
</div>
结果:{'1 / n1 / n1 / n','2 2 2','3 3 3'}
答案 0 :(得分:0)
//text()[normalize-space()][../node()[not(self::text())]]
含义:任何不仅仅有空白的文本节点至少有一个兄弟节点
答案 1 :(得分:0)
使用强>:
div/text()[string-length(normalize-space()) > 0]
当使用提供的XML片段的父节点作为上下文节点进行求值时,此表达式将选择上下文节点的任何div
子节点的所有非空白空间文本节点子节点。
以下是完整的验证:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/*">
<xsl:for-each select=
"div/text()[string-length(normalize-space()) > 0]">
"<xsl:value-of select="."/>"
<xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
将此转换应用于提供的XML片段(包装在顶部元素中以成为格式良好的XML文档):
<t>
<div>
<div>not this</div>
1<br/>
<div>not this</div>
1<br/>
1<br/>
<div>not this</div></div>
<div>
<div>not this</div>
2
<div>not this</div>
2
2
<div>not this</div></div>
<div>
<div>not this</div>
3
<div>not this</div>
3
3
<div>not this</div></div>
</t>
产生了想要的正确结果:
"
1"
"
1"
"
1"
"
2
"
"
2
2
"
"
3
"
"
3
3
"