電子書籍の厳選無料作品が豊富!

XML文書内でスペース2つの要素に対してxsltでスペースの長さ回だけ&nbsp:に変換しようとしているのですが、xslt内ではスペースが1つしか渡ってこないのですがこれはどうしてなのでしょうか?

もし参考のwebページ等がありましたら教えてください。

sample.xml
<a>__</a>

A 回答 (3件)

再調査しています。

実装を見て正しいとか言ってたけど,
読んでいてやっぱり腑に落ちない気がしたので。
(全ての要素の初期はpreserve-spaceに分類される,と仕様に書いてある
ように思った。)
>some text nodes are stripped.
someだから3つのテキストノードのうち,二つが消えたんだろう,とかいう思考をしてた。

preserve-spaceの時1を返したのはeXtyle(MSXMLを使用したもの)
strip-spaceの時0を返した。

Javaにおいてはpreserve-spaceを書かずとも2が返り,
strip-space要素を使った時は0が返りました。

たぶん再度回答しに来ます。

===========
    • good
    • 0

バグであるという意見に変更させてもらいます。

ごめんなさい。
.NETの実装も2を返しました。

http://msdn.microsoft.com/en-us/library/ms256144 …

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.
    • good
    • 0

XSLT 1.0の仕様です。



http://www.w3.org/TR/xslt#strip

A text node is preserved if any of the following apply:
以下の条件を満たさないため,White-space strippingが行われます。

この回答への補足

基本的に空白のみを含むノードは削除されてしまう。

→xsl:preserve-spaceで空白のみのノードを保存しておく。

→空白のみのノード(空白3つ含む)を出力する。

→空白1つのみが出力される。

空白のみのノードの中身にいくつ空白を含んでいても1つの空白
としてXSLT内では扱われるんですか?

補足日時:2008/10/06 22:09
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!