- PR -

1つのXMLで表示を切り替え

1
投稿者投稿内容
チョップ
会議室デビュー日: 2003/05/29
投稿数: 3
投稿日時: 2004-03-09 11:27
はじめまして、チョップと申します。

早速ですが、質問させて下さい。

文章と画像情報のデータが書き込まれた1つのXMLデータを、
XSLTでHTMLに変換し、1ページ目に文章を、2ページ目に画像を
表示させたいと思っています。

XSLTは1ページ目を表示させるXSLT(page1.xsl)と、
2ページ目を表示させるXSLT(page2.xsl)を作成しました。

そこで、2ページ目を表示させる方法がわかりません。
2ページ目はリンクを使って表示させたいです。

JavaScript以外で何かよい方法を探しています。
アドバイス、よろしくお願いします。
ほむら
ぬし
会議室デビュー日: 2003/02/28
投稿数: 583
お住まい・勤務地: 東京都
投稿日時: 2004-03-09 11:58
ども、ほむらです。
--------
チョップ氏へ
とりあえず環境はどうなっていますか?

JavaScriptを使用せずにクライアントサイドで
同じXML文書に異なるXSLTを関連付けることはできないと思います。

手段としては二つ、
1.サーバーサイドで変換する。
2.大元のXML文書とは別にXSLT1・XSLT2を別々に処理する空のXML文書を作って
  大元のXML文書はXSLTの中でインポートする形。

僕が思い浮かぶのはこんなところでしょうか。
どちらにしても処理としては重いので要注意です。

#修正がてら追記
#あとはCGIでXSLTを出力という手もあるか。。。(ソースが見るの怖いけど(笑)


[ メッセージ編集済み 編集者: ほむら 編集日時 2004-03-09 12:01 ]
Gordie
ベテラン
会議室デビュー日: 2003/10/14
投稿数: 64
投稿日時: 2004-03-09 12:30
大元のXMLにサーバーサイドでPIを挿入、という手はどうでしょうか?
チョップ
会議室デビュー日: 2003/05/29
投稿数: 3
投稿日時: 2004-03-09 18:06
ほむらさん、Gordieさん、返信ありがとうございました。

すみません。書き忘れてました。
OS:Windows2000
ブラウザ:IE6.0
サーバーサイドで処理を行っています。

ほむらさん

サーバーサイドで変換する場合、例えばこのようにXSLTを書くと、
------------------page1.xsl---------------------------
<?xml version="1.0" encoding="EUC-JP"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/
1999/XSL/Transform">
<xsl:output method="html" encoding="EUC-JP" />

<xsl:template match="/">
<html>
<head>
<title></title>
</head>
<body>
<a href="xxxxx.xxx">画像表示</a>
        ↑
    この部分をどのように指定すればいいのでしょうか?
page2.xslと書くと変換されずそのまま表示されてしまいますし・・・。
例えば、「xxxxx.cgi」として何かCGIを指定して、そのCGIの中で2ページ目の
XSLTと大元のXMLを関連付ける処理を行なったほうがよいのでしょうか?


Gordieさん

引用:
大元のXMLにサーバーサイドでPIを挿入、という手はどうでしょうか?


PIというのはこの事でしょうか?↓
<?xml-stylesheet href="page2.xsl" type="text/xsl"?>
2ページ目に飛ぶリンクをクリックした時に、大元のXMLにこのPIを挿入する
処理を行って、XMLを参照するという事でしょうか?(間違っていたらすみません。)
なるほど、そういう方法もありますね。もうしばらく考えてみます。


なにぶんXSLTをはじめて2週間ぐらいなので、見当違いの事を言っていると思いますが、
間違いを指摘していただけると幸いです。

[ メッセージ編集済み 編集者: チョップ 編集日時 2004-03-09 18:21 ]

[ メッセージ編集済み 編集者: チョップ 編集日時 2004-03-09 18:30 ]
ほむら
ぬし
会議室デビュー日: 2003/02/28
投稿数: 583
お住まい・勤務地: 東京都
投稿日時: 2004-03-10 10:19
ども、ほむらです。

サーバーサイドの変換は僕もよくわかってないのですけど。
要するにXML文書にスタイルを直接指定するんじゃなくて
MSXSLみたいな使い方をすればいいんじゃないかなということで。

CGIのほうは、QUERY_STRINGあたりでXSLTを選択する形にして
XML文書を垂れ流す感じですね〜
XML文書でクエリデータを受け渡し(扱うこと)ができればいいんですけど。。。
聞いたことありませんし。

#XSLT内部でXML文書を読み込んだほうが無難っぽい(笑
#XPathのdocument関数を参照
チョップ
会議室デビュー日: 2003/05/29
投稿数: 3
投稿日時: 2004-03-10 20:59
ほむらさん、ありがとうございます。

引用:

ほむらさんの書き込み (2004-03-10 10:19) より:

#XSLT内部でXML文書を読み込んだほうが無難っぽい(笑
#XPathのdocument関数を参照


この方法で無難にできそうですね。
ほむらさんがおっしゃるように、空のXML文書を作って
大元のXML文書からdocument関数で読み込むようにしようと
思います。

ほむらさん、Gordieさん、ほんとにありがとうございました!
1

スキルアップ/キャリアアップ(JOB@IT)