- PR -

HTMLからXMLの変換について

1
投稿者投稿内容
ふうた
大ベテラン
会議室デビュー日: 2001/08/23
投稿数: 198
お住まい・勤務地: 岡山
投稿日時: 2001-10-25 10:15
「Java Solution FAQ > XMLを活用した業務システムにはどんな事例がありますか?」
のなかで、XSLTをつかってHTMLからXMLに変換している箇所があります。

静的なHTMLをXMLに変換するのであれば簡単に出来そうですが、それだとWebアプリケーションで使う意味がないように思うので、ここでいっているのはFORMタグ内の入力フィールドの値を取得してXMLに変換するイメージだと見えました。

ただ、実際にそれをどうやってサーバにPOSTしているのか想像がつきませんでした。
(普通にサーバ側にFORMデータをPOSTしたデータだと、XSLTを使っても変換できないですよね。)

具体的には、どうやってサーバにデータを渡しているのでしょうか?

よろしくお願いします。

おがわ
大ベテラン
会議室デビュー日: 2001/08/01
投稿数: 199
お住まい・勤務地: 千葉県
投稿日時: 2001-10-25 12:42
> 「Java Solution FAQ > XMLを活用した業務システムにはどんな事例がありますか?」
> のなかで、XSLTをつかってHTMLからXMLに変換している箇所があります。
これって、内容的に誤りじゃないですか。
「XSLTをつかってXMLからHTMLに変換している」が正しいのでは・・・。

そもそも、XSLTは、XMLに対して変換処理を行う場所ですから。
ふうた
大ベテラン
会議室デビュー日: 2001/08/23
投稿数: 198
お住まい・勤務地: 岡山
投稿日時: 2001-10-25 14:36
>そもそも、XSLTは、XMLに対して変換処理を行う場所ですから。

確かにそうでした。私は、XHTML のようなものを想像してしまっていました。

著者のコメントが欲しいですね。

樋口/@IT
@ITスタッフ
会議室デビュー日: 2001/07/26
投稿数: 293
お住まい・勤務地: 東京都
投稿日時: 2001-10-25 15:08
@ITの樋口です。

編集担当者と筆者に確認してみますので、しばらくお待ちを。
_________________
樋口 理
株式会社アットマーク・アイティ
miki
大ベテラン
会議室デビュー日: 2001/09/21
投稿数: 174
お住まい・勤務地: 東京都八王子市
投稿日時: 2001-10-25 15:12
saxonのようなXSLTエンジンは、入力処理をおこなうSAX parserを切り替えることができます。そこで、SAX互換のparserを自前で作れば、XSLTの入力としてXML以外のフォーマットも処理することができます。...というのはsaxonの開発者の書いたXSLT本の受け売りです。

http://users.iclway.co.uk/mhkay/saxon/index.html

もしこれだとすると、SAX互換のHTML parserがあればよいということですが、本当のところはどうでしょうか。
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2001-10-26 14:15
はじめまして、同様な記事もあります
Writing SAX Drivers for Non-XML Data CSV形式もあるらしい
http://www.xml.com/pub/a/2001/09/19/sax-non-xml-data.html
Transforming XML With SAX Filters UNIXのパイプ結合処理イメージ
http://www.xml.com/pub/a/2001/10/10/sax-filters.html

XMLデータモデルの神は様々な姿で現れる、と解釈しています。
ある時は、テキストツールで処理できるテキストとして、
SAXイベントストリームとして(SGMLのESISとかタグ:バリューの対の列として)
DOMの木として(CAD,ワープロ、表計算の内部形式としておなじみ、PDFもそれっぽいです)
あるいは、スキーマ類でマップされたプログラム内の変数やDBのフィールドとして。
tom
@ITエディタ
会議室デビュー日: 2001/07/27
投稿数: 55
お住まい・勤務地: Tokyo
投稿日時: 2001-10-26 18:02
Java Solutionの宮下です。

本件について、筆者からのコメントをいただきました。
参考にしてください。

-------------------------------------------------
もとの記事、質問とも確認しましたが、たしかに説明が足りなかった
かもしれません。掲示板に指摘があるとおりXSLTはHTML文書をXML文書に
変換するものではありません(そもそもこの事例で言えば、そういう操作を
したくても、ブラウザからHTML文書をまるごと送り返すことができません
から不可能ですよね)。ではなぜあのような表現になっているかと申します
と、
HTML→XMLというのはHTMLフォームで入力されたパラメータをXMLに埋め込む
といった意味をあらわしていたからです。ですから、完全にXSLTだけで
全てを行うわけではなく、この部分の処理は、

(1)ブラウザからパラメータが送信される
(2)サーブレット側でパラメータを取得し、変換用のXSLT文書に埋め込む
(3)そのXSLTを内部データ保持用のXMLに適用して、XMLの該当個所に
パラメータの内容を書き込む。

という流れになっています。だったらサーブレットで直接XMLに書き込めば
いいじゃないかという声が聞こえてきそうですが、こうすることで、
パラメータの取得や画面の生成ロジックをサーブレットのコードから分離さ
せ、
メンテナンス性を高めたいという狙いがありました。

はじめからこのくらい書くべきでした。
どうもすみません。
ふうた
大ベテラン
会議室デビュー日: 2001/08/23
投稿数: 198
お住まい・勤務地: 岡山
投稿日時: 2001-10-26 19:53
早速の返答ありがとうございます。

>(1)ブラウザからパラメータが送信される
>(2)サーブレット側でパラメータを取得し、変換用のXSLT文書に埋め込む
>(3)そのXSLTを内部データ保持用のXMLに適用して、XMLの該当個所に
>パラメータの内容を書き込む。

すみません。ここの(2)/(3)のイメージがまだちょっと浮かんできません。
ここに書いてある「変換用のXSLT文書」は、そのままXMLパーサに通せるXSLT文書でなくて
"%1"や"%2"のようなサーブレットで文字列を埋め込む変数のようなものを含んでいるということでしょうか?
サーブレットでこの変数にブラウザからのパラメータを埋め込んでから「内部データ保持用のXML」に適用するということでしょうか?

>という流れになっています。だったらサーブレットで直接XMLに書き込めば
>いいじゃないかという声が聞こえてきそうですが、こうすることで、
>パラメータの取得や画面の生成ロジックをサーブレットのコードから分離さ
>せ、 メンテナンス性を高めたいという狙いがありました。

これについては納得です。出力したいXMLを変更したくなった時は、サーブレットでなくXSLT/XMLを修正すればいいということですね。

ちなみに、ブラウザからのパラメータの数は固定になるのでしょうか?
(ブラウザからのパラメータの名前をparam1,param2のように決まった規則に従ったものにしておけば、可変にも出来そうですが・・・)

理解力不足ですみませんが、ご教授頂ければ幸いです。


P.S. こんなやり方もあるのかといい勉強になりました。
一度テスト的にやってみようと思います。



[ メッセージ編集済み 編集者: ふうた 編集日時 2001-10-26 19:58 ]
1

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