- PR -

XSLTでの半角スペース

投稿者投稿内容
ぽぽぴ
常連さん
会議室デビュー日: 2005/06/17
投稿数: 23
投稿日時: 2005-06-17 11:36
はじめまして。

半角スペースを含むXMLデータをXSLTで、表示させた場合、
半角スペースが表示されません。文字と文字の間の半角スペースは、
表示されますが、文字と文字の間に複数の半角スペースがあった場合、
1つの半角スペースだけになってしまいます。
<PRE>タグは、使わずに、データどおりの半角スペース表示させる良い方法は
ないのでしょうか?どうぞ宜しくお願い致します。

ちなみに、vb.net(ASP)を使用して、開発しております。
説明不足の点がございましたら、ご指摘ください。
るぱん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 1370
投稿日時: 2005-06-17 11:39
るぱんです。

「&nbsp;」(半角にして使ってください)

に置換ではだめでしょうか?
ぽぽぴ
常連さん
会議室デビュー日: 2005/06/17
投稿数: 23
投稿日時: 2005-06-17 11:57
迅速な返信ありがとうございます。
置換というのは、XSLTで、行うのでしょうか?
勉強不足で申し訳ございません。。
もし、よろしければ、詳しく教えていただけないでしょうか?

MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2005-06-17 14:31
XSLT の質問ではありませんね
コード:
<HTML><HEAD><TITLE>CSS ◆ white-space:space (C1/e6/N4)</TITLE></HEAD>
<BODY STYLE=white-space:pre;>    -  -  -   
FKWHFK
KWDHFK
    --------    

JDJDJDJJDJ

とほほのスタイルシート入門
トップ > スタイルシート入門 > リファレンス
http://www.tohoho-web.com/css/reference.htm#white-space
</BODY></HTML>

ぽぽぴ
常連さん
会議室デビュー日: 2005/06/17
投稿数: 23
投稿日時: 2005-06-17 14:57
MMXさん、返信ありがとうございます。
XSLTじゃないんですね。勘違いして、申し訳御座いませんでした。

MMXさんの教えてくれたHPを参考に

<div style="MARGIN: 0em 0em 0em 0em; BORDER-TOP:
1px solid gray; BORDER-RIGHT: 1px solid gray; BORDER-LEFT: 1px solid gray;
WIDTH: 633px; MIN-HEIGHT: 100px; TEXT-ALIGN: left; PADDING: 0.5em 0.5em; white-space: pre">
<xsl:value-of select="topic" />

このように変更してみたのですが、うまくいきません。。
どこが間違っているのか教えていただけないでしょうか。



るぱんさん

るぱんさんの助言を頼りに、いろいろ調べてみました。
<xsl:template name="space">
<xsl:param name="value" select="topic"/>
<xsl:choose>
<xsl:when test="contains($value,'&#x20;')">
<xsl:value-of select="substring-before($value,'&#x20;')"/>

<xsl:text>&nbsp;</xsl:text>   ←ここ

<xsl:call-template name="space">
<xsl:with-param name="value" select="substring-after($value,'&#x20;')"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$value"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>

このように記述してみたのですが、
矢印の部分にて、「宣言されていないエンティティ 'nbsp' への参照です。」
というエラーが発生してしまいます。
あの部分になにをかけばいいのかわかりません。。
ご教授宜しくお願い致します。




87
会議室デビュー日: 2005/06/17
投稿数: 13
投稿日時: 2005-06-17 15:15
はじめまして。

「&nbsp;」の代わりに、
「&#160;」ではどうでしょうか。
ぽぽぴ
常連さん
会議室デビュー日: 2005/06/17
投稿数: 23
投稿日時: 2005-06-17 15:33
未記入さん、返信ありがとうございます。

&#160;に変更し、実行してみたところ、
半角スペースのさらに半分のスペースに置換されましたので、
&#160;&#160;とふたつ並べて、解決致しました。
ありがとうございました。
るぱん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 1370
投稿日時: 2005-06-17 15:46
るぱんです。

本来はVB側で加工してやるのがいいものではないかと。
WEBとの事なので、TIMESTAMPを頭に付けたファイル名で
RootElement以下をReplace関数使いながら書き出して、
もう一回別ドキュメントで開けばいいのかな?

Replace(対象文字列," ", "&nbsp;")
VBは&も;も特殊にしてないからできそう・・・?

XMLの利用法について
個人的な主観で
XSLTの分野は「簡単な構造変換にしか使わない」
と言う信条があるので、
VBでの加工をお勧めしています。

理由は、デバッグできないので、変更がかかるともろいからです。

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