このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

groovyのmarkup/node builderと混合内容:考察

groovyのmarkup/node builderのサンプルは、みんな非混合内容ばっかり。混合内容はダメなのかしらん? だとすると僕は困ります

実験をふりかえってみると -- 理由はまったく不明なのだけど、メソッド名/マップ・キー名に付けたアンダスコア(「_」)は、「先頭なら削除」「途中ならハイフンに置き換え」となるようです。この変換が働いて、メソッド名「_」に対応するタグが退化して<>になっちゃった、ってわけ。

ちなみに、アンダスコアはXMLの名前開始文字にちゃんと入ってますよ:


NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | ...

ともかく、これから分かることは:

  1. groovyは、なぜか名前の変換を行う。
  2. groovyが、markup/node builderで生成したデータがwell-formedであることは保証されない。

んもう、どっちも困りますね。

groovyのbuilderでは、未定義のメソッド呼び出しをつかまえて、それをXMLタグ/ノードに変換しているようなので、テキストノードを表現するメソッド名を予約するしかないような気がします。たとえば、__text("Hello") とか。

混合内容の表現法が既に存在するなら、誰か教えて。

(続く)