[ruby-list:43668] Re: REXMLでのパーサーの不具合について

From: moonwolf@...
Date: 2007-06-27 15:24:51 UTC
List: ruby-list #43668
MoonWolfです。

REXMLの内部ではすべてのテキストがUTF-8で扱われる以上、正規表現全てにuオプ
ションを付けないと駄目なんじゃないかなぁ。
uが付いてたり付いてなかったりしてます。

REXMLのunnormalizeまわりは書籍 Ruby de XML(初版)の126ページにあるように不
完全のようです。
rexml/text.rbにあるREXML::Text::unnormalizeもbaseparser.rbと同じような実装
です。

"rv.gsub( /&/, '&')"という処理が最後にあるというのはおかしい。
数値文字参照を変換した後だから'&'が'&'扱いされてしまうのでは?
実体参照のunnormalizeは複数回のgsubではなく1つのgsubで一括で処理するのが良
いと思います。

以下、出力がおかしい例です。
  parser.unnormalize('&lt;&#38;amp;')      # => "<&"
  parser.unnormalize("&lt;&#38;&#97;mp;")  # => "<&"

In This Thread

Prev Next