ページ 11

出力させたimgタグに閉じタグが付かない

Posted: 2011年8月07日(日) 23:59
by kuma9th
お世話になっております。

現象ですが、type="img"で作成したフォームに画像をアップしているのですが、
デザインファイルに<img src="{hoge}" width="{hoge/@width}" height="{hoge/@height}" alt="{hoge/@alt}" />と
している箇所で、実際に出力されたソースをみると、以下のようになります。

コード: 全て選択

<img src="ファイルパス" width="画像幅" height="画像高さ" alt="テキストテキストテキスト">
このように閉じタグが付きません。

===================================================================
【スキーマファイル】

コード: 全て選択

<?xml version="1.0" encoding="UTF-8"?>
<schema name="single" caption="シングル" title="singlettl">
	<data name="singlettl" type="text" caption="名前" output="text1" />
	<data name="katch" type="img" caption="画像1" alt="True" />
	<data name="product" type="img" caption="画像2" alt="True" />
	<data name="middlettl" type="text" caption="中見出し" output="text1" />
	<data name="content" type="textarea" caption="本文" output="text2" cols="80" rows="20" />
</schema>
===================================================================
【デザインファイル】 (スキーマファイル5行目に対するデザイン)

コード: 全て選択

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" encoding="EUC-JP" omit-xml-declaration="yes" />
<xsl:template match="/entry">
	<img src="{product}" width="{product/@width}" height="{product/@height}" alt="{product/@alt}" />
</xsl:template>
</xsl:stylesheet>
===================================================================
【出力PHPファイル】

コード: 全て選択

<?php require( "core/include/view.php.inc" ); // encoding="euc-jp" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<title>????</title>
<link rel="stylesheet" href="common/css/style.css" type="text/css" media="all" />
<link rel="index" title="" href="index.html" />
</head>
<body>
<div id="container">
	<div>
		<p id="product"><cmsd:entry name="single" design="product" /></p>
	</div>
</div>
</body>
</html>
<?php cmsd_end_template(); ?>
===================================================================
※PHPファイルの内容は不具合の該当する箇所のみにしてあります

過去ログを探してみたのですが見つからなかったので質問をさせていただきました。
どうぞ宜しくお願い申し上げます。

Re: 出力させたimgタグに閉じタグが付かない

Posted: 2011年8月08日(月) 19:58
by miya
kuma9thさん、こんにちは。

デザインファイルの

コード: 全て選択

<xsl:output method="html" encoding="EUC-JP" omit-xml-declaration="yes" />
【 method="html" 】を

【 method="xhtml" 】

に変更してみてください。

おそらく、これで閉じタグが付くと思います :D

Re: 出力させたimgタグに閉じタグが付かない

Posted: 2011年8月09日(火) 20:09
by webmaster
kuma9thさん、ご質問ありがとうございます。また、miyaさん、いつも丁寧なご回答、ありがとうございます。

miyaさんの回答してくださった方法が正式な方法となります。もしそれでうまくいかなかった場合、"xhtml"ではなく"xml"にして再度お試しください。

それでも上手くいかなかった場合、またご連絡頂ければ幸いです。

Re: 出力させたimgタグに閉じタグが付かない

Posted: 2011年8月10日(水) 07:37
by kuma9th
miyaさま webmasterさま

ご回答いただきましてありがとうございます。
今回、1つのphpファイルに対して、複数のデザインファイルを読み込んでおります。

-----------------------------------------
デザインファイル?
-----------------------------------------
デザインファイル?
-----------------------------------------
デザインファイル?
-----------------------------------------

といった具合です。
例えば?のデザインファイルをxhtmlにしますと、続く?の箇所に、以下のエラーが表示されました。

コード: 全て選択

CMSD tag error. tag='<cmsd:entry name="single" design="hoge" />', errormessage = compilation error: file file:///中略/config/schema/single/ line 3 element output
?の部分については無事に閉じタグが出力されておりました。

続いて、webmasterさまからのご回答のxmlへ変更したところ、
無事にエラーも消え、閉じタグも出力されておりました。

miyaさま webmasterさま 大変ありがとうございました。
とても助かりました。
また行き詰った際にはご相談させていただきます。
どうぞ宜しくお願い申し上げます。

Re: 出力させたimgタグに閉じタグが付かない

Posted: 2011年8月17日(水) 15:30
by webmaster
"xml"の指定でエラーが出なくなったとのことで、ご報告ありがとうございました。

せっかくですので、今後の参考として"xhtml"と"xml"の指定の違いについて説明させて頂きます。

"Xhtml"の指定が可能かどうかは、サーバにインストールされているXSLライブラリ(のうち、PHPが使用しているもの)に依存します。
一部のXSLライブラリのみが"xhtml"の指定に対応しており、それ以外は"xml"が一番近い結果を得ることができます。

ただ、"xml"の指定だと、XSLライブラリが出力するHTMLコードが場合によって古いブラウザで問題が起こるHTMLが出力されるケースがあり、それに対してはCMS Designer内部で強制的にXSLライブラリの出力結果を変換して対応しております。

よって、現状としては、XHTMLとして出力したい場合には"xml"をとりあえず使って頂き、それで問題があった場合には、"xhtml"指定を試してみる、というやり方を推奨しております。

この件についてご質問などありましたら、またお気軽にお尋ねください。