如何通过Ruby中的RELAX NG验证XML?
发布时间:2020-12-17 04:19:06 所属栏目:百科 来源:网络整理
导读:RE XML模块似乎支持 RELAX NG validation,但是文档没有关于使用框架的验证部分的任何真实信息. 您将如何使用RELAX NG模式验证XML文档?代码段最有帮助. TIA! 解决方法 好吧,我有一个程序构建但结果不好. 我的结论如下: rexml relaxng模式解析可能不起作用.
RE
XML模块似乎支持
RELAX NG validation,但是文档没有关于使用框架的验证部分的任何真实信息.
您将如何使用RELAX NG模式验证XML文档?代码段最有帮助. TIA! 解决方法
好吧,我有一个程序构建但结果不好.
我的结论如下: > rexml relaxng模式解析可能不起作用.代码说明它不完整 这是我的测试程序:test.rb require 'rexml/validation/relaxng.rb' require 'rexml/parsers/pullparser.rb' # USAGE: ruby test.rb XML-FILE xml = ARGV[0] # schema must be a Relax NG XML (NOT compact / .rnc) schema = File.new( "example.rng" ) validator = REXML::Validation::RelaxNG.new( schema ) # The structure the validator made,which should be a complex structure but isn't validator.dump xmlfile = File.new( xml ) parser = REXML::Parsers::PullParser.new( xmlfile ) while parser.has_next? # Returns an PullEvent e = parser.pull # puts "Event ",e.inspect validator.validate(e) end 我制作了一些玩具示例XML文件和RNG文件,然后在OSX 10.5.x上试用了它 $/usr/bin/ruby test.rb good.xml < S.1 #{doc},:end_document( ) > /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rexml/ validation/validation.rb:24:in `validate': Validation error. Expected: :start_element( doc ) from < S.1 #:start_element( doc ),{head},{body},:end_element( ),:end_document( ) > but got "doc"( ) (REXML::Validation::ValidationException) from test.rb:20 (我和1.9一样) 所以,几乎失败了. (我可以更多地优化测试程序以使用add_listener,但它似乎不值得) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |