webmasterです。
サーバー環境によっては、エラーは出ないが、どうみてもXSLのデザインが
反映されておらず、文章だけが出力されているようにしか見えないという事象が
発生することがたまにあるようです。
現在、CMSDはXSLTエンジンとして「Sabloton」と「domxml」のどちらかを
自動判別して使っているのですが、サーバによってはどちらかではうまく動いて
どちらかでは動かない、という状況もあるようです。
さらには、domxmlを使う場合でも、古い関数を使った場合はうまくいったり、
新しい関数を使うとうまくいったりするサーバーも存在するようで、すでに自動判別
が困難な状況です。
そこで、サーバーに合わせてXSLTエンジンの使い方を選択できるように
しました。
http://cms.al-design.jp/downloads/cmsd_pre_1_0_0b_1.zip
こちらのファイルを解凍して、
・xmlutil.php.inc
・xmlconfig.php.inc
を、/include フォルダにアップロードしてください。
xmlconfig.php.incを開いて編集すると、XSLTライブラリの種類を指定
することができます。
$gXsltLib に、
0: 自動選択
10: Sablotonを使用
20: domxmlを使用
21: domxmlの古い関数を使用
のいずれかを指定してください(初期値は0です)。
xrea.comレンタルサーバでは、どの指定でもうまくいくサーバと、
21でないとうまくいかないサーバがありました。
サーバだけでなく、XSLの複雑さや変換対象のエントリの内容によっても
相性があるのかもしれません。
詳しい事がわかったらまたご連絡しますが、まずは上記のファイルを
使ってみてください。
尚、この修正は次のバージョンアップに含まれる予定です。
デザイン(XSLT)がどうも反映されていないように見える
モデレータ: webmaster
Re: デザイン(XSLT)がどうも反映されていないように見える
webmasterです。
もう一つ、デザインが反映されていないように見える場合があります。
それは、デザイン定義ファイルの書き方が正しくない場合です。
通常、デザイン定義ファイルがおかしいとエラーメッセージが表示されるのですが、
たまにエントリデータが生のまま出力されて、エラーも表示されないということが
あります。
例えば、エントリ一覧用のデザイン定義ファイルで、
<xsl:template select="entrylist">
<xsl:for-each select="entry">
</xsl:for-each>
</xsl:template>
と書くべき所を、
<xsl:template select="entry"> ←ここ
<xsl:for-each select="entry">
</xsl:for-each>
</xsl:template>
と書いてしまったりすると、環境によってはエントリデータがそのまま表示されて
しまいます。これはXSLTライブラリの仕様(?)のようで、本来はこのような間違った
デザイン定義に対しては何も表示されないのが正しい動作なはずなのですが、
XMLデータが加工前の状態で出力されてしまう為、一見、何が起こっているか
分からない事が多いと思います。
もし、エントリデータがそのまま表示されてしまう方がいらっしゃいましたら、
再度デザイン定義ファイルの書き方を見直してみてください。
もう一つ、デザインが反映されていないように見える場合があります。
それは、デザイン定義ファイルの書き方が正しくない場合です。
通常、デザイン定義ファイルがおかしいとエラーメッセージが表示されるのですが、
たまにエントリデータが生のまま出力されて、エラーも表示されないということが
あります。
例えば、エントリ一覧用のデザイン定義ファイルで、
<xsl:template select="entrylist">
<xsl:for-each select="entry">
</xsl:for-each>
</xsl:template>
と書くべき所を、
<xsl:template select="entry"> ←ここ
<xsl:for-each select="entry">
</xsl:for-each>
</xsl:template>
と書いてしまったりすると、環境によってはエントリデータがそのまま表示されて
しまいます。これはXSLTライブラリの仕様(?)のようで、本来はこのような間違った
デザイン定義に対しては何も表示されないのが正しい動作なはずなのですが、
XMLデータが加工前の状態で出力されてしまう為、一見、何が起こっているか
分からない事が多いと思います。
もし、エントリデータがそのまま表示されてしまう方がいらっしゃいましたら、
再度デザイン定義ファイルの書き方を見直してみてください。