| MAP | PageMixer ドキュメント > チュートリアル > PageMixer の利用 > Token の刈り込み | << | >> |
本節では、
PageMixer フレームワークにおける
HTML タグ要素の HTML ページからの取り除き方に関して説明します。
説明には、
HTML ページから
"<br>" を取り除くフィルタを使用します。
改行前。<br>
改行後。
改行前。 改行後。
言い換えるなら、
このフィルタは、
シーケンスから "br"
と名付けられた Token を取り除きます。
本節におけるクラス図を以下に示します。
色づけされているのが本節で定義するクラスで、 それ以外は PageMixer において定義済みです。
本節におけるオブジェクト図を以下に示します。
本節におけるシーケンス図を以下に示します。
本チュートリアルでは、 クラスは全てクラス名のみで表記されています。 完全な名称は以下の通りです。
| 表記 | 完全名 |
|---|---|
| Consumer | jp.ne.dti.lares.foozy.pagemixer.mixer.Consumer |
| ConsumerContext | jp.ne.dti.lares.foozy.pagemixer.mixer.ConsumerContext |
| HTMLSymbolSet | jp.ne.dti.lares.foozy.pagemixer.HTMLSymbolSet |
| Symbol | jp.ne.dti.lares.foozy.pagemixer.Symbol |
| TokenEditFilter | jp.ne.dti.lares.foozy.pagemixer.mixer.TokenEditFilter |
| TokenWatcher | jp.ne.dti.lares.foozy.pagemixer.mixer.TokenWatcher |
| 表記 | 完全名 |
|---|---|
| Bootstrap.Default | pagemixer.filter.Bootstrap.Default |
| BrTrimFilter | pagemixer.filter.BrTrimFilter |
TokenWatcher の生成PageMixer フレームワークにおいては、
「フィルタリング機能」と「フィルタリング対象を見つけ出す機能」
はそれぞれ別々の機能として扱われ、
単独の Token に関するそれらは、
"TokenEditFilter" および
"TokenWatcher" がそれぞれの機能実現の基底クラスになります。
そのためまず始めに、
シーケンス中のどの Token を刈り込むべきか
(=「フィルタリング対象を見つけ出す機能」)を
TokenEditFilter に伝える
TokenWatcher オブジェクトを生成します。
本節のような、
"br" の名前をもつ全ての Token を刈り込む場合、
"TokenWatcher.Name" が利用されます。
これは、"名前で監視する Token 監視クラス" のことです。
new TokenWatcher.Name(HTMLSymbolSet.SET.BR)
br" の名前をもつ Token を刈り込むための
TokenWatcher
TokenWatcher.Name クラスのインスタンスの生成には、
コンストラクタに "Symbol" を指定する必要があり、
上記の例では、
Symbol の取得に
"HTMLSymbolSet" を利用しています。
Symbol がどのようなものか、
なぜ String ではなく
Symbol が利用されているのか、
その他のこれらに関する詳細の説明は、
本チュートリアルの目的ではありません。
本チュートリアルにおいては、
よく知られた HTML タグや属性名に対応する
Symbol オブジェクトを取得するために、
HTMLSymbolSet
をどのように使用すればよいのかを理解すれば十分です。
詳細は、"シンボルの比較" を参照してください。
TokenEditFilter の具象化次に、
先に定義された TokenWatcher
が見つけ出した Token を刈り込むために、
"TokenEditFilter"
の派生クラスを定義します。
"シーケンスからの Token の刈り込み" は、
接続された Consumer に渡すこと無しに、
刈り込まれる Token を捨てることですので、
派生クラスは以下のように定義されます。
public class BrTrimFilter
extends TokenEditFilter
{
final static
private HTMLSymbolSet SET = HTMLSymbolSet.SET;
///////////////////////////////////////////
public BrTrimFilter(){
super(new TokenWatcher.Name(SET.BR));
}
///////////////////////////////////////////
// class TokenEditFilter の具象化
protected void edit(ConsumerContext context,
Token token)
{
// 何もしない = "BR" Token の破棄
}
}
TokenEditFilter 派生クラス
以上で必要なものが全て揃いました。 実行コードは以下のようになります (詳細は pagemixer.filter.BrTrimFilter を参照してください)。
try{
Bootstrap bootstrap =
new Bootstrap.Default(filename);
// フィルタの適用
bootstrap.execute(new BrTrimFilter());
}
catch(Exception e){
e.printStackTrace(System.err);
}
入力用のサンプル HTML ファイルは、
配布物中の "src/demo/servlet/war/WEB-INF/page/demosite"
配下にある
"index.ja.html" です。
| MAP | PageMixer ドキュメント > チュートリアル > PageMixer の利用 > Token の刈り込み | << | >> |