これは、単一の XPath 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>
この XSLT 1.0 変換が次の XML ドキュメント (単一の最上位要素にラップされた提供された XML フラグメント) に適用される場合:
<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 式が評価され、結果 (4 つの文字列) が出力にコピーされます。
text1 text2 textbase1text3 textbase2text4