by Hippo2000(1999/12/23)
XML::Grove::Substモジュールなのです。
なおこのドキュメントはXML::Groveモジュールをインストールしたときに一緒にはいるドキュメントを日本語に訳そうとしたものです。わかりにくい部分は本物を見てください。(^^;;
原本の著作権はKen MacLeod氏がお持ちです。
Ken MacLeodさんにはメールで了解をいただきました。なお内容等が間違っていたら修正します。ご連絡ください。
XML::Grove::Subst - 値をテンプレートで置換します。
use XML::Grove::Subst;
# XML::Grove::Document または XML::Grove::Elementにsubstメソッドを使う: $new_grove = $source_grove->subst( ARGS ); $new_grove = $source_grove->subst_hash( ARG );
# XML::Grove::Subst インスタンスを使う: $subster = XML::Grove::Subst->new(); $new_grove = $subster->subst( $source_grove, ARGS ); $new_grove = $subster->subst_hash( $source_grove, ARG );
XML::Grove::Subst はXMLテンプレートを実装しています。XML::Grove::Substは元のGrove全体を詳しく解析し、'SUB:XXX'や'SUB:KEY'という名前を持ったすべての要素をAGRS(リスト)またはARS(ハッシュ)の対応する値で置き換えます。
以下のテンプレート、ファイル'template.xml'は、単純な部品データベースをHTMLに変換するために使うことができます:
<html>
<head>
<title><SUB:key key='Name'></title>
</head>
<body>
<h1><SUB:key key='Name'></title>
<p>Information for part number <SUB:key key='Number'>:</p>
<SUB:key key='Description'>
</body>
</html>
このテンプレートを使うには、まずそれを解析し、そしてGroveに変換します。そして新しいページが必要になるたびに'subst_hash()'を使います:
use XML::Parser::PerlSAX;
use XML::Grove;
use XML::Grove::Builder;
use XML::Grove::Subst;
use XML::Grove::PerlSAX;
use XML::Handler::XMLWriter;
# テンプレートのロード
$b = XML::Grove::Builder->new();
$p = XML::Parser::PerlSAX->new( Handler = $b );
$source_grove = $p->parse( Source => { SystemId => 'template.xml' } );
# 置換の適用
$new_grove = $source_grove->subst_hash( { Name => 'Acme DCX-2000 Filter',
Number => 'N4728',
Description => 'The Best' } );
# 新しいGroveを標準出力に書き出します
$w = XML::Handler::XMLWriter->new();
$wp = XML::Grove::PerlSAX->new( Handler => $w );
$wp->parse( Source => { Grove => $new_grove } );
Ken MacLeod, ken@bitsko.slc.ut.us
perl(1), XML::Grove(3)
Extensible Markup Language (XML) <http://www.w3c.org/XML>
ご意見、ご質問はこちらの掲示板で受け付けています。
またメールは河馬屋(Nifty)にお願いします。