[ruby-list:50732] Re: 2.6.0でREXML::XPath.matchの振る舞いが変わった?
From:
Kouhei Sutou <kou@...>
Date:
2018-12-26 11:53:03 UTC
List:
ruby-list #50732
須藤です。
In <20181226.135638.487629901574032173.yasu@utahime.org>
"[ruby-list:50731] 2.6.0でREXML::XPath.matchの振る舞いが変わった?" on Wed, 26 Dec 2018 13:56:38 +0900 (JST),
Yasuhiro KIMURA <yasu@utahime.org> wrote:
> 以下のようなスクリプトを実行すると2.5.3では"1"と表示されますが2.6.0で
> は"0"と表示されます。
>
> 2.6ではXPath式の解釈に何か変更があったのでしょうか。
もっとちゃんと解釈するようになりました。
2.5の頃は↓のように適当なネームスペースURIでもマッチしていま
した。
REXML::XPath.match(doc, "//*[@null:id='test']", {'null' => 'XXX'})
で、今回のやつはマッチしなければいけないのにマッチしていない
やつなので、REXMLのバグです。ごめんなさい。
2.6からはgem install rexmlで新しいバージョンを使えるようにな
るので少々お待ちください。
もし、以下のように少しゆるくしても一意になるならとりあえず以
下でしのいでおいてください。
REXML::XPath.match(doc, "//*[@id='test']")
以下が"http://www.w3.org/1999/xhtml"を返すのが悪い気がしてい
ますけど、これを変えると互換性が壊れるんですよねぇ。。。
p doc.root.elements["body"].attribute("id").namespace