「次のエントリへ」をクリックするとエラーがでます。

「まったく何も分からない・・・」そんなユーザーさんの為のフォーラムです。どんなご質問でもお気軽にどうぞ。
返信
NRG42543
アクティブユーザー
記事: 20
登録日時: 2009年1月26日(月) 21:26

「次のエントリへ」をクリックするとエラーがでます。

投稿記事 by NRG42543 » 2009年1月31日(土) 21:44

一覧表示のphpファイルに、ナビゲーションをつけました。
「次のエントリへ」「前の記事へ」をクリックすると、以下のエラーが表示されます。
-----------------------------------------------------------------------------
Object not found!
要求された URL は本サーバでは見つかりませんでした。 参照元ページのリンクが間違っているか、古くなってしまっているようです。 ページの著者にこのエラーをお知らせ下さい。

サーバーの障害と思われる場合は、ウェブ管理者までご連絡ください。

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

コードは以下のように書いています。
どこがわるいのでしょうか。

<h4>登録内容一覧</h4>
<div class=com>
<cmsd:entrylist name="public_faq" design="default" rows="40" >
<cmsd:group key="shopkind" />
</cmsd:entrylist>

<xsl:for-each select="navi">
<xsl:for-each select="prev">
<a href="{@href}"><<前のページへ</a>|
</xsl:for-each>
<xsl:for-each select="next">
<a href="{@href}">次のページへ>></a>
</xsl:for-each>
</xsl:for-each>

</div>

よろしくお願いします。

tsu
パワーユーザー
記事: 208
登録日時: 2006年1月16日(月) 12:00
お住まい: さいたま

投稿記事 by tsu » 2009年2月05日(木) 09:50

ぱっと見た限りでは、phpファイルにxslのコードを書いてる様に見えるのですが。。。

埋め込みページ〜.php

コード: 全て選択

<h4>登録内容一覧</h4>
<div class=com>
<cmsd:entrylist name="public_faq" design="default" rows="40" >
<cmsd:group key="shopkind" />
</cmsd:entrylist>
</div>
デザイン定義。この例ですと public_faq.list.default.design.xsl かな

コード: 全て選択

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" encoding="UTF-8" omit-xml-declaration="yes" />
<xsl:template match="/entrylist">

<xsl:for-each select="entry">
〜
エントリの表示処理
〜
</xsl:for-each>

<xsl:for-each select="navi">
<xsl:for-each select="prev">
<a href="{@href}"><<前のページへ</a>|
</xsl:for-each>
<xsl:for-each select="next">
<a href="{@href}">次のページへ>></a>
</xsl:for-each>
</xsl:for-each> 

</xsl:template match>
</xsl:stylesheet>
スキーマファイル。この例ですと public_faq.schema.xml かな

コード: 全て選択

<?xml version="1.0" encoding="UTF-8"?>
<schema name="public_faq" caption="xxxxxx" >
    <data name="title" type="text" output="html1" caption="タイトル" />
</schema>

まぁこんな感じでやってみた。と見せてもらえると分かる事も多いかと思います。
遅いレスで申し訳ありませんが、まだ解決してないようでしたら見せていただけると助かります。

NRG42543
アクティブユーザー
記事: 20
登録日時: 2009年1月26日(月) 21:26

投稿記事 by NRG42543 » 2009年2月07日(土) 20:11

tsuさん、返信ありがとうございます。

tsuさんの言われるとおり、PHPファイルに書き込みを行っておりました。

で、いわれる通り、
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" encoding="UTF-8" omit-xml-declaration="yes" />
<xsl:template match="/entrylist">

<xsl:for-each select="entry">

エントリの表示処理

</xsl:for-each>

<xsl:for-each select="navi">
<xsl:for-each select="prev">
<a href="{@href}"><<前のページへ</a>|
</xsl:for-each>
<xsl:for-each select="next">
<a href="{@href}">次のページへ>></a>
</xsl:for-each>
</xsl:for-each>

</xsl:template match>
</xsl:stylesheet>
のようになおしましたが、以下のエラーになってしまいます。
CMS Designer : Xsl Translation error
[message]
XML parser error 4: not well-formed (invalid token) (code: 2)
[XSL]
file://C:\xampp\htdocs\cmsdesigner/config/schema/faq/faq.list.default.design.xsl
[line]
15
[module]
Sablotron
↑のいう、15行目とは、ちょうど<a href="{@href}"><<前のページへ</a>| のあたりです。

どうしたらいかさっぱり見当がつきません。教えていただけますでしょうか。

tsu
パワーユーザー
記事: 208
登録日時: 2006年1月16日(月) 12:00
お住まい: さいたま

投稿記事 by tsu » 2009年2月07日(土) 20:54

ナビゲーションを出力させる場合の(navigation="on")が抜けておりました。すいません。
あと、cmsd:groupが指定されていましたが、分かりやすく書くため省いてあります。
下記コードでもう一度お試しください。
※エントリ一覧用とエントリ1件分と2タイプあります。出来ればどちらも試してみてください。

【表示させるページ(エントリ一覧)】
ファイル名:public_faq_list.php

コード: 全て選択

<h4>登録内容一覧</h4>
<div class="com">
<cmsd:entrylist name="public_faq" design="default" navigation="on" />
</div>
【表示させるページ(エントリ1件分)】
ファイル名:public_faq_one.php

コード: 全て選択

<h4>登録内容一覧</h4>
<div class="com">
<cmsd:entry name="public_faq" design="default" navigation="on" />
</div>
【デザイン定義ファイル(エントリ一覧)】
ファイル名:public_faq.list.default.design.xsl

コード: 全て選択

<?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="/entrylist">

<xsl:for-each select="entry">
<dl>
<dt><xsl:value-of select="title" /></dt>
<dd><xsl:value-of select="description" /></dd>
</dl>
</xsl:for-each>

<div>
<xsl:for-each select="navi">
<xsl:for-each select="prev">
<a href="{@href}"><<前のページへ</a>|
</xsl:for-each>
<xsl:for-each select="next">
<a href="{@href}">次のページへ>></a>
</xsl:for-each>
</xsl:for-each>
</div>

</xsl:template match>
</xsl:stylesheet>
【デザイン定義ファイル】
ファイル名:public_faq.default.design.xsl

コード: 全て選択

<?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">

<dl>
<dt><xsl:value-of select="title" /></dt>
<dd><xsl:value-of select="description" /></dd>
</dl>

<div>
<xsl:for-each select="navi">
<xsl:for-each select="prev">
<a href="{@href}"><<前のページへ</a>|
</xsl:for-each>
<xsl:for-each select="next">
<a href="{@href}">次のページへ>></a>
</xsl:for-each>
</xsl:for-each>
</div>

</xsl:template match>
</xsl:stylesheet>
【スキーマファイル】
ファイル名:public_faq.schema.xml

コード: 全て選択

<?xml version="1.0" encoding="UTF-8"?>
<schema name="public_faq" caption="xxxxxx" >
    <data name="title" type="text" output="html1" caption="タイトル" />
    <data name="description" type="textarea" output="html1" caption="本文" />
</schema>
追記
dlタグの閉じタグがdivになってた。・゚・(ノ∀`)・゚・。
最後に編集したユーザー tsu on 2009年2月07日(土) 21:33 [ 編集 1 回目 ]

NRG42543
アクティブユーザー
記事: 20
登録日時: 2009年1月26日(月) 21:26

投稿記事 by NRG42543 » 2009年2月07日(土) 21:32

tsuさん、ありがとうございます。
ですが、状況変わず。です。

ご指示のとおり、public_faq_list.php を以下のとおりに、
<h4>登録内容一覧</h4>
<div class=com>
<cmsd:entrylist name="public_faq" design="default" rows="40" navigation="on" />
<cmsd:group key="shopkind" />
</cmsd:entrylist>

</div>
public_faq.list.default.design.xsl を以下のとおりにしていますが、
<?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="/entrylist">

<xsl:for-each select="entry">
<a href="faq.php{@href}">
<xsl:value-of select="title" />
</a><span class="New"><xsl:if test="@daysago<10">New!</xsl:if></span>
<br />

</xsl:for-each>

<xsl:for-each select="navi">
<xsl:for-each select="prev">
<a href="{@href}"><<前のページへ</a>|
</xsl:for-each>
<xsl:for-each select="next">
<a href="{@href}">次のページへ>></a>
</xsl:for-each>
</xsl:for-each>

</xsl:template>
</xsl:stylesheet>

CMS Designer : Xsl Translation error
[message]
XML parser error 4: not well-formed (invalid token) (code: 2)
[XSL]
file://C:\xampp\htdocs\cmsdesigner/config/schema/faq/faq.list.default.design.xsl
[line]
16
[module]
Sablotron

と表示されます。<a href="{@href}"><<前のページへ</a>|の部分でエラーとか言います。なぜでしょう・・・

tsu
パワーユーザー
記事: 208
登録日時: 2006年1月16日(月) 12:00
お住まい: さいたま

投稿記事 by tsu » 2009年2月07日(土) 21:58

むむう。

ひょっとして .xsl ファイルの文字コードがutf-8以外とか?

こちらの環境では問題なく動くのですが・・・

NRG42543
アクティブユーザー
記事: 20
登録日時: 2009年1月26日(月) 21:26

投稿記事 by NRG42543 » 2009年2月07日(土) 22:41

tsuさん、たびたびのご回答、ありがとうございます。

できました〜 :D
えっと、結論から申し上げますと、スキーマのoutputが、txt2になってました。
それでHTML部分でエラーが出ていたんだと思います。

お騒がせしました。

でも、でも、別の事象が発生しました・・・・。

えっと実はTOPページに動的なリストのリンクをつけているんですが、
(カテゴリ別に分けたい)

この件が解消する前は、ちゃんと項目別に表示されていたんですけど、
無視されて全部のエントリ内容が表示されてしまうことに・・・;;

やりたいのは、カテゴリAの、一覧を表示させ、40件以上のエントリが存在する場合は
「次へ」をクリックする。。。的なことなんですが;;

#えっとコレ別スレ立てたほうがいいですか?

でもでも、お陰さまで一歩前進しました。ありがとうございます。

tsu
パワーユーザー
記事: 208
登録日時: 2006年1月16日(月) 12:00
お住まい: さいたま

投稿記事 by tsu » 2009年2月08日(日) 05:37

やっとログインできた。。。

ちょっと簡潔に書きます。

埋め込みページ

コード: 全て選択

<cmsd:entrylist name="public_faq" design="default" rows="40" navigation="on">
<cmsd:group key="shopkind" />
</cmsd:entrylist>
デザイン定義

コード: 全て選択

<?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="/entrylist">

<xsl:for-each select="entry">
<a href="faq.php{@href}">
<xsl:value-of select="title" />
</a><span class="New"><xsl:if test="@daysago<10">New!</xsl:if></span>
<br />

</xsl:for-each>

<!--/*************************
*page要素の数が1の場合はナビを表示しない
*<xsl:if test="not(navi/page = '1')">
*多分こんなんでもいけそうですが、
*最初に思い浮かんだのがcountだったのでcountにしました。
*****************************/-->

<xsl:if test="not(count(navi/page)='1')">
<xsl:for-each select="navi">
<xsl:for-each select="prev">
<a href="{@href}"><<前のページへ</a>|
</xsl:for-each>
<xsl:for-each select="next">
<a href="{@href}">次のページへ>></a>
</xsl:for-each>
</xsl:for-each>
</xsl:if>

</xsl:template>
</xsl:stylesheet>
上記を、完全にコピペで試してください。
で、〜.php?shopkind=(絞り込む値)もしくはパラメータなしでアクセスしてみてください。

埋め込みページで記述ミスと思われる部分を修正してあります。

コード: 全て選択

<cmsd:entrylist name="public_faq" design="default" rows="40" navigation="on" />←ここで閉じてしまうと文法エラーになります

コード: 全て選択

<cmsd:entrylist name="public_faq" design="default" rows="40" navigation="on">


整形前のxmlデータがこの様に出ています。参考までにどうぞ。

コード: 全て選択

<entrylist>
  <entry id="xxxx"〜各属性省略>
     各要素省略
  </entry>
  <entry id="xxxx"〜各属性省略>
     各要素省略
  </entry>
  <navi position="1" allcount="12" maxpage="4" maxpagerows="3">
    <page id="1" href="?pageno=1"/>
    <page id="2" href="?pageno=2"/>
    <page id="3" href="?pageno=3"/>
    <page id="4" href="?pageno=4"/>
    <next id="2" href="?pageno=2"/>
  </navi>
</entrylist>
そのつどnaviやpageなどを出力しているようなので結構使いやすいですね。

返信