最近のキーワード

2006年07月23日

tdp4rでXMLのtop-down parsing/transduction

TDP4RでXMLをパース/変形するためのパーサのセットを用意してみた。 これで、top-downにパースしたり変形するものについては対応できる。
例えば、a,bのタグが連続で現れるものをabというタグに変形し、他のものは大文字に変形するものは次のような変形ルールを記述すればよい。 (サンプルsample_xml.rbから引用)
  g.xml =
    element("a"){
      element("b"){
        g.xmlseq
      } >> dom_constructor{|node| node.children() }
    } >> dom_constructor{|node| node.name = "AB"; node } |
    element(String){
      g.xmlseq
    } >> dom_constructor{|node|
           node.name = node.name.upcase()
           node
         } |
    doctype{
      g.xmlseq
    } >> dom_constructor{|node| node} |
    text >> Proc.new{|x| x[0]} |
    elementdecl >> Proc.new{|x| x[0]} |
    xmldecl >> Proc.new{|x| x[0]} |
    comment >> Proc.new{|x| x[0]} |
    any_node() >> Proc.new{|x| x[0] }

  g.xmlseq =
    g.xml()*0 >> Proc.new{|x| x[0].collect{|y| y[0]}} |
ラベル:tdp4r xml ruby
posted by ttate at 09:11| ☔| Comment(0) | TrackBack(0) | Ruby | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。