例えば、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]}} |

