1

動的 HTML ドキュメント (ブラウザに埋め込まれていない) を必要とするプロジェクトに関するアドバイスを探しています。

私は XML の初心者で、XSLT 変換を理解するのに苦労しています。さらに複雑なことに、私は MS Office スイートの電子メール自動化のコンテキストで作業しています。

受信者ごとにマージしてカスタマイズできるさまざまな xsl/html テンプレートからの動的な電子メールを作成できるようにしたいと 考えています。

私は MS Word で XSLT を作成する道を思い切って進めましたが、いくつかのハードルがあるようです。

  1. 私は VBA プログラマーで、Express バージョンの Visual Studio しか持っていません。
  2. Word の VBA 言語を使用して XML を操作するためのドキュメントは、あまりよくありません。
  3. Word によって作成された XSLT は、見ているだけで気が遠くなります。典型的な XSL ファイルを見て、何が起こっているかの要点をつかむことができます。Word バージョンについても同じことは言えません。(しばらく前に、O'Reilly の本 Office XML 2003 の著者が XML プログラミング サポートのために MS を非難している記事に出くわしました)
  4. MS Access からのフラット ファイル XML エクスポートを使用しています。それらをテンプレートで表される階層に変換するのは難しいようです。
  5. アプリケーションのこの機能を構築する時間はあまりありません:(

これらすべてを念頭に置いて、この リンクからインスピレーションを得て、フラット ファイル xml をエクスポートし、ルビーなどのスクリプト言語で動的 html ファイルを生成することは可能ですか?

もしそうなら、このアプローチのためのガイドラインやリソースはありますか?

みたいなことを考えていた...

  • XML ファイルをネイティブの Ruby データ構造に変換します。
  • HTML テンプレート内の変数を呼び出します<p>Greetings <div id="recipient"></div>!</p>(これは親ノードであり、「受信者」ハッシュ、配列などにアタッチされます)
  • 次に、のようなテーブル定義を取得し、テンプレートで使用可能なおよび属性<table class="my-template"> <tr> <th id="action-item">Action Item</th> <th id="due-date">Due Date</th> </tr> <tr> <td></td> <td></td> </tr> </table> に基づいて完全なテーブルを構築します。classid

良いアイデア、悪いアイデア?怠けようとしているわけではありませんが、MS Office - XSLT - .Net フレームワーク - 限定された VBA ドキュメント ルートを、可能な代替手段を探ることなく進めたくありませんでした。

また、XLST を否定しているわけではありませんが、プロジェクトの状況と時間枠を考えると、必要なことをすべて学ぶ時間があるかどうかはわかりません。

私が間違っていると思われる場合は、お知らせください。

4

1 に答える 1

1

1 つの X テクノロジーを別のテクノロジーと混同しないように注意してください。

XMLは、構造化された意味のある方法でデータを表現するためのマークアップ言語です。

XSLTは、XML ドキュメントを変換する手段を提供します。もちろん、XSLT スタイルシート自体が XML で記述されているというのは、ややこしいことです。ただし、これには明らかな利点があります。XSLT が XML の場合、XSLT を別の XSLT に簡単に変換できます。XSLT スタイルシートは XSLT プロセッサ (Saxon など) によって読み取られ、XML ドキュメントに適用されます。また、「テンプレート」は XSLT にのみ存在し、一般に XML ファイルには存在しません。

したがって、XSLT と XML を混同していると言えます。MS Word はファイルをXML (OpenXML) として保存できます。もちろん、これらの OpenXML ファイルから任意の情報を取得できますが、XSLT を初めて使用する場合は、より単純なものから始めることをお勧めします。

ただし、XSLT は XML を HTML に変換するための適切な選択です。Ruby (または Python、Perl、または Java...) を知っている場合は、DOM などの XML 関数もあります。

その上、これはかなり概念的な質問です-一方、SOは個別のプログラミングの問題を支援するのに優れています。何かを試して、コードを共有してください。

于 2013-11-12T15:05:11.933 に答える