groovyのmarkup/node builderのサンプルは、みんな非混合内容ばっかり。混合内容はダメなのかしらん? だとすると僕は困ります!
実験をふりかえってみると -- 理由はまったく不明なのだけど、メソッド名/マップ・キー名に付けたアンダスコア(「_」)は、「先頭なら削除」「途中ならハイフンに置き換え」となるようです。この変換が働いて、メソッド名「_」に対応するタグが退化して<>になっちゃった、ってわけ。
ちなみに、アンダスコアはXMLの名前開始文字にちゃんと入ってますよ:
NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | ...
ともかく、これから分かることは:
- groovyは、なぜか名前の変換を行う。
- groovyが、markup/node builderで生成したデータがwell-formedであることは保証されない。
んもう、どっちも困りますね。
groovyのbuilderでは、未定義のメソッド呼び出しをつかまえて、それをXMLタグ/ノードに変換しているようなので、テキストノードを表現するメソッド名を予約するしかないような気がします。たとえば、__text("Hello") とか。
混合内容の表現法が既に存在するなら、誰か教えて。
(続く)