デザイン定義側から他のスキーマーを読み込んでの利用

「まったく何も分からない・・・」そんなユーザーさんの為のフォーラムです。どんなご質問でもお気軽にどうぞ。
返信
shige
パワーユーザー
記事: 40
登録日時: 2006年4月04日(火) 14:25

デザイン定義側から他のスキーマーを読み込んでの利用

投稿記事 by shige » 2007年10月15日(月) 23:24

いつもお世話になっております。

下記リンク先の「TIPS・活用事例」にある、「メニュー項目選択肢をデザイン定義に読み込む」についての質問です。

▼これです
http://cms.al-design.jp/phpbb/viewtopic.php?t=546

質問の意図をうまく説明する自信がいまいち無いのですが、、、、

TIPSの例は、「AAA」というスキーマ名のデザイン定義から、同じく「AAA」という名前のスキーマを読み込んで再利用という方法になっているかと思います。

・・で、今回やりたいことは、「AAA」というスキーマ名のデザイン定義から、「BBB」というスキーマ名のスキーマを読み込むという事です。
つまり、「AAA.list.default.xsl」から、「BBB.schema.xml」を読み込んで、メニュー項目選択肢などを展開するという方法です。

実際に実験をしてみまして、

例:(以下はAAA.list.default.xslの内容)

コード: 全て選択

<xsl:variable name="pref_list" select="document('../BBB/BBB.schema.xml')/schema/data[@name='pref']/menuitem" />
というように、「BBB.schema.xml」の位置を「AAA.list.default.xsl」から見た相対パスで指定すると、目論見どおりに読み込みが可能だったのですが、これは、CMSDesignerの利用方法として、またはXSLTのあしらい方として、正しい使い方の範疇に収まる処理となりますでしょうか?

心配しているのは、仮にとりあえず動いたとしても、今後のバージョンアップなどでNGになる可能性についてです。


余談ながら、なぜ上記の様な処理を行いたいかと言いますと、
メニュー項目を日本語ページと英語ページで表記を切り替える処理に下記の様な方法での実現が出来ないかと考えました。


スキーマ名「AAA」を顧客リストの定義として、その中に都道府県のメニュー項目を持っているとします。

コード: 全て選択

<data name="pref" type="menu" caption="都道府県" >
<menuitem id="1">北海道</menuitem>
<menuitem id="2">青森県</menuitem>
         ・
         ・
</data>

そしてスキーマ名「BBB」では、上記の都道府県名の日本語表記、英語表記のマスターとして、下記のように定義しておいて、、

コード: 全て選択

<data name="pref" type="menu" caption="都道府県" >
<menuitem id="1">北海道</menuitem>
<menuitem id="2">青森県</menuitem>
         ・
         ・
</data>

<data name="pref_e" type="menu" caption="都道府県" >
<menuitem id="1">Hokkaido</menuitem>
<menuitem id="2">Aomori</menuitem>
         ・
         ・
</data>
「AAA」のデザイン定義側で、質問の処理を用い日本語用デザイン定義と英語用デザイン定義を作って、日本語ページ/英語ページでの都道府県の日本語/英語表記の自動切り替え表示を行いたいのです。

自分で書いていても非常に解りにくい質問で大変申し訳ありませんが、ご回答をお願いできますと幸いです。

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

Re: デザイン定義側から他のスキーマーを読み込んでの利用

投稿記事 by webmaster » 2007年10月16日(火) 10:11

 shigeさん、いつもCMSDのご活用、ありがとうございます。

 ご質問の件ですが、AスキーマのデザインからBスキーマのスキーマファイルを
参照するのに、Aスキーマが存在するパスからの相対パスでBスキーマファイルを
documentを使って読み込む・・・という方法に関して、問題ありません。

 エントリ表示のxslt処理の際には、カレントフォルダ(ディレクトリ)を
そのxslファイルが存在するスキーマフォルダに設定しておりますので、今回の
ような指定が有効なのですが、この仕様につきましては今後も変更の予定は
ありません。

 (可能性は低いですが)もし、何らかの理由で仕様が変更になった場合でも、
別フォルダのスキーマファイルを参照する他の手段を用意したいと思います。

 ただ、相対パスによって上位のフォルダを参照する行為をサーバ側の設定で
禁止している可能性もある為(xsltでそういう制限があるかどうか詳しくないのですが)、
その場合にはサーバ移行時等に問題が生じるケースもあるかもしれません。

shige
パワーユーザー
記事: 40
登録日時: 2006年4月04日(火) 14:25

ご回答ありがとうございます。

投稿記事 by shige » 2007年10月16日(火) 13:15

早速にご回答いただきありがとうございます。
処理方法に問題ないとの事で安心しました。

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

返信