- - PR -
HTMLからXMLの変換について
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2001-10-25 10:15
「Java Solution FAQ > XMLを活用した業務システムにはどんな事例がありますか?」
のなかで、XSLTをつかってHTMLからXMLに変換している箇所があります。 静的なHTMLをXMLに変換するのであれば簡単に出来そうですが、それだとWebアプリケーションで使う意味がないように思うので、ここでいっているのはFORMタグ内の入力フィールドの値を取得してXMLに変換するイメージだと見えました。 ただ、実際にそれをどうやってサーバにPOSTしているのか想像がつきませんでした。 (普通にサーバ側にFORMデータをPOSTしたデータだと、XSLTを使っても変換できないですよね。) 具体的には、どうやってサーバにデータを渡しているのでしょうか? よろしくお願いします。 |
|
投稿日時: 2001-10-25 12:42
> 「Java Solution FAQ > XMLを活用した業務システムにはどんな事例がありますか?」
> のなかで、XSLTをつかってHTMLからXMLに変換している箇所があります。 これって、内容的に誤りじゃないですか。 「XSLTをつかってXMLからHTMLに変換している」が正しいのでは・・・。 そもそも、XSLTは、XMLに対して変換処理を行う場所ですから。 |
|
投稿日時: 2001-10-25 14:36
>そもそも、XSLTは、XMLに対して変換処理を行う場所ですから。
確かにそうでした。私は、XHTML のようなものを想像してしまっていました。 著者のコメントが欲しいですね。 |
|
投稿日時: 2001-10-25 15:08
@ITの樋口です。
編集担当者と筆者に確認してみますので、しばらくお待ちを。 _________________ 樋口 理 株式会社アットマーク・アイティ |
|
投稿日時: 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があればよいということですが、本当のところはどうでしょうか。 |
|
投稿日時: 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のフィールドとして。 |
|
投稿日時: 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-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
