- - PR -
XSLTで改行を反映させて表示したい
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 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関数などいろいろやってみましたが、だめでした。 よろしくお願いいたします。 | ||||
|
投稿日時: 2004-04-07 18:53
こんばんは最近XSLTをちょっと勉強したので答えられる範囲でお答えします。
まず文字列が改行を含んでいるかどうかは contains(文字列,'
') で、できるはずです。 ただしこれで検出できるのは文字列内でも'
'として改行を行った時です。 普通に改行('#xA')をしただけではXMLparserで空白類文字('#x20')に変換されてしまい、 XSLTでは改行とみなされなくなるので注意してください。 | ||||
|
投稿日時: 2004-04-07 19:37
であれば、<pre>タグで囲んでしまうというのはダメでしょうか? | ||||
|
投稿日時: 2004-04-07 20:00
>kumaさん
ありがとうございます。 改行の探し方はわかりました! しかし、改行を見つけた部分に<br>タグを入れたいんですよね…。つまり改行して表示させたいわけです。 translate関数では、置換対象1文字に対し1文字分しか置換できないようですし、何か良い方法はないものでしょうか・・・・ >Cluster ありがとうございます。 <pre>はちょっとナシでお願いします・・。 | ||||
|
投稿日時: 2004-04-07 22:06
ども、ほむらです。
えーと。たしかいったん分割してつなげるときに間に挟むという常套手段を 使用するしかなかったと思います。 #分割と言うよりは途中から途中って感じ やったことないのですけど。。 たしかこの会議室でも話題になったことがあるような。。。 #ごめんなさい、4月入ってから妙に忙しくて今感性で書いてます(笑 #もしかしたら何かと勘違いしているかも | ||||
|
投稿日時: 2004-04-07 23:07
>えーと。たしかいったん分割してつなげるときに間に挟むという常套手段を
使用するしかなかったと思います。 はい、末尾再帰を書く羽目になりますね。 もう一つの方法は、XSLTの拡張関数を書いて それで<BR/>に置換して、disable-output-escape で書き出す方向です。 | ||||
|
投稿日時: 2004-04-07 23:50
ほむらさん、MMXさん、ありがとうございます。
やはりその方法しかないのですかね・・・。 試しに再帰処理で、substring-beforeやらsubstring-afterやらをがしがし使ったらできました。 うーーーん、面倒ですね。。。 >MMXさん disable-output-escape とはどのようなものですか?? もし良かったら教えてください・・! [ メッセージ編集済み 編集者: michi 編集日時 2004-04-07 23:52 ] | ||||
|
投稿日時: 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 内容のテキストをいろいろ書き込んで、出力を 見てみましょう。 |