Nokogiri+CucumberにてXMLの妥当性確認
XMLに対応したXSDを用意し、それをNokogiriで読んでvalidateする。
その結果をCucumberで受ける。
…というだけのものです。
■features/validate_xml.feature
機能: XSDによりXMLの妥当性を確認する シナリオ: XMLとスキーマを読んで妥当性を確認 前提: XMLドキュメント "sample1.xml" を読む かつ: スキーマ "sample1.xsd" を読む もし: ドキュメントがスキーマに準拠している ならば: ドキュメントは妥当性確認された
■features/step_definitions/xml_validation.rb
前提 /^: XMLドキュメント "(.*?)" を読む$/ do |fname| @doc = Nokogiri::XML(File.read(fname)) end 前提 /^: スキーマ "(.*?)" を読む$/ do |fname| @xsd = Nokogiri::XML::Schema(File.read(fname)) end もし /^: ドキュメントがスキーマに準拠している$/ do @valid = true @xsd.validate(@doc).each do |error| @valid = false puts "XML not schema valid ([#{error.line}-#{error.column}] #{error.message})" end end ならば /^: ドキュメントは妥当性確認された$/ do @valid.should be_true end
■features/support/env.rb
require 'nokogiri'