ページ 11

listの改行を消すには?

Posted: 2007年7月02日(月) 19:13
by mason
はじめまして。いつもお世話になっております。

現在リストでメニューを作っています。
ところが、IEのバグで<li>〜</li>の後に改行を入れるとlistの下に
3px程の隙間が空いてしまうことがわかり、改行をしないように
<li>〜</li>の記述をしているxslファイルの改行を全て消しましたが、
どうしても改行が表示されてしまいます。
何か対策がありましたら、教えていただけませんでしょうか?
改行になってしまうのは下記の<cmsd:entrylist name="aaa" design="menu" />の部分です。

お手数をお掛け致しますが、宜しくお願い致します。


メニュー部分のphpは以下となっています。
---------------------------------------------------------------------------
<ul>
<li>●●●<ul>
<cmsd:entrylist name="aaa" design="menu" /></ul></li>
<li>●●●</li>
<li>●●●</li>
</ul>
---------------------------------------------------------------------------


aaa.list.menu.design.xslの記述内容は以下となっています。
(改行をしないと読みにくいため、改行をしているものを書いています)
---------------------------------------------------------------------------

<xsl:template match="/entrylist">
<xsl:for-each select="entry">
<xsl:if test="not(@current)">
<li><a href="a.php{@href}">
<xsl:value-of select="title" disable-output-escaping="yes" /></a></li></xsl:if>
<xsl:if test="@current">
<li><strong><a href="a.php{@href}">
<xsl:value-of select="title" disable-output-escaping="yes" /></a></strong></li>
</xsl:if>
</xsl:for-each>
</xsl:template>

---------------------------------------------------------------------------

Posted: 2007年7月03日(火) 10:17
by tsu
よく理解出来てないかもしれませんが一応。

XSLTの<xsl:output〜の属性に indent="no" を追加してやるとXSLTで書いた部分はソース上改行はされません。

コード: 全て選択

<xsl:output method="html" encoding="UTF-8" omit-xml-declaration="yes" indent="no" />
それかdl〜dt,ddタグを使って回避するとか。

それにしてもIE6ってバグだらけですね(苦笑)

Posted: 2007年7月03日(火) 10:44
by mason
tsuさんご連絡ありがとうございます。

教えていただいた方法で試したところ、改行が消えました!
すごく助かりました!ありがとうございました :D

Posted: 2007年7月05日(木) 02:56
by tsu
あ、うまくいって良かったですね!

私の場合、変換後のソースが自分の思った通りに行かないので基本はインデントさせません。
ただ、html2などで改行すると<br />が出力されてしまいなんか嫌な感じが残ります。
なんかいい方法ないかな、、、。