5.5 です。
libxml-ruby を使って XML 文書の検証結果を Logger オブジェクトに
記録しようとしたのですが,やり方が分かりませんでした。
まず,以下のスクリプトで,エラーメッセージがどのように出力される
か確かめます。
----
require 'rubygems'
gem 'libxml-ruby'
require 'libxml'
doc=LibXML::XML::Document.string "<root><foo /></root>"
dtd=LibXML::XML::Dtd.new "<!ELEMENT root (#PCDATA)>"
$stderr=open("stderr.txt", "w")
foo=open("foo.txt", "w")
begin
doc.validate dtd
rescue
foo.puts $!
end
----
コンソールには,期待どおり以下の二つのエラーが表示されました。
Error: Element root was declared #PCDATA but contains non text nodes at :1.
Error: No declaration for element foo at :1.
標準出力ではなくて標準エラー出力に書き出されました。
stderr.txt には何も書き出されません。
ということは,LibXML::XML::Document#validate メソッドは $stderr を
参照してないということですよね。
foo.txt には,
Error: No declaration for element foo at :1.
のみが書き出されます。
これでは検証結果を文字列として取得することができなさそうなのですが,
どうすればよいでしょうか?
--
5.5@...