CGIが正常に動作しません。

「まったく何も分からない・・・」そんなユーザーさんの為のフォーラムです。どんなご質問でもお気軽にどうぞ。
返信
KAIRI
記事: 3
登録日時: 2005年12月07日(水) 12:36

CGIが正常に動作しません。

投稿記事 by KAIRI » 2006年1月07日(土) 01:11

あけましておめでとうございます。
本年も webmaster 様にはご迷惑をお掛けするかと思いますが、よろしくお願いいたします。

質問させていただきたいことがあり、書き込みさせていただきました。
サイトにてCGIのアクセス解析を設置しております。
phpファイルにHTMLに組み込んでいたものと同様に組み込んだところ正常に動作いたしました。
が、デザイン定義ファイル(xslファイル)に組み込むと正常に動作しません。
組み込むのは下記のものです。

コード: 全て選択

<SCRIPT language="JavaScript1.2">
<!--
document.write("<IMG src='../***/***/access/accimg.cgi?id={ashiatoID}&img=1&scr=", screen.width, "x", screen.height, "x", screen.colorDepth, "&ref=", escape(parent.document.referrer), "' border="0" width="1" height="1" />");
//-->
</SCRIPT>
<NOSCRIPT>
<IMG src="../***/***/access/accimg.cgi?id={ashiatoID}&img=1&ref=noScript" border="0" width="1" height="1" />
</NOSCRIPT>
「ashiatoID」はスキーマにて設定し、文字が入るようにしております。
正常に動作しない、と言うのはページを開いてソースをみると

コード: 全て選択

<SCRIPT language="JavaScript1.2"></SCRIPT>
<NOSCRIPT>
<IMG src="../***/***/access/accimg.cgi?id={ashiatoID}&img=1&ref=noScript" border="0" width="1" height="1" />
</NOSCRIPT>
という形になっています。
ページ自体にエラーは出ないのですが、JavaScriptの部分がなくなってしまいます。
コメントタグ「<!-- ** //-->」を外すとソースにJavaScriptの部分は表示されるのですが、空白と”(ダブルクォーテーション)の部分が文字化けしています。
xslファイルで”(ダブルクォーテーション)を「"」としてみても同じ結果でした。
またCMSDと離れた質問をしているとは思うのですが、またお力を貸していただければと思っております。
お忙しいかとは思いますが、よろしくお願いいたします。

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

Re: CGIが正常に動作しません。

投稿記事 by webmaster » 2006年1月09日(月) 17:36

 webmasterです。お返事が遅くなり申し訳ありません。

 この辺については詳しく解説しておらず、いろいろとご不便をおかけしております。m(_ _)m

 XSLT上では、<や>はタグとして扱われるのですが、この例の<や>は、javascript
中のパラメータであり、このXML上ではタグとしては扱われていない為、「&lt;」、
「&gt;」のような「実体参照文字列」に変換する必要があります。

 javascirpt中のパラメータ以外にも、<!--や-->についても、デザイン定義自体の
コメントとして扱われてしまうため、「<!--」は「&lt;!--」、「//-->」は「//--&gt;」
のようにしてみて下さい。m(_ _)m

 もう1点、{ashiatoID}という部分は、javascriptが実行された後は確かにタグの
属性中に配置されることになるのですが、この時点ではXSLTからみると単なる
文字列の一部ですので、普通に<xsl:value-of select="ashiatoID" />として
頂く必要があります。

 以上を踏まえて、修正してみました。

コード: 全て選択

<SCRIPT language="JavaScript1.2">
<!--
document.write('<IMG src="../***/***/access/accimg.cgi?id=<xsl:value-of select="ashiatoID" />&img=1&scr=',
 screen.width, 'x', screen.height, 'x', screen.colorDepth, '&ref=', escape(parent.document.referrer), '" border="0" width="1" height="1" />'); 
//-->
</SCRIPT> 
<NOSCRIPT> 
<IMG src="../***/***/access/accimg.cgi?id={ashiatoID}&img=1&ref=noScript" border="0" width="1" height="1" /> 
</NOSCRIPT>
 元のソース中で、シングルクォートとダブルクォートが逆になっている部分が
ありましたので、そちらも修正させて頂きました。javascript的にはどちらでも
良いので、もし問題があったら戻してくださいませ。

 以上、よろしければお試しください。

返信