- PR -

XSLTで改行を反映させて表示したい

投稿者投稿内容
michi
会議室デビュー日: 2004/01/17
投稿数: 6
お住まい・勤務地: Tokyo
投稿日時: 2004-04-07 15:37
XMLの項目に改行が含まれている文字列から、XSLTで改行を探す処理について教えてください。
例えば、

<data>
今日は
良い天気ですね</data>

とあったとします。
XSLTで、「今日は」の後の改行を、反映させて表示させたいんです。

改行コードは、#xA;となるのでしょうか?
(http://www.atmarkit.co.jp/fxml/rensai/w3cread12/w3cread12.htmlより)
こちらには、改行やTAB文字を含む空白文字は#x20;ともあります
(http://www.atmarkit.co.jp/fxml/rensai/xmlwomanabou10/learning-xml10.htmlより)

translate関数などいろいろやってみましたが、だめでした。
よろしくお願いいたします。
kuma
大ベテラン
会議室デビュー日: 2004/02/25
投稿数: 110
投稿日時: 2004-04-07 18:53
こんばんは最近XSLTをちょっと勉強したので答えられる範囲でお答えします。

まず文字列が改行を含んでいるかどうかは
contains(文字列,'&#xA')
で、できるはずです。
ただしこれで検出できるのは文字列内でも'&#xA'として改行を行った時です。
普通に改行('#xA')をしただけではXMLparserで空白類文字('#x20')に変換されてしまい、
XSLTでは改行とみなされなくなるので注意してください。

Cluster
ぬし
会議室デビュー日: 2003/03/06
投稿数: 289
お住まい・勤務地: 大阪
投稿日時: 2004-04-07 19:37
引用:

michiさんの書き込み (2004-04-07 15:37) より:

XSLTで、「今日は」の後の改行を、反映させて表示させたいんです。




であれば、<pre>タグで囲んでしまうというのはダメでしょうか?
michi
会議室デビュー日: 2004/01/17
投稿数: 6
お住まい・勤務地: Tokyo
投稿日時: 2004-04-07 20:00
>kumaさん
ありがとうございます。
改行の探し方はわかりました!

しかし、改行を見つけた部分に<br>タグを入れたいんですよね…。つまり改行して表示させたいわけです。
translate関数では、置換対象1文字に対し1文字分しか置換できないようですし、何か良い方法はないものでしょうか・・・・

>Cluster
ありがとうございます。
<pre>はちょっとナシでお願いします・・。
ほむら
ぬし
会議室デビュー日: 2003/02/28
投稿数: 583
お住まい・勤務地: 東京都
投稿日時: 2004-04-07 22:06
ども、ほむらです。

えーと。たしかいったん分割してつなげるときに間に挟むという常套手段を
使用するしかなかったと思います。

#分割と言うよりは途中から途中って感じ

やったことないのですけど。。
たしかこの会議室でも話題になったことがあるような。。。

#ごめんなさい、4月入ってから妙に忙しくて今感性で書いてます(笑
#もしかしたら何かと勘違いしているかも
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2004-04-07 23:07
>えーと。たしかいったん分割してつなげるときに間に挟むという常套手段を
使用するしかなかったと思います。

はい、末尾再帰を書く羽目になりますね。

もう一つの方法は、XSLTの拡張関数を書いて
それで<BR/>に置換して、disable-output-escape で書き出す方向です。
michi
会議室デビュー日: 2004/01/17
投稿数: 6
お住まい・勤務地: Tokyo
投稿日時: 2004-04-07 23:50
ほむらさん、MMXさん、ありがとうございます。
やはりその方法しかないのですかね・・・。
試しに再帰処理で、substring-beforeやらsubstring-afterやらをがしがし使ったらできました。
うーーーん、面倒ですね。。。

>MMXさん
disable-output-escape とはどのようなものですか??
もし良かったら教えてください・・!

[ メッセージ編集済み 編集者: michi 編集日時 2004-04-07 23:52 ]
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2004-04-08 10:25
XSL Transformations (XSLT) バージョン 1.0
W3C 勧告 1999 年 11月 16 日
7.2 テキストの生成
http://www.infoteria.com/jp/contents/xml-data/REC-xslt-19991116-jpn.htm#section-Creating-Text

内容のテキストをいろいろ書き込んで、出力を
見てみましょう。

スキルアップ/キャリアアップ(JOB@IT)