2011-08-02 5 views
0

興味深い問題があります。私たちは、ユーザーがさまざまなサードパーティソースに基づいてテンプレート素材を印刷できるようにする印刷会社です。一例は、販売する家の詳細を検索し、その値をその家のカタログに挿入することです。式/メソッドもサポートするXMLの代替手段

現在、私たちのテンプレートはxmlファイルで定義されています。テキストのラベルの1つの属性は、必要な自動集計値を取得するためにシステムで呼び出すメソッド名です。バックエンドはJavaで書かれているので、リフレクションを使用して、ユーザーが渡したいくつかのオブジェクトの1つでメソッドをルックアップします。例として、それはこのようになります... profileTag内部

<PagePart> 
     <profileTag>**getAddress**</profileTag> 
     <text>123 Example St NW</text> 
     <fontFile>Helvetica.TTF</fontFile> 
     <fontName>Helvetica</fontName> 
     <fontStyle>0</fontStyle> 
     <fontAlignment>0</fontAlignment> 
     <fontSize>18</fontSize> 
     <positionLeft>19</positionLeft> 
     <positionTop>88</positionTop> 
     <Color> 
      <r>0</r> 
      <g>130</g> 
      <b>200</b> 
     </Color> 
     <visibility>false</visibility> 
    </PagePart> 

のgetAddressは、テンプレートの新しいインスタンスを初期化するときに呼び出すために私たちのシステムにおける方法です。私たちは、新しいテンプレートを追加すると、私たちは私たちは、テンプレートの数千人(現在は数百)と1つのまたは2つのテンプレートをサポートするためにのみ存在し、これらの「書式設定」のメソッドを持っていることを計画この

public String getBusinessPhoneWithTitle() { 
     if (!phone.isEmpty()) return "B " + phone; 
     else return ""; 
    } 

のように構築される空想の文字列のためのニーズを持っています制御不能になっています。私たちが発明したスクリプト言語や見つけたスクリプト言語を使って要素に実際のロジックを含める方法が必要です。

評価可能なコードを同時に提供しながらマークアップのためのXMLを置き換えることができるオブジェクトのリテラル表記を持つスクリプト言語を誰かが知っているのだろうか。そうでない場合は、動的表現を評価するためにどの言語で要素にぶつかりますか?

答えて

1

xmlを構築するために、VelocityテンプレートをJavaで使用することができます。あなたのアプリにすぐに組み込むことができる純粋なJava APIがあります。ホームサイト:http://velocity.apache.org/

0

テンプレートに基づいてさまざまな形式の文書を公開する予定ですか? Quark expressはあなたのためのより良い選択肢のようです。私はこれを使用する印刷業界の多くの人々を知っています。

+0

商用ソリューションが合理的であるかどうかはわかりませんが、私たちはWebアプリケーションの一部として非常に精巧に制御できるものが必要です。 – benstpierre

1

XPathをスクリプト言語として使用したことはありますか?私は固定部分のためにあなたのようなXML構造を非常にうまく使っているアプリケーションを見てきて、計算する必要のあるもの(例えば金利や為替レート)のためのXPath式を埋め込んでいます。処理を行うには、XPath式を評価する(Javaから、またはevaluate()拡張を使用してXSLTから)か、文書全体を効果的に評価するXSLTスタイルシートに変換することができます。