• 締切済み

XSLTについて

XML文書内でスペース2つの要素に対してxsltでスペースの長さ回だけ&nbsp:に変換しようとしているのですが、xslt内ではスペースが1つしか渡ってこないのですがこれはどうしてなのでしょうか? もし参考のwebページ等がありましたら教えてください。 sample.xml <a>__</a>

みんなの回答

回答No.3

バグであるという意見に変更させてもらいます。ごめんなさい。 .NETの実装も2を返しました。 http://msdn.microsoft.com/en-us/library/ms256144.aspx By default, all white-space-only text nodes are preserved. Do not start the transformation from Internet Explorer. The browser performs some space-stripping operations that are not compatible with the XSLT specifications. This can cause the XLST transformation to appear ill-behaved.

回答No.2

再調査しています。実装を見て正しいとか言ってたけど, 読んでいてやっぱり腑に落ちない気がしたので。 (全ての要素の初期はpreserve-spaceに分類される,と仕様に書いてある ように思った。) >some text nodes are stripped. someだから3つのテキストノードのうち,二つが消えたんだろう,とかいう思考をしてた。 preserve-spaceの時1を返したのはeXtyle(MSXMLを使用したもの) strip-spaceの時0を返した。 Javaにおいてはpreserve-spaceを書かずとも2が返り, strip-space要素を使った時は0が返りました。 たぶん再度回答しに来ます。 ===========

回答No.1

XSLT 1.0の仕様です。 http://www.w3.org/TR/xslt#strip A text node is preserved if any of the following apply: 以下の条件を満たさないため,White-space strippingが行われます。

motikei
質問者

補足

基本的に空白のみを含むノードは削除されてしまう。 →xsl:preserve-spaceで空白のみのノードを保存しておく。 →空白のみのノード(空白3つ含む)を出力する。 →空白1つのみが出力される。 空白のみのノードの中身にいくつ空白を含んでいても1つの空白 としてXSLT内では扱われるんですか?

関連するQ&A