使用:
normalize-space(/)
このXPath式が評価されると、ドキュメントノード(/
)の文字列値が最初に生成され、これが標準のXPath関数への引数として提供されますnormalize-space()
。
定義によりnormalize-space()
、先頭と末尾の隣接する空白文字を削除し、そのような隣接する空白文字の中間のグループを1つのスペース文字に置き換えて引数を返します。
上記のXPath式を評価すると、次のようになります。
「外食が大好きです。」「これは私のお気に入りのレストランです。」「私は間違いなく戻ってきます」
引用符を削除するために、次のtranslate()
関数を追加で使用します。
normalize-space(translate(/,'"', ''))
この式を評価した結果は次のとおりです。
I love eating out. This is my favorite restaurant. I will definitely be back
最後に、この結果を引用符で囲むには、次のconcat()
関数を使用します。
concat('"',
normalize-space(translate(/,'"', '')),
'"'
)
このXPath式を評価すると、まさに目的の結果が得られます。
"I love eating out. This is my favorite restaurant. I will definitely be back"
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:value-of select=
"concat('"',
normalize-space(translate(/,'"', '')),
'"'
)"/>
</xsl:template>
</xsl:stylesheet>
この変換が提供されたXMLドキュメントに適用される場合(整形式になるように修正されます):
<p>
"I love eating out."
<br />
<br />
"This is my favorite restaurant."
<br />
"I will definitely be back"
</p>
XPath式が評価され、この評価の結果が出力にコピーされます。
"I love eating out. This is my favorite restaurant. I will definitely be back"