这不能用单一的XPA指定th 1.0表达式。
您需要先选择所有相关div
元素:
//div[@id='SNT]
然后为每个选择的节点得到的字符串节点:
string(.)
在XPath 2.0这可以用单个表达式指定:
//div[@id='SNT]/string(.)
XSLT - 基于验证:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="div[@id='SNT']">
<xsl:copy-of select="string()"/>
========
</xsl:template>
</xsl:stylesheet>
当在下面的XML文档(提供的XML片段,包裹成一个单一的顶部元件)被施加这个XSLT 1.0转化:
<t>
<div id="SNT">text1</div>
<div id="SNT">text2</div>
<div id="SNT">textbase1<span style='color: #EFFFFF'>text3</span></div>
<div id="SNT">textbase2<span style='color: #EFFFFF'>text4</span></div>
</t>
相关的div
元素被选中(匹配)并由唯一指定的模板处理,在其中string(.)
的XPath表达式,并将其结果被复制到输出:
text1
========
text2
========
textbase1text3
========
textbase2text4
========
而对于中的XPath 2。0表达:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:copy-of select="//div[@id='SNT']/string(.)"/>
</xsl:template>
</xsl:stylesheet>
当该XSLT 2.0变换对相同的XML文档(上图),所述的XPath 2.0表达式求值并将结果(四根弦)施加被复制到输出:
text1 text2 textbase1text3 textbase2text4
所有的id都一样吗?你使用的是什么xpath实现? –
是的,我使用iOS的XPathQuery。 – MBZ