ページ 11

ブラウザで表示できませんというエラーが出ます

Posted: 2007年7月19日(木) 11:54
by ifeel
こんにちは。いつもお世話になっております。

xsl:if で条件を指定したらエラーがでるのではなく、
ページが表示されない状態になってしまいました。
自分ではどの記述のせいなのか見当がつかないので
アドバイスお願いいたします。

全体だと長いので直接関係ある部分のみ記載いたしますが
画像が2点、テキストエリアが1件あり
テキストエリアはhtml1に指定してあります。

【スキーマ】

コード: 全て選択

<data name="faimg01" type="img" width="260" heigth="195" caption="追加画像 基本サイズ:横260px × 縦195px" />
<data name="faimg02" type="img" width="260" heigth="195" caption="追加画像 基本サイズ:横260px × 縦195px" />
<data name="fatxt01" type="textarea" rows="20" cols="60" caption="追加説明文※タグ使用可能" output="html1" />
【xsl】(エントリの記述です)

コード: 全て選択

<xsl:if test="faimg01/text() or faimg02/text() or fatxt01/text()">

<div class="freearea01">
<xsl:if test="faimg01/text()">
<img src="../{faimg01}" alt="" width="{faimg01/@width}" height="{faimg01/@height}" class="mr30" />
</xsl:if>
<xsl:if test="faimg02/text()">
<img src="../{faimg02}" alt="" width="{faimg02/@width}" height="{faimg02/@height}" />
</xsl:if>
<br />
<xsl:value-of select="fatxt01" disable-output-escaping="yes" />
</div>

</xsl:if>
このように記述すると、いつもの上に出てくるエラーが表示されるのではなく
ブラウザのエラー画面「このプログラムではこの Web ページを表示できません」
と出てきてしまいました。

ブラウザはIE7なので、そのせいかなとも思ったのですが
ネットスケープで開いた場合はエントリリストからエントリページへのリンクをクリックすると何も開かない状態になりました。(もちろん元々はクリックすればエントリページが開いていました)


当初は、画像のどちらかあれば、と言う記述をしていたので条件式を
<xsl:if test="faimg01/text() or faimg02/text()">
と書いていたのですが、途中でテキストエリアだけ登録する場合もあることに
気がついて上記のように
<xsl:if test="faimg01/text() or faimg02/text() or fatxt01/text()">
と変更したのですが、xslファイルをアップして表示を確認しようとしたら
ブラウザエラーが出てしまいました。

もとの条件式に戻したら普通に表示されるようになったので
原因はやはりこの部分だとは思うんですが、書き方自体はあっているようにみえるのでどうしてよいのか・・・

ちなみに、html1だからいけないのかと思って
outputの記述と、 disable-output-escaping="yes"の記述を消した場合
<xsl:if test="faimg01/text() or faimg02/text() or fatxt01/text()">
この条件式でも問題なく表示されました。

ケアレスミスなのかもしれませんが、自分ではどこがおかしいのかわからず
困っております。アドバイスよろしくお願いいたします。

Posted: 2007年7月19日(木) 14:09
by tsu
output="text2" か output="html2"
で試してみるとどうなりますか?

他もだめでした

Posted: 2007年7月19日(木) 15:13
by ifeel
tsuさん、こんにちは。

ご指摘の2つは試していなかったので、順番に全種類試してみました。
結果、disable-output-escaping="yes"が書いてあるとエラーがでました。

条件式が
<xsl:if test="faimg01/text() or faimg02/text() or fatxt01/text()">
となっている状態で

スキーマとxsl(disable-output-escaping="yes")の有無を組み合わせたところ
text1 + escaping有 = エラー
text2 + escaping有 = エラー
html1 + escaping有 = エラー
html2 + escaping有 = エラー

本来text1以外であればescapingを記述するのがルールですが
あえて記述しなかった場合
text1 + escaping無し = OK
text2 + escaping無し = OK
html1 + escaping無し = OK
html2 + escaping無し = OK
と言う結果でした。


escapingの書き方の問題??と思ってマニュアルと
1文字ずつ見比べても合っているように見えます。

条件式からはずした場合、html1でescaping有にしても
エラーは出ず、タグもきちんと処理されていました。

過去ログを検索してもそうゆう不具合は見あたらなかったので
何かが間違っているのだとは思うのですが・・・謎です

Re: 他もだめでした

Posted: 2007年7月19日(木) 16:00
by webmaster
 ifeelさん、いつもご質問ありがとうございます。

 これは確かに、謎の現象ですね…CMSDの不具合の可能性もあるかと思います。
 申し訳ありません。

 disable-output-escaping="yes"は、ご存知かと思いますが出力をエスケープ
処理しないという指定です。

 これをnoにするとエラーが出なくて、yesにすると出る、ということは、
fatxt01に入力した内容が関係している可能性があるかもしれません。

 現在は、fatxt01にはどのような文章が入力されているでしょうか。
 これを例えば「a」だけにした場合など、どうなるでしょう。

 以上、お手数ですが、お返事をお待ちしております。

Posted: 2007年7月19日(木) 16:02
by tsu
あ、全部だめですか。。。
一応私の環境で同じ条件でやってみたのですが、問題なく動きました。
http://cmsd.pdy.jp/f_test.php

となると、ありえるのは編集画面より入力された "fatxt01" の内容に問題があるかもしれません。が、、、、。ん〜

Posted: 2007年7月19日(木) 16:04
by tsu
あら、書いてる間に、、、。

Posted: 2007年7月19日(木) 17:10
by ifeel
tsuさん、テストまでしていただきありがとうございます。
webmasterさんにもいつもご面倒お掛けしてすみません。

fatxt01には
<p class="right">文章</p>
や、サーバー上に別途アップした画像を呼びだす記述
<img src="img/img01.jpg">
のような記述をしていました。

imgは
<img src="img/img01.jpg">
<img src="img/img01.jpg" />
の二通り試したのですが、どちらもダメだったので
先ほどのテストをしたとき、fatxt01は空にしてありました。

今は試しに「aaa」にしてみたのですが、やはり同じくエラーが出てしまいます。

あと、書き忘れていましたが
たとえば、ID00005のデータのみfatxt01が入力されているとして
他のID00001などのページも同様のエラーが出てしまいます。

一覧ページは問題なく開くのですが、詳細ページを開こうとすると
どのリンク先を開いてもエラー(ネスケだとクリックしても何も開かない)という状態です。

不具合の可能性もあるかと思いましたが、tsuさんのテストで問題ないなら
それも違いそうですね。。

ちなみにサーバーはロリポップを使っています。

Posted: 2007年7月19日(木) 17:18
by webmaster
 ifeelさん、お返事ありがとうございます。

 fatxt01は空でも数文字でも関係ないということですね。
 お手数をおかけしました。

 ところで、ロリポップさんをお使いなのですね。
 すいません、ひょっとすると、XSLTライブラリの問題かもしれません。

 ロリポップサーバーさんの標準のXSLTライブラリはなぜか他のサーバーで
動作するのにエラーが起きる事が多く、次の対処をお願いしております。
リファレンスマニュアル「7.2 XSLTライブラリが原因のトラブル対処方法」を参考にsite.config.xmlのxsltlibの設定を20か21に設定し、再度お試し下さい。
 以上、何度も申し訳ありませんが、一度お試し頂いてもよろしいでしょうか。

試してみました

Posted: 2007年7月19日(木) 17:40
by ifeel
レスありがとうございます。
site.config.xmlの設定を試してみました。

コード: 全て選択

<entry name="e-shop" schema="shop" caption="商品登録" xslt-libno="21" entrypageurl="http://×××/samplesite/shop/item.html" />
ですが、やはりブラウザエラーのままでした。
一応「21,20,10,0」と設定を変えてはみたのですが
どれもダメでした。。

siteconfigを開いて思い出しましたが
<output encoding="shift_jis" />
も設定しています。
これも関係あるでしょうか?

Posted: 2007年7月19日(木) 18:45
by tsu
私の環境、ばっちり最新版使ってると思い込んでいたんですが、よく見たら1.1.4bでした。
でも、xmlconfig.php.incの設定は自動設定です。サーバは同じロリポップです。もしかすると、微妙に違うかも?。

とりあえず、全部やってみてダメということですので、出力を "EUC-JP" で試すしか無いかもしれないですね、、、、。

Posted: 2007年7月19日(木) 19:34
by ifeel
EUC-JPにして試してみましたがそれでもエラーは変わらずでした

バージョンは1.1.5aで、アップグレードしたのではなく
1.1.5aをインストールしてあります。

そして、tsuさんもロリポップだったのですね!
ではサーバーの問題じゃないということですよね。
うむむ、何だろう。。
複合的な問題なのかもしれませんね。

エラーが出ない条件式で指定できるように
HTMLソースを書き換えるしかないのかもしれないですね。。

Posted: 2007年7月19日(木) 19:42
by tsu
かなり謎な現象ですね。。。

一度、webmasterさんにFTPパス等の情報をメールして調査してもらうと良いかもしれません。
現状だと何が原因でその症状が出るのか分からないですし、、、。

お力になれなくて申し訳ないです。

Posted: 2007年7月19日(木) 22:02
by ifeel
tsuさん
お力になれなくて申し訳ないです。
とんでもありません!
テストまでしていただいて、ありがとうございました。

自分でももう少しソースを見返してみて
それでも駄目そうだったら、一度webmasterさんにメールで詳細をお伝えしてみようと思います。

色々ありがとうございました。

Re: 試してみました

Posted: 2007年7月20日(金) 01:47
by webmaster
 ifeelさん、site.config.xmlの設定ですが、

コード: 全て選択

<entry name="e-shop" schema="shop" caption="商品登録" xslt-libno="21" entrypageurl="http://×××/samplesite/shop/item.html" />
 ではなく、

コード: 全て選択

<output xslt-libno="21" encoding="shift_jis" />
 のように、outputタグの中に書きます。説明不足で申し訳ありません。

 encoding="shift_jis"の指定は、関係があるかもしれませんので、一度外して
頂くと良いかもしれません。

 何度もお手数をおかけしますが、よろしくお願いします。

 これで解決しない場合、FTPのIDとパスワードをお送り頂ければ、こちらで
ログインして調査させて頂きますのでよろしくお願いいたします。

Posted: 2007年7月20日(金) 11:54
by ifeel
うわぁ、Outputの属性値だったのですね。
マニュアル見直したらそう書いてありました :oops:
このスキーマが!と言う思いこみで書いてました・・・

webmasterさんのご指示通り書き直したら
エラーが出なくなりました!

webmasterさん、そしてtsuさんも、どうもありがとうございました!!


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

追加で失礼します。

補足説明ですが、
encoding="shift_jis"
はあってもなくても問題ないようでした。

それと、先ほどの記述をしたことで、エラーは出なくなったのですが
呼び出しているファイル index.php のソースを見たら

<?xml version="1.0" encoding="EUC-JP" standalone="yes"?>

と言うコードも一緒に吐き出されるようになっていました。
(encoding="shift_jis"があってもなくても出てきました)

私の場合、楽をして
<imgA><img01><img02><img03>
と画像を横並びにしていて、
img01〜img03
をCMSで吐き出させていたため、imgAとの間に上記コードが挟まる状態になりました。
そのため、画像が横に収まりきらなくなって、↓こんな感じになってしまいました。
<imgA><img01><img02>
<img03>

今回の場合、imgAごとxsl内に書けば良いので、そのようにしたので
質問ではないのですが
一応、同じ現象が起こった方へのメモとして、追記します。