這不能用單一的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