Element Construction Set を利用すれば、マークアップ言語のコード生成にJavaオブジェクトを使用する事が出来ます。もはや、以下のようなコードを書く必要はありません:
|
|
|
|
out.println("<HTML>");
out.println("<HEAD><TITLE>Demo<TITLE><HEAD>");
out.println("<BODY>");
out.println("<H1>Demo Header<H1>");
out.println("<H3>Sub Header:<H3>");
out.println("<FONT SIZE=\"+1\" FACE=\"Times\" COLOR=\"#FFFFFF">);
out.println("The big dog & the little cat chased each other.");
out.println("<FONT>");
out.println("<BODY>");
out.println("<HTML>");
|
|
|
|
|
代わりに:
|
|
|
|
Html html = new Html()
.addElement(new Head()
.addElement(new Title("Demo")))
.addElement(new Body()
.addElement(new H1("Demo Header"))
.addElement(new H3("Sub Header:"))
.addElement(new Font().setSize("+1")
.setColor(HtmlColor.WHITE)
.setFace("Times")
.addElement("The big dog & the little cat chased each other.")));
out.println(html.toString());
// or write to the outputstream directly
output(out);
|
|
|
|
|
これで、以下のHTMLが生成されます:
|
|
|
|
<html><head><title>Demo</title></head><body><h1>Demo Header</h1><h3>Sub Header:</h3>
<font size="+1" color="#FFFFFF" face="Times">The big dog & the little cat chased
each other.</font></body></html>
|
|
|
|
|
以下のDocumentオブジェクトを利用すればもっと簡単です:
|
|
|
|
Document doc = (Document) new Document()
.appendTitle("Demo")
.appendBody(new H1("Demo Header"))
.appendBody(new H3("Sub Header:"))
.appendBody(new Font().setSize("+1")
.setColor(HtmlColor.WHITE)
.setFace("Times")
.addElement("The big dog & the little cat chased each other."));
out.println(doc.toString());
// or write to the outputstream directly
output(out);
|
|
|
|
|
これで、上と同じHTMLが生成されます。
上記コードには、注釈をいれるべき細かな点があります(訳注:以下の3つの機能を、上のコードで確認できます)。
- 必要な色のHex値を覚える必要はありません。HtmlColorインタフェースが、200以上の色を既に用意しています。
- & ' " の3つのキャラクタを対応するENTITY値(訳注:XMLをご存知であれば、& などは<!ENTITY>で指定される事をご存知かと思います)に置き換える必要はありません。すでに置き換えがされてしまいますので(勿論、その設定を変えても良いのですが)。ECSでは、addElement()メソッドを呼び出す際に要素に適用されるフィルタを定義することが可能です。
- 出力ストリームにダイレクトに要素を書き込むことが可能です。output()メソッドを、要素を自由自在に変換するよう、オーバーライドする事が可能です。
ECS では、XML要素を使ってオリジナルの要素をすぐに生成する事も可能です。従って、以下のような事が可能です:
|
|
|
|
XML my_element = new XML("my_element");
produces:
<my_element></my_element>
|
|
|
|
|