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)
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 の破棄
}
}
以上で必要なものが全て揃いました。 実行コードは以下のようになります (詳細は 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 の刈り込み | << | >> |