XSLTとCGIの使い分け [XML]
古典テキストをオンラインで編集するためのシステムを考え中。
最初、できるだけXSLTで処理しようと思っていたが、実際に考え出すと、ユーザーへの様々な便宜を提供するためには、CGIなりPHPなりで処理を書いた方が楽だと思うようになった。要するに、XMLのデータをXHTMLとして表示する部分のみをXSLTに受け持たせ、それ以外のシステム全体のロジックはCGIまたはPHPで構築した方がよさそうだ。
たとえば、ユーザーが、テキストのある部分(それをどのような単位で提供するかは、また後で考えることにする。)を編集したいと思ったとき、そのテキスト部分の直ぐ上に[編集]というリンクを作っておき、そこをクリックしたら、別のウィンドウに、そのテキスト部分のXMLのソースが、編集できるような形で表示されるようにする。ちょうど、このブログで、今読んでいる記事を編集しようとする場合、タイトルの横に現れている[編集]というリンクをクリックすると、編集用のフォームが開き、その記事がテキスト・エリアに読み込まれているようなものだ。
これを実現するには、その[編集]というリンクがCGIを呼び出すリンクになっていて、テキストのその部分を特定するアドレスを含んでいるようにする。そして、それを手縢りにCGIまたはPHPが、元のXMLのデータからその部分のみを取り出して、別ウィンドウに表示する。その編集が終わったら、フォームの送信ボタンで、ふたたびCGIまはたPHPを呼び出し、編集済みデータを渡す。CGIスクリプトは、そのデータで元のXMLのデータの対応部分を更新する。その後、元のXMLの表示を再読込して更新する。
XSLTによるXMLのXHTMLへの変換は、表示するときにではなく、予めXMLのデータが更新されたときにXHTMLを生成してしまうようにすれば、パフォーマンスが改善するので、部分テキストの更新の場合も、XMLのデータの更新の直後にそれをXSLTでXHTMLへと変換してしまっておく。変換そのものは、だから、CGIスクリプトあるいはPHPスクリプトから変換コマンドを呼び出して行うようにする。場合によっては、複数のXSLTを用いて、複数のタイプのXHTMLを生成することも考えられる。
XSLTはXMLをXHTMLへ変換すめためのもので、その表示デザインそのものはCSSを用いる。つまり、XSLTはXMLをXHTMLに変換するとき、CSSでXHTMLを表示するように変換する。だから、同時にCSSも設計して用意しておく必要がある。
こうなると、一番神経を使い、細かい管理をしなければいけないのは、XSLTの部分ではなく、CGIスクリプトあるいはPHPスクリプトの部分だということが分かる。
次は、このあたりの具体的な仕組みを考えことになる。
コメント 0