使用:
string(//div[@id='theNode'])
この式が評価されると、結果はドキュメントの最初の(できれば唯一の)div
要素の文字列値になります。
要素の文字列値は、XPath仕様で、そのすべてのテキストノードの子孫のドキュメント順序での連結として定義されているため、これはまさに必要な文字列です。
これには多数のすべて空白のテキストノードを含めることができるため、連続する先頭と末尾の空白を削除し、そのような中間の空白を単一の空白文字に置き換えることができます。
使用:
normalize-space(string(//div[@id='theNode']))
XSLTベースの検証:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
"<xsl:copy-of select="string(//div[@id='theNode'])"/>"
===========
"<xsl:copy-of select="normalize-space(string(//div[@id='theNode']))"/>"
</xsl:template>
</xsl:stylesheet>
この変換が提供されたXMLドキュメントに適用される場合:
<div id='theNode'> This is an
<span style="color:red">example</span>
<b>bolded</b> text
</div>
2つのXPath式が評価され、これらの評価の結果が出力にコピーされます。
" This is an
example
bolded text
"
===========
"This is an example bolded text"