libxml-ruby 0.6.0-x86-mswin32-60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGES +122 -0
- data/LICENSE +23 -0
- data/README +144 -0
- data/ext/libxml/cbg.c +76 -0
- data/ext/libxml/extconf.rb +308 -0
- data/ext/libxml/libxml.c +62 -0
- data/ext/libxml/ruby_libxml.h +93 -0
- data/ext/libxml/ruby_xml_attr.c +405 -0
- data/ext/libxml/ruby_xml_attr.h +19 -0
- data/ext/libxml/ruby_xml_document.c +1111 -0
- data/ext/libxml/ruby_xml_document.h +27 -0
- data/ext/libxml/ruby_xml_dtd.c +168 -0
- data/ext/libxml/ruby_xml_dtd.h +17 -0
- data/ext/libxml/ruby_xml_html_parser.c +449 -0
- data/ext/libxml/ruby_xml_html_parser.h +29 -0
- data/ext/libxml/ruby_xml_input_cbg.c +158 -0
- data/ext/libxml/ruby_xml_input_cbg.h +20 -0
- data/ext/libxml/ruby_xml_node.c +2410 -0
- data/ext/libxml/ruby_xml_node.h +27 -0
- data/ext/libxml/ruby_xml_node_set.c +170 -0
- data/ext/libxml/ruby_xml_node_set.h +20 -0
- data/ext/libxml/ruby_xml_ns.c +153 -0
- data/ext/libxml/ruby_xml_ns.h +21 -0
- data/ext/libxml/ruby_xml_parser.c +1425 -0
- data/ext/libxml/ruby_xml_parser.h +31 -0
- data/ext/libxml/ruby_xml_parser_context.c +750 -0
- data/ext/libxml/ruby_xml_parser_context.h +22 -0
- data/ext/libxml/ruby_xml_reader.c +900 -0
- data/ext/libxml/ruby_xml_reader.h +14 -0
- data/ext/libxml/ruby_xml_sax_parser.c +485 -0
- data/ext/libxml/ruby_xml_sax_parser.h +56 -0
- data/ext/libxml/ruby_xml_schema.c +146 -0
- data/ext/libxml/ruby_xml_schema.h +16 -0
- data/ext/libxml/ruby_xml_state.c +113 -0
- data/ext/libxml/ruby_xml_state.h +12 -0
- data/ext/libxml/ruby_xml_tree.c +43 -0
- data/ext/libxml/ruby_xml_tree.h +12 -0
- data/ext/libxml/ruby_xml_xinclude.c +20 -0
- data/ext/libxml/ruby_xml_xinclude.h +13 -0
- data/ext/libxml/ruby_xml_xpath.c +243 -0
- data/ext/libxml/ruby_xml_xpath.h +23 -0
- data/ext/libxml/ruby_xml_xpath_context.c +118 -0
- data/ext/libxml/ruby_xml_xpath_context.h +20 -0
- data/ext/libxml/ruby_xml_xpath_object.c +293 -0
- data/ext/libxml/ruby_xml_xpath_object.h +28 -0
- data/ext/libxml/ruby_xml_xpointer.c +100 -0
- data/ext/libxml/ruby_xml_xpointer.h +27 -0
- data/ext/libxml/ruby_xml_xpointer_context.c +21 -0
- data/ext/libxml/ruby_xml_xpointer_context.h +18 -0
- data/ext/libxml/sax_parser_callbacks.inc +213 -0
- data/ext/libxml/version.h +9 -0
- data/lib/libxml.rb +125 -0
- data/lib/libxml_ruby.so +0 -0
- data/lib/xml/libxml.rb +5 -0
- data/mingw/libiconv-2.dll +0 -0
- data/mingw/libxml2-2.dll +0 -0
- data/mingw/libxml_ruby.so +0 -0
- data/mingw/mingw.rake +36 -0
- data/test/dtd-test.rb +24 -0
- data/test/etc_doc_to_s.rb +19 -0
- data/test/ets_copy_bug.rb +21 -0
- data/test/ets_copy_bug2.rb +32 -0
- data/test/ets_copy_bug3.rb +38 -0
- data/test/ets_doc_file.rb +15 -0
- data/test/ets_doc_to_s.rb +21 -0
- data/test/ets_gpx.rb +26 -0
- data/test/ets_node_gc.rb +21 -0
- data/test/ets_test.xml +2 -0
- data/test/ets_tsr.rb +9 -0
- data/test/gc.log +0 -0
- data/test/merge_bug.rb +55 -0
- data/test/schema-test.rb +74 -0
- data/test/tc_well_formed.rb +11 -0
- data/test/tc_xml_document.rb +52 -0
- data/test/tc_xml_document_write.rb +24 -0
- data/test/tc_xml_document_write2.rb +54 -0
- data/test/tc_xml_document_write3.rb +96 -0
- data/test/tc_xml_html_parser.rb +63 -0
- data/test/tc_xml_node.rb +59 -0
- data/test/tc_xml_node2.rb +25 -0
- data/test/tc_xml_node3.rb +27 -0
- data/test/tc_xml_node4.rb +86 -0
- data/test/tc_xml_node5.rb +52 -0
- data/test/tc_xml_node6.rb +27 -0
- data/test/tc_xml_node7.rb +35 -0
- data/test/tc_xml_node8.rb +32 -0
- data/test/tc_xml_node9.rb +32 -0
- data/test/tc_xml_node_copy.rb +40 -0
- data/test/tc_xml_node_set.rb +24 -0
- data/test/tc_xml_node_set2.rb +37 -0
- data/test/tc_xml_node_text.rb +17 -0
- data/test/tc_xml_node_xlink.rb +28 -0
- data/test/tc_xml_parser.rb +190 -0
- data/test/tc_xml_parser2.rb +16 -0
- data/test/tc_xml_parser3.rb +23 -0
- data/test/tc_xml_parser4.rb +33 -0
- data/test/tc_xml_parser5.rb +27 -0
- data/test/tc_xml_parser6.rb +23 -0
- data/test/tc_xml_parser7.rb +28 -0
- data/test/tc_xml_parser8.rb +32 -0
- data/test/tc_xml_parser9.rb +11 -0
- data/test/tc_xml_parser_context.rb +88 -0
- data/test/tc_xml_reader.rb +112 -0
- data/test/tc_xml_sax_parser.rb +104 -0
- data/test/tc_xml_sax_parser2.rb +51 -0
- data/test/tc_xml_xinclude.rb +30 -0
- data/test/tc_xml_xpath.rb +38 -0
- data/test/tc_xml_xpath2.rb +14 -0
- data/test/tc_xml_xpointer.rb +78 -0
- data/vc/libxml.sln +20 -0
- data/vc/libxml.vcproj +389 -0
- data/work/Rakefile +247 -0
- data/work/task/make +26 -0
- data/work/task/memory +37 -0
- data/work/task/rdoc +39 -0
- data/work/task/setup +1616 -0
- data/work/task/test +29 -0
- data/work/test/ets_runner.rb +33 -0
- data/work/test/libxml_test.rb +3 -0
- data/work/test/runner.rb +0 -0
- data/work/test/runner_ets.rb +33 -0
- data/work/vc/debug/libxml.exp +0 -0
- data/work/vc/debug/libxml.ilk +0 -0
- data/work/vc/debug/libxml.lib +0 -0
- data/work/vc/debug/libxml.pdb +0 -0
- data/work/vc/debug/libxml.so +0 -0
- metadata +224 -0
data/lib/libxml_ruby.so
ADDED
Binary file
|
data/lib/xml/libxml.rb
ADDED
Binary file
|
data/mingw/libxml2-2.dll
ADDED
Binary file
|
Binary file
|
data/mingw/mingw.rake
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
# We can't use Ruby's standard build procedures
|
2
|
+
# on Windows because the Ruby executable is
|
3
|
+
# built with VC++ while here we want to build
|
4
|
+
# with MingW. So just roll our own...
|
5
|
+
|
6
|
+
require 'rake/clean'
|
7
|
+
require 'rbconfig'
|
8
|
+
|
9
|
+
RUBY_INCLUDE_DIR = Config::CONFIG["archdir"]
|
10
|
+
RUBY_BIN_DIR = Config::CONFIG["bindir"]
|
11
|
+
RUBY_LIB_DIR = Config::CONFIG["libdir"]
|
12
|
+
RUBY_SHARED_LIB = Config::CONFIG["LIBRUBY"]
|
13
|
+
RUBY_SHARED_DLL = RUBY_SHARED_LIB.gsub(/lib$/, 'dll')
|
14
|
+
|
15
|
+
CLEAN.include('*.o')
|
16
|
+
CLOBBER.include('libxml.so')
|
17
|
+
|
18
|
+
task :default => "libxml"
|
19
|
+
|
20
|
+
SRC = FileList['../ext/libxml/*.c']
|
21
|
+
OBJ = SRC.collect do |file_name|
|
22
|
+
File.basename(file_name).ext('o')
|
23
|
+
end
|
24
|
+
|
25
|
+
SRC.each do |srcfile|
|
26
|
+
objfile = File.basename(srcfile).ext('o')
|
27
|
+
file objfile => srcfile do
|
28
|
+
command = "gcc -c -fPIC -O2 -Wall -o #{objfile} -I/usr/local/include #{srcfile} -I#{RUBY_INCLUDE_DIR}"
|
29
|
+
sh "sh -c '#{command}'"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
file "libxml" => OBJ do
|
34
|
+
command = "libtool --mode=link gcc -shared -o libxml_ruby.so -L/usr/local/lib -lxml2 #{OBJ} #{RUBY_BIN_DIR}/#{RUBY_SHARED_DLL}"
|
35
|
+
sh "sh -c '#{command}'"
|
36
|
+
end
|
data/test/dtd-test.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
require "libxml"
|
2
|
+
|
3
|
+
xp = XML::Parser.new
|
4
|
+
xp.string = '<?xml version="1.0" encoding="utf-8"?>
|
5
|
+
<root><head a="ee" id="1">ass<buzz/></head><descr>really big ass</descr></root>'
|
6
|
+
|
7
|
+
doc = xp.parse
|
8
|
+
|
9
|
+
dtd = XML::Dtd.new('
|
10
|
+
<!ELEMENT root (head, descr)>
|
11
|
+
<!ELEMENT head (#PCDATA)>
|
12
|
+
<!ATTLIST head
|
13
|
+
id NMTOKEN #REQUIRED
|
14
|
+
a CDATA #IMPLIED
|
15
|
+
>
|
16
|
+
<!ELEMENT descr (#PCDATA)>
|
17
|
+
')
|
18
|
+
|
19
|
+
if doc.validate(dtd) { |message, error| puts "#{error ? 'error' : 'warning'} : #{message}" }
|
20
|
+
puts "validation passed"
|
21
|
+
else
|
22
|
+
puts "validation failed"
|
23
|
+
end
|
24
|
+
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'libxml'
|
2
|
+
|
3
|
+
1.times do |count|
|
4
|
+
|
5
|
+
xml_doc = XML::Document.new()
|
6
|
+
xml_doc.encoding = "UTF-8"
|
7
|
+
xml_doc.root = XML::Node.new("Request")
|
8
|
+
|
9
|
+
1000.times do |index|
|
10
|
+
xml_doc.root << node = XML::Node.new("row")
|
11
|
+
node["user_id"] = index.to_s
|
12
|
+
node << "600445"
|
13
|
+
end
|
14
|
+
|
15
|
+
xml_str = xml_doc.to_s
|
16
|
+
print "\r#{count}"
|
17
|
+
$stdout.flush
|
18
|
+
end
|
19
|
+
puts "\n"
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'libxml'
|
2
|
+
|
3
|
+
def test( doc2 )
|
4
|
+
doc = XML::Document.new('1.0')
|
5
|
+
doc.root = XML::Node.new("ccc")
|
6
|
+
doc.root['aaa'] = 'aaa'
|
7
|
+
doc.root.child_add(doc2.root) # BUG!
|
8
|
+
doc.root << doc2.root.copy(true)
|
9
|
+
return doc
|
10
|
+
end
|
11
|
+
|
12
|
+
def test2
|
13
|
+
doc2 = XML::Document.new('1.0')
|
14
|
+
doc2.root = XML::Node.new("aaa")
|
15
|
+
test( doc2 )
|
16
|
+
end
|
17
|
+
|
18
|
+
1000.times { |i|
|
19
|
+
print "\r#{i}"; $stdout.flush
|
20
|
+
test2
|
21
|
+
}
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'libxml'
|
2
|
+
|
3
|
+
$FAILS = []
|
4
|
+
|
5
|
+
def test( doc, doc2, iter )
|
6
|
+
doc.root = XML::Node.new("ccc")
|
7
|
+
iter.times { |i|
|
8
|
+
doc.root.child_add(doc2.root)
|
9
|
+
# doc.root << doc2.root.copy(true)
|
10
|
+
}
|
11
|
+
return doc
|
12
|
+
end
|
13
|
+
|
14
|
+
def test2(iter)
|
15
|
+
doc = XML::Document.new('1.0')
|
16
|
+
doc2 = XML::Document.new('1.0')
|
17
|
+
doc2.root = XML::Node.new("aaa")
|
18
|
+
ret = test( doc, doc2, iter )
|
19
|
+
li=ret.find('aaa').length
|
20
|
+
$FAILS << [li,iter] unless li == iter
|
21
|
+
end
|
22
|
+
|
23
|
+
test2(5)
|
24
|
+
1000.times do |i|
|
25
|
+
test2(i)
|
26
|
+
print "\r#{i}"; $stdout.flush
|
27
|
+
end
|
28
|
+
|
29
|
+
puts "\n#{$FAILS.length} failures"
|
30
|
+
p $FAILS
|
31
|
+
|
32
|
+
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'libxml'
|
2
|
+
|
3
|
+
str = <<-STR
|
4
|
+
<html>
|
5
|
+
<body>
|
6
|
+
<div class="textarea" id="t1"
|
7
|
+
style="STATIC">werwerwerwerwer </div>
|
8
|
+
<div class="textarea" id="t2" style="STATIC">
|
9
|
+
Quisque et diam dapibus nisi bibendum blandit.
|
10
|
+
</div>
|
11
|
+
<div class="textarea" id="t3" style="STATIC">
|
12
|
+
<p>aaaaaaaaa</p>
|
13
|
+
</div>
|
14
|
+
</body>
|
15
|
+
</html>
|
16
|
+
STR
|
17
|
+
|
18
|
+
XML::Parser.default_keep_blanks = false
|
19
|
+
xp = XML::Parser.new
|
20
|
+
xp.string = str
|
21
|
+
doc = xp.parse
|
22
|
+
|
23
|
+
xpath = "//div[@id='t1']"
|
24
|
+
div1 = doc.find(xpath).to_a[0]
|
25
|
+
printf "xxx div1: #{div1}\n"
|
26
|
+
|
27
|
+
xpath = "//div[@id='t2']"
|
28
|
+
div2 = doc.find(xpath).to_a[0]
|
29
|
+
printf "xxx div2: #{div2}\n"
|
30
|
+
|
31
|
+
|
32
|
+
div2.each do |child|
|
33
|
+
#c = child.clone
|
34
|
+
c = child.copy(false)
|
35
|
+
div1.child_add(c)
|
36
|
+
end
|
37
|
+
|
38
|
+
printf "xxx root: #{doc.root}\n"
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'libxml'
|
2
|
+
|
3
|
+
# This is related to bug 8337, complaint is on amd64/fbsd
|
4
|
+
# unknown if it happens on other amd64/os combos
|
5
|
+
|
6
|
+
Process.setrlimit(Process::RLIMIT_NOFILE,10005)
|
7
|
+
|
8
|
+
(1..10000).each{|time|
|
9
|
+
XML::Document.file(File.join(File.dirname(__FILE__),'ets_test.xml'))
|
10
|
+
if time % 100 == 0
|
11
|
+
print "\r#{time}"
|
12
|
+
$stdout.flush
|
13
|
+
end
|
14
|
+
}
|
15
|
+
puts "\n"
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'libxml'
|
2
|
+
|
3
|
+
1000.times do |count|
|
4
|
+
|
5
|
+
xml_doc = XML::Document.new()
|
6
|
+
xml_doc.encoding = "UTF-8"
|
7
|
+
xml_doc.root = XML::Node.new("Request")
|
8
|
+
|
9
|
+
1000.times do |index|
|
10
|
+
|
11
|
+
xml_doc.root << node = XML::Node.new("row")
|
12
|
+
node["user_id"] = index.to_s
|
13
|
+
node << "600445"
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
xml_str = xml_doc.to_s
|
18
|
+
print "\r#{count}"
|
19
|
+
$stdout.flush
|
20
|
+
end
|
21
|
+
puts "\n"
|
data/test/ets_gpx.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'libxml'
|
2
|
+
|
3
|
+
100.times do
|
4
|
+
doc = XML::Document.new
|
5
|
+
doc.encoding = 'UTF-8'
|
6
|
+
|
7
|
+
root = XML::Node.new 'gpx'
|
8
|
+
root['version'] = '1.0'
|
9
|
+
root['creator'] = 'OpenStreetMap.org'
|
10
|
+
root['xmlns'] = "http://www.topografix.com/GPX/1/0/"
|
11
|
+
|
12
|
+
doc.root = root
|
13
|
+
|
14
|
+
track = XML::Node.new 'trk'
|
15
|
+
doc.root << track
|
16
|
+
|
17
|
+
trkseg = XML::Node.new 'trkseg'
|
18
|
+
track << trkseg
|
19
|
+
|
20
|
+
1.upto(10000) do |n|
|
21
|
+
trkpt = XML::Node.new 'trkpt'
|
22
|
+
trkpt['lat'] = n.to_s
|
23
|
+
trkpt['lon'] = n.to_s
|
24
|
+
trkseg << trkpt
|
25
|
+
end
|
26
|
+
end
|
data/test/ets_node_gc.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'libxml'
|
2
|
+
|
3
|
+
# test of bug 13310, clears MEM2
|
4
|
+
|
5
|
+
include GC
|
6
|
+
|
7
|
+
inner = XML::Node.new('inner')
|
8
|
+
save = nil
|
9
|
+
1.times do
|
10
|
+
outer = XML::Node.new('outer')
|
11
|
+
outer.child = inner
|
12
|
+
1.times do
|
13
|
+
doc = XML::Document.new
|
14
|
+
doc.root = outer
|
15
|
+
# Uncomment the following line and it won't crash
|
16
|
+
# save = doc
|
17
|
+
end
|
18
|
+
garbage_collect
|
19
|
+
end
|
20
|
+
garbage_collect
|
21
|
+
puts inner
|
data/test/ets_test.xml
ADDED
data/test/ets_tsr.rb
ADDED
data/test/gc.log
ADDED
File without changes
|
data/test/merge_bug.rb
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
#!/usr/local/bin/ruby
|
2
|
+
|
3
|
+
require 'libxml'
|
4
|
+
|
5
|
+
class XML::Node
|
6
|
+
def first_child_element
|
7
|
+
result = nil
|
8
|
+
if self.children?
|
9
|
+
self.each_child{|node_child| result = node_child if ((result.nil?) && node_child.element?) }
|
10
|
+
end
|
11
|
+
result
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
#
|
16
|
+
# Method which generates crash
|
17
|
+
#
|
18
|
+
def merge(forms)
|
19
|
+
starting_form = forms.shift
|
20
|
+
forms.inject(starting_form) do |master_form,form|
|
21
|
+
master_form.find("//body").first << form.find("//body").first.first_child_element
|
22
|
+
master_form
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
#
|
27
|
+
# Run
|
28
|
+
# Must tell it how many times to merge a document
|
29
|
+
# On my linux box, it takes about 350 to crash it
|
30
|
+
# On my OS X box, it takes about 150
|
31
|
+
#
|
32
|
+
|
33
|
+
if (ARGV[0].to_i > 0)
|
34
|
+
count = ARGV[0].to_i
|
35
|
+
else
|
36
|
+
count = 500
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
merge_list = []
|
41
|
+
|
42
|
+
count.times do
|
43
|
+
merge_list << XML::Parser.string(File.read(File.join(File.dirname(__FILE__), 'model', 'merge_bug_data.xml'))).parse
|
44
|
+
end
|
45
|
+
|
46
|
+
result = merge(merge_list)
|
47
|
+
puts "Merged!"
|
48
|
+
|
49
|
+
#File.open(File.join(File.dirname(__FILE__), 'model', '/generated_form.xml'), "w") do |f|
|
50
|
+
# puts "Trying to write to file"
|
51
|
+
# f << result
|
52
|
+
# puts "After trying to write to file"
|
53
|
+
#end
|
54
|
+
|
55
|
+
puts "nothing left to do but print this message"
|
data/test/schema-test.rb
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
require "libxml"
|
2
|
+
|
3
|
+
xp = XML::Parser.new
|
4
|
+
xp.string = '<?xml version="1.0" encoding="utf-8"?>
|
5
|
+
|
6
|
+
<shiporder orderid="889923"
|
7
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
8
|
+
xsi:noNamespaceSchemaLocation="shiporder.xsd">
|
9
|
+
<orderperson>John Smith</orderperson>
|
10
|
+
<shipto>
|
11
|
+
<name>Ola Nordmann</name>
|
12
|
+
<address>Langgt 23</address>
|
13
|
+
<city>4000 Stavanger</city>
|
14
|
+
<country>Norway</country>
|
15
|
+
</shipto>
|
16
|
+
<item>
|
17
|
+
<title>Empire Burlesque</title>
|
18
|
+
<note>Special Edition</note>
|
19
|
+
<quantity>1</quantity>
|
20
|
+
<price>10.90</price>
|
21
|
+
</item>
|
22
|
+
<item>
|
23
|
+
<title>Hide your heart</title>
|
24
|
+
<quantity>1</quantity>
|
25
|
+
<price>9.90</price>
|
26
|
+
</item>
|
27
|
+
</shiporder>
|
28
|
+
'
|
29
|
+
|
30
|
+
doc = xp.parse
|
31
|
+
|
32
|
+
schema = XML::Schema.from_string('<?xml version="1.0" encoding="ISO-8859-1" ?>
|
33
|
+
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
34
|
+
|
35
|
+
<xs:element name="shiporder">
|
36
|
+
<xs:complexType>
|
37
|
+
<xs:sequence>
|
38
|
+
<xs:element name="orderperson" type="xs:string"/>
|
39
|
+
<xs:element name="shipto">
|
40
|
+
<xs:complexType>
|
41
|
+
<xs:sequence>
|
42
|
+
<xs:element name="name" type="xs:string"/>
|
43
|
+
<xs:element name="address" type="xs:string"/>
|
44
|
+
<xs:element name="city" type="xs:string"/>
|
45
|
+
<xs:element name="country" type="xs:string"/>
|
46
|
+
</xs:sequence>
|
47
|
+
</xs:complexType>
|
48
|
+
</xs:element>
|
49
|
+
<xs:element name="item" maxOccurs="unbounded">
|
50
|
+
<xs:complexType>
|
51
|
+
<xs:sequence>
|
52
|
+
<xs:element name="title" type="xs:string"/>
|
53
|
+
<xs:element name="note" type="xs:string" minOccurs="0"/>
|
54
|
+
<xs:element name="quantity" type="xs:positiveInteger"/>
|
55
|
+
<xs:element name="price" type="xs:decimal"/>
|
56
|
+
</xs:sequence>
|
57
|
+
</xs:complexType>
|
58
|
+
</xs:element>
|
59
|
+
</xs:sequence>
|
60
|
+
<xs:attribute name="orderid" type="xs:string" use="required"/>
|
61
|
+
</xs:complexType>
|
62
|
+
</xs:element>
|
63
|
+
|
64
|
+
</xs:schema>
|
65
|
+
')
|
66
|
+
|
67
|
+
p schema
|
68
|
+
|
69
|
+
if doc.validate_schema(schema) { |message, error| puts "#{error ? 'error' : 'warning'} : #{message}" }
|
70
|
+
puts "validation passed"
|
71
|
+
else
|
72
|
+
puts "validation failed"
|
73
|
+
end
|
74
|
+
|