XSLT フラグメントに対する CSS でのスタイル指定
简体中文 | 繁體中文 | 한국어 | Deutsch | English | Español | Français | Italiano
問題
Macromedia Dreamweaver 8 では、<head></head> タグ内に配置されるのが一般的であるコード (スクリプトやスタイルなど) が XSLT フラグメント内に配置されている場合をサポートしていません。
理由
プロパティインスペクタで XSLT フラグメントに対してスタイル指定すると、ドキュメントの <head> 内にコードを配置するよう Dreamweaver 8 に指示したことになりますが、XSLT フラグメントには <head> タグがありません。
場合によっては、XSL テンプレート定義の前にコードが配置され、無効な XSLT ドキュメントが生成されて、そのフラグメント内では CSS が正常にレンダリングされなくなります (黄色で示した部分が新しいコードです)。
<xsl:template match="/">
<style type="text/css">
<xsl:comment>
.style1 {color: #990000}
</xsl:comment>
</style>
<span class="style1"><xsl:value-of select="specials/menu_item/item"/></span>
</xsl:template>
このようなマークアップ方法は推奨されず、W3C の仕様でもサポートされていません。変換されてダイナミックページの一部を構成する要素となったとき、このコードは <body> に含まれることになります。
このような余分な情報があっても、一般的に使用されているブラウザでは今のところ問題が発生していませんが、望ましくない記述方法であり、ブラウザの今後のバージョンでサポートされる保証もありません。
Dreamweaver では、<body> 内に定義したスタイルはサポートされていないため、デザインビューの表示に反映されません。
また、場合によっては、テンプレートコードの前に Dreamweaver によってスタイルエントリが追加されることもあります (黄色で示した部分が新しいコードです)。
<style type="text/css">
<xsl:comment>
.style1 {color: #990000}
</xsl:comment>
</style>
<xsl:template match="/">
<style type="text/css">
<xsl:comment>
.style1 {color: #990000}
</xsl:comment>
</style>
<span class="style1"gt;<xsl:value-of select="specials/menu_item/item"/></span>
</xsl:template>
このマークアップは無効であり、ブラウザでプレビューしようとすると変換エンジンでエラーが発生します。
回避策
プロパティインスペクタを使用して XSL フラグメントにスタイルを指定しないでください。デザイン時に XSLT フラグメントのスタイルを操作する場合は、デザインタイムスタイルシート* を使用する必要があります。デザインタイムスタイルシートは、同じものをそのまま外部スタイルシート* としてダイナミックサーバーページ (PHP、ColdFusion、ASP) に添付することもできます。
| 更新日 : | 2005 年 10 月 27日 |
|---|
