libxml-ruby 2.8.0 → 3.2.1

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.
Files changed (204) hide show
  1. checksums.yaml +5 -5
  2. data/HISTORY +842 -775
  3. data/LICENSE +20 -20
  4. data/MANIFEST +166 -166
  5. data/README.rdoc +217 -184
  6. data/Rakefile +90 -78
  7. data/ext/libxml/extconf.h +3 -0
  8. data/ext/libxml/extconf.rb +61 -116
  9. data/ext/libxml/libxml.c +80 -76
  10. data/ext/libxml/ruby_libxml.h +67 -75
  11. data/ext/libxml/ruby_xml.c +933 -893
  12. data/ext/libxml/ruby_xml.h +10 -10
  13. data/ext/libxml/ruby_xml_attr.c +333 -333
  14. data/ext/libxml/ruby_xml_attr.h +12 -12
  15. data/ext/libxml/ruby_xml_attr_decl.c +153 -153
  16. data/ext/libxml/ruby_xml_attr_decl.h +11 -11
  17. data/ext/libxml/ruby_xml_attributes.c +275 -275
  18. data/ext/libxml/ruby_xml_attributes.h +15 -15
  19. data/ext/libxml/ruby_xml_cbg.c +85 -85
  20. data/ext/libxml/ruby_xml_document.c +1123 -1147
  21. data/ext/libxml/ruby_xml_document.h +11 -11
  22. data/ext/libxml/ruby_xml_dtd.c +248 -268
  23. data/ext/libxml/ruby_xml_dtd.h +9 -9
  24. data/ext/libxml/ruby_xml_encoding.c +250 -260
  25. data/ext/libxml/ruby_xml_encoding.h +16 -19
  26. data/ext/libxml/ruby_xml_error.c +996 -996
  27. data/ext/libxml/ruby_xml_error.h +12 -12
  28. data/ext/libxml/ruby_xml_html_parser.c +89 -92
  29. data/ext/libxml/ruby_xml_html_parser.h +10 -10
  30. data/ext/libxml/ruby_xml_html_parser_context.c +337 -338
  31. data/ext/libxml/ruby_xml_html_parser_context.h +10 -10
  32. data/ext/libxml/ruby_xml_html_parser_options.c +46 -46
  33. data/ext/libxml/ruby_xml_html_parser_options.h +10 -10
  34. data/ext/libxml/ruby_xml_input_cbg.c +191 -191
  35. data/ext/libxml/ruby_xml_input_cbg.h +20 -20
  36. data/ext/libxml/ruby_xml_io.c +47 -50
  37. data/ext/libxml/ruby_xml_io.h +10 -10
  38. data/ext/libxml/ruby_xml_namespace.c +153 -153
  39. data/ext/libxml/ruby_xml_namespace.h +10 -10
  40. data/ext/libxml/ruby_xml_namespaces.c +293 -293
  41. data/ext/libxml/ruby_xml_namespaces.h +9 -9
  42. data/ext/libxml/ruby_xml_node.c +1402 -1452
  43. data/ext/libxml/ruby_xml_node.h +13 -11
  44. data/ext/libxml/ruby_xml_parser.c +91 -94
  45. data/ext/libxml/ruby_xml_parser.h +12 -12
  46. data/ext/libxml/ruby_xml_parser_context.c +999 -1001
  47. data/ext/libxml/ruby_xml_parser_context.h +10 -10
  48. data/ext/libxml/ruby_xml_parser_options.c +66 -66
  49. data/ext/libxml/ruby_xml_parser_options.h +12 -12
  50. data/ext/libxml/ruby_xml_reader.c +1239 -1228
  51. data/ext/libxml/ruby_xml_reader.h +17 -17
  52. data/ext/libxml/ruby_xml_relaxng.c +110 -111
  53. data/ext/libxml/ruby_xml_relaxng.h +10 -10
  54. data/ext/libxml/ruby_xml_sax2_handler.c +326 -328
  55. data/ext/libxml/ruby_xml_sax2_handler.h +10 -10
  56. data/ext/libxml/ruby_xml_sax_parser.c +116 -120
  57. data/ext/libxml/ruby_xml_sax_parser.h +10 -10
  58. data/ext/libxml/ruby_xml_schema.c +278 -301
  59. data/ext/libxml/ruby_xml_schema.h +809 -809
  60. data/ext/libxml/ruby_xml_schema_attribute.c +109 -109
  61. data/ext/libxml/ruby_xml_schema_attribute.h +15 -15
  62. data/ext/libxml/ruby_xml_schema_element.c +95 -94
  63. data/ext/libxml/ruby_xml_schema_element.h +14 -14
  64. data/ext/libxml/ruby_xml_schema_facet.c +52 -52
  65. data/ext/libxml/ruby_xml_schema_facet.h +13 -13
  66. data/ext/libxml/ruby_xml_schema_type.c +232 -259
  67. data/ext/libxml/ruby_xml_schema_type.h +9 -9
  68. data/ext/libxml/ruby_xml_version.h +9 -9
  69. data/ext/libxml/ruby_xml_writer.c +1133 -1137
  70. data/ext/libxml/ruby_xml_writer.h +10 -10
  71. data/ext/libxml/ruby_xml_xinclude.c +16 -16
  72. data/ext/libxml/ruby_xml_xinclude.h +11 -11
  73. data/ext/libxml/ruby_xml_xpath.c +194 -188
  74. data/ext/libxml/ruby_xml_xpath.h +13 -13
  75. data/ext/libxml/ruby_xml_xpath_context.c +360 -361
  76. data/ext/libxml/ruby_xml_xpath_context.h +9 -9
  77. data/ext/libxml/ruby_xml_xpath_expression.c +81 -81
  78. data/ext/libxml/ruby_xml_xpath_expression.h +10 -10
  79. data/ext/libxml/ruby_xml_xpath_object.c +338 -335
  80. data/ext/libxml/ruby_xml_xpath_object.h +17 -17
  81. data/ext/libxml/ruby_xml_xpointer.c +99 -99
  82. data/ext/libxml/ruby_xml_xpointer.h +11 -11
  83. data/ext/vc/libxml_ruby.sln +17 -15
  84. data/lib/libxml-ruby.rb +30 -0
  85. data/lib/libxml.rb +3 -33
  86. data/lib/libxml/node.rb +2 -78
  87. data/lib/libxml/parser.rb +0 -266
  88. data/lib/libxml/sax_parser.rb +0 -17
  89. data/lib/libxml/schema.rb +47 -66
  90. data/lib/libxml/schema/attribute.rb +19 -19
  91. data/lib/libxml/schema/element.rb +19 -27
  92. data/lib/libxml/schema/type.rb +21 -29
  93. data/libxml-ruby.gemspec +48 -44
  94. data/script/benchmark/depixelate +634 -634
  95. data/script/benchmark/hamlet.xml +9054 -9054
  96. data/script/benchmark/parsecount +170 -170
  97. data/script/benchmark/throughput +41 -41
  98. data/script/test +6 -6
  99. data/setup.rb +0 -1
  100. data/test/c14n/given/example-1.xml +14 -14
  101. data/test/c14n/given/example-2.xml +11 -11
  102. data/test/c14n/given/example-3.xml +18 -18
  103. data/test/c14n/given/example-4.xml +9 -9
  104. data/test/c14n/given/example-5.xml +12 -12
  105. data/test/c14n/given/example-6.xml +2 -2
  106. data/test/c14n/given/example-7.xml +11 -11
  107. data/test/c14n/given/example-8.xml +11 -11
  108. data/test/c14n/given/example-8.xpath +9 -9
  109. data/test/c14n/result/1-1-without-comments/example-1 +3 -3
  110. data/test/c14n/result/1-1-without-comments/example-2 +10 -10
  111. data/test/c14n/result/1-1-without-comments/example-3 +13 -13
  112. data/test/c14n/result/1-1-without-comments/example-4 +8 -8
  113. data/test/c14n/result/1-1-without-comments/example-5 +2 -2
  114. data/test/c14n/result/with-comments/example-1 +5 -5
  115. data/test/c14n/result/with-comments/example-2 +10 -10
  116. data/test/c14n/result/with-comments/example-3 +13 -13
  117. data/test/c14n/result/with-comments/example-4 +8 -8
  118. data/test/c14n/result/with-comments/example-5 +3 -3
  119. data/test/c14n/result/without-comments/example-1 +3 -3
  120. data/test/c14n/result/without-comments/example-2 +10 -10
  121. data/test/c14n/result/without-comments/example-3 +13 -13
  122. data/test/c14n/result/without-comments/example-4 +8 -8
  123. data/test/c14n/result/without-comments/example-5 +2 -2
  124. data/test/model/atom.xml +12 -12
  125. data/test/model/bands.iso-8859-1.xml +4 -4
  126. data/test/model/bands.utf-8.xml +4 -4
  127. data/test/model/bands.xml +4 -4
  128. data/test/model/books.xml +153 -153
  129. data/test/model/cwm_1_0.xml +11336 -0
  130. data/test/model/merge_bug_data.xml +58 -58
  131. data/test/model/ruby-lang.html +238 -238
  132. data/test/model/rubynet.xml +79 -79
  133. data/test/model/shiporder.rnc +28 -28
  134. data/test/model/shiporder.rng +86 -86
  135. data/test/model/shiporder.xml +22 -22
  136. data/test/model/shiporder.xsd +39 -39
  137. data/test/model/soap.xml +27 -27
  138. data/test/model/xinclude.xml +4 -4
  139. data/test/test.xml +2 -0
  140. data/test/{tc_attr.rb → test_attr.rb} +23 -25
  141. data/test/{tc_attr_decl.rb → test_attr_decl.rb} +13 -14
  142. data/test/{tc_attributes.rb → test_attributes.rb} +11 -18
  143. data/test/{tc_canonicalize.rb → test_canonicalize.rb} +36 -41
  144. data/test/test_deprecated_require.rb +12 -0
  145. data/test/{tc_document.rb → test_document.rb} +32 -27
  146. data/test/test_document_write.rb +146 -0
  147. data/test/{tc_dtd.rb → test_dtd.rb} +28 -29
  148. data/test/{tc_encoding.rb → test_encoding.rb} +129 -126
  149. data/test/{tc_encoding_sax.rb → test_encoding_sax.rb} +7 -6
  150. data/test/test_error.rb +178 -0
  151. data/test/test_helper.rb +3 -10
  152. data/test/test_html_parser.rb +162 -0
  153. data/test/test_html_parser_context.rb +23 -0
  154. data/test/test_namespace.rb +60 -0
  155. data/test/{tc_namespaces.rb → test_namespaces.rb} +34 -44
  156. data/test/{tc_node.rb → test_node.rb} +68 -47
  157. data/test/{tc_node_cdata.rb → test_node_cdata.rb} +12 -13
  158. data/test/{tc_node_comment.rb → test_node_comment.rb} +7 -8
  159. data/test/{tc_node_copy.rb → test_node_copy.rb} +4 -6
  160. data/test/{tc_node_edit.rb → test_node_edit.rb} +23 -41
  161. data/test/{tc_node_pi.rb → test_node_pi.rb} +37 -40
  162. data/test/{tc_node_text.rb → test_node_text.rb} +10 -12
  163. data/test/{tc_node_write.rb → test_node_write.rb} +18 -29
  164. data/test/test_node_xlink.rb +28 -0
  165. data/test/test_parser.rb +324 -0
  166. data/test/{tc_parser_context.rb → test_parser_context.rb} +41 -42
  167. data/test/{tc_properties.rb → test_properties.rb} +6 -7
  168. data/test/test_reader.rb +363 -0
  169. data/test/test_relaxng.rb +53 -0
  170. data/test/{tc_sax_parser.rb → test_sax_parser.rb} +36 -37
  171. data/test/{tc_schema.rb → test_schema.rb} +43 -37
  172. data/test/test_suite.rb +38 -40
  173. data/test/{tc_traversal.rb → test_traversal.rb} +5 -6
  174. data/test/{tc_writer.rb → test_writer.rb} +468 -448
  175. data/test/{tc_xinclude.rb → test_xinclude.rb} +4 -5
  176. data/test/test_xml.rb +262 -0
  177. data/test/{tc_xpath.rb → test_xpath.rb} +31 -32
  178. data/test/{tc_xpath_context.rb → test_xpath_context.rb} +8 -9
  179. data/test/test_xpath_expression.rb +37 -0
  180. data/test/{tc_xpointer.rb → test_xpointer.rb} +16 -18
  181. metadata +117 -95
  182. data/lib/libxml/ns.rb +0 -22
  183. data/lib/libxml/properties.rb +0 -23
  184. data/lib/libxml/reader.rb +0 -29
  185. data/lib/libxml/xpath_object.rb +0 -16
  186. data/test/etc_doc_to_s.rb +0 -21
  187. data/test/ets_doc_file.rb +0 -17
  188. data/test/ets_doc_to_s.rb +0 -23
  189. data/test/ets_gpx.rb +0 -28
  190. data/test/ets_node_gc.rb +0 -23
  191. data/test/ets_test.xml +0 -2
  192. data/test/ets_tsr.rb +0 -11
  193. data/test/tc_deprecated_require.rb +0 -13
  194. data/test/tc_document_write.rb +0 -196
  195. data/test/tc_error.rb +0 -180
  196. data/test/tc_html_parser.rb +0 -153
  197. data/test/tc_html_parser_context.rb +0 -24
  198. data/test/tc_namespace.rb +0 -62
  199. data/test/tc_node_xlink.rb +0 -29
  200. data/test/tc_parser.rb +0 -381
  201. data/test/tc_reader.rb +0 -400
  202. data/test/tc_relaxng.rb +0 -54
  203. data/test/tc_xml.rb +0 -226
  204. data/test/tc_xpath_expression.rb +0 -38
@@ -1,27 +1,19 @@
1
- # encoding: UTF-8
2
-
3
- module LibXML
4
- module XML
5
- class Schema::Element
6
- def required?
7
- !min_occurs.zero?
8
- end
9
-
10
- def array?
11
- max_occurs > 1
12
- end
13
-
14
- def elements
15
- type.elements
16
- end
17
-
18
- def annotation
19
- return if node.nil?
20
- annotations = node.children.select { |n| n.name == 'annotation' }
21
- annotations.map do |annotation|
22
- annotation.children.map(&:content).join("\n")
23
- end.join("\n")
24
- end
25
- end
26
- end
27
- end
1
+ # encoding: UTF-8
2
+
3
+ module LibXML
4
+ module XML
5
+ class Schema::Element
6
+ def required?
7
+ !min_occurs.zero?
8
+ end
9
+
10
+ def array?
11
+ max_occurs > 1
12
+ end
13
+
14
+ def elements
15
+ type.elements
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,29 +1,21 @@
1
- module LibXML
2
- module XML
3
- class Schema::Type
4
- def kind_name
5
- Schema::Types.constants.find { |k| Schema::Types.const_get(k) == kind }
6
- end
7
-
8
- def annotation
9
- return if node.nil?
10
- annotations = node.children.select { |n| n.name == 'annotation' }
11
- annotations.map do |annotation|
12
- annotation.children.map(&:content).join("\n")
13
- end.join("\n")
14
- end
15
-
16
- def annonymus_subtypes
17
- elements.select { |_, e| e.type.name.nil? }
18
- end
19
-
20
- def annonymus_subtypes_recursively(parent=nil)
21
- annonymus_subtypes.map do |element_name, e|
22
- [{[parent, element_name].compact.join('::') => e.type},
23
- e.type.annonymus_subtypes_recursively(element_name)]
24
- end.flatten
25
- end
26
-
27
- end
28
- end
29
- end
1
+ module LibXML
2
+ module XML
3
+ class Schema::Type
4
+ def kind_name
5
+ Schema::Types.constants.find { |k| Schema::Types.const_get(k) == kind }
6
+ end
7
+
8
+ def annonymus_subtypes
9
+ elements.select { |_, e| e.type.name.nil? }
10
+ end
11
+
12
+ def annonymus_subtypes_recursively(parent=nil)
13
+ annonymus_subtypes.map do |element_name, e|
14
+ [{[parent, element_name].compact.join('::') => e.type},
15
+ e.type.annonymus_subtypes_recursively(element_name)]
16
+ end.flatten
17
+ end
18
+
19
+ end
20
+ end
21
+ end
@@ -1,44 +1,48 @@
1
- # encoding: utf-8
2
-
3
- # Determine the current version of the software
4
- version = File.read('ext/libxml/ruby_xml_version.h').match(/\s*RUBY_LIBXML_VERSION\s*['"](\d.+)['"]/)[1]
5
-
6
- Gem::Specification.new do |spec|
7
- spec.name = 'libxml-ruby'
8
- spec.version = version
9
- spec.homepage = 'http://xml4r.github.com/libxml-ruby'
10
- spec.summary = 'Ruby Bindings for LibXML2'
11
- spec.description = <<-EOS
12
- The Libxml-Ruby project provides Ruby language bindings for the GNOME
13
- Libxml2 XML toolkit. It is free software, released under the MIT License.
14
- Libxml-ruby's primary advantage over REXML is performance - if speed
15
- is your need, these are good libraries to consider, as demonstrated
16
- by the informal benchmark below.
17
- EOS
18
- spec.authors = ['Ross Bamform', 'Wai-Sun Chia', 'Sean Chittenden',
19
- 'Dan Janwoski', 'Anurag Priyam', 'Charlie Savage',
20
- 'Ryan Johnson']
21
- spec.platform = Gem::Platform::RUBY
22
- spec.bindir = "bin"
23
- spec.extensions = ["ext/libxml/extconf.rb"]
24
- spec.files = Dir.glob(['HISTORY',
25
- 'LICENSE',
26
- 'libxml-ruby.gemspec',
27
- 'MANIFEST',
28
- 'Rakefile',
29
- 'README.rdoc',
30
- 'setup.rb',
31
- 'ext/libxml/*.def',
32
- 'ext/libxml/*.h',
33
- 'ext/libxml/*.c',
34
- 'ext/libxml/*.rb',
35
- 'ext/vc/*.sln',
36
- 'ext/vc/*.vcprojx',
37
- 'lib/**/*.rb',
38
- 'script/**/*',
39
- 'test/**/*'])
40
- spec.test_files = Dir.glob("test/tc_*.rb")
41
- spec.required_ruby_version = '>= 1.8.6'
42
- spec.date = DateTime.now
43
- spec.license = 'MIT'
44
- end
1
+ # encoding: utf-8
2
+ require 'date'
3
+
4
+ # Determine the current version of the software
5
+ version = File.read('ext/libxml/ruby_xml_version.h').match(/\s*RUBY_LIBXML_VERSION\s*['"](\d.+)['"]/)[1]
6
+
7
+ Gem::Specification.new do |spec|
8
+ spec.name = 'libxml-ruby'
9
+ spec.version = version
10
+ spec.homepage = 'http://xml4r.github.com/libxml-ruby'
11
+ spec.summary = 'Ruby Bindings for LibXML2'
12
+ spec.description = <<-EOS
13
+ The Libxml-Ruby project provides Ruby language bindings for the GNOME
14
+ Libxml2 XML toolkit. It is free software, released under the MIT License.
15
+ Libxml-ruby's primary advantage over REXML is performance - if speed
16
+ is your need, these are good libraries to consider, as demonstrated
17
+ by the informal benchmark below.
18
+ EOS
19
+ spec.authors = ['Ross Bamform', 'Wai-Sun Chia', 'Sean Chittenden',
20
+ 'Dan Janwoski', 'Anurag Priyam', 'Charlie Savage',
21
+ 'Ryan Johnson']
22
+ spec.platform = Gem::Platform::RUBY
23
+ spec.bindir = 'bin'
24
+ spec.extensions = ['ext/libxml/extconf.rb']
25
+ spec.files = Dir.glob(['HISTORY',
26
+ 'LICENSE',
27
+ 'libxml-ruby.gemspec',
28
+ 'MANIFEST',
29
+ 'Rakefile',
30
+ 'README.rdoc',
31
+ 'setup.rb',
32
+ 'ext/libxml/*.def',
33
+ 'ext/libxml/*.h',
34
+ 'ext/libxml/*.c',
35
+ 'ext/libxml/*.rb',
36
+ 'ext/vc/*.sln',
37
+ 'ext/vc/*.vcprojx',
38
+ 'lib/**/*.rb',
39
+ 'script/**/*',
40
+ 'test/**/*'])
41
+
42
+ spec.test_files = Dir.glob('test/test_*.rb')
43
+ spec.required_ruby_version = '>= 2.5'
44
+ spec.date = DateTime.now
45
+ spec.add_development_dependency('rake-compiler')
46
+ spec.add_development_dependency('minitest')
47
+ spec.license = 'MIT'
48
+ end
@@ -1,634 +1,634 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'rubygems'
4
- require 'benchmark'
5
- require 'hpricot'
6
- require 'rexml/document'
7
- require 'xml'
8
-
9
-
10
- # Taken from http://depixelate.com/2008/4/23/ruby-xml-parsing-benchmarks
11
-
12
- XML_STRING = DATA.read
13
-
14
- class Parse
15
- def self.libxml
16
- doc = XML::Parser.string(XML_STRING).parse
17
- ary = []
18
- doc.find('/*/*/*').each do |node|
19
- case node.name
20
- when 'ItemQueryRs'
21
- node.each_element do |child|
22
- ary << child.find_first('./ListID')
23
- end
24
- end
25
- end
26
- ary
27
- end
28
-
29
- def self.rexml
30
- doc = REXML::Document.new(XML_STRING)
31
- ary = []
32
- REXML::XPath.each(doc, '/*/*/*') do |node|
33
- case node.name
34
- when 'ItemQueryRs'
35
- node.elements.each do |element|
36
- ary << rexml_fetch(element, 'ListID')
37
- end
38
- end
39
- end
40
- ary
41
- end
42
-
43
- def self.hpricot
44
- doc = Hpricot.XML(XML_STRING)
45
- ary = []
46
- response_element = doc.search('/*/*/*').each do |node|
47
- next unless node.elem?
48
- case node.name
49
- when 'ItemQueryRs'
50
- node.containers.each do |element|
51
- ary << hpricot_fetch(element/'ListID')
52
- end
53
- end
54
- end
55
- ary
56
- end
57
-
58
- # rexml helper
59
- def self.rexml_fetch(node, name)
60
- e = REXML::XPath.first(node, name)
61
- e ? e.text : nil
62
- end
63
-
64
- # hpricot helper
65
- def self.hpricot_fetch(path)
66
- return nil if path.nil? || path.empty?
67
- path = path.first if path.is_a?(Array)
68
- path.innerHTML
69
- end
70
- end
71
-
72
- TIMES = 10
73
- Benchmark.bmbm do |x|
74
- x.report('libxml') { TIMES.times { Parse.libxml } }
75
- x.report('Hpricot') { TIMES.times { Parse.hpricot } }
76
- x.report('REXML') { TIMES.times { Parse.rexml } }
77
- end
78
-
79
- __END__
80
- <?xml version="1.0"?>
81
- <QBXML>
82
- <QBXMLMsgsRs>
83
- <ItemQueryRs requestID="1" statusCode="0" statusSeverity="Info" statusMessage="Status OK">
84
- <ItemServiceRet>
85
- <ListID>240000-1071531214</ListID>
86
- <TimeCreated>2003-12-15T15:33:34-08:00</TimeCreated>
87
- <TimeModified>2003-12-15T15:34:51-08:00</TimeModified>
88
- <EditSequence>1071531291</EditSequence>
89
- <Name>Delivery</Name>
90
- <FullName>Delivery</FullName>
91
- <IsActive>true</IsActive>
92
- <Sublevel>0</Sublevel>
93
- <SalesTaxCodeRef>
94
- <ListID>20000-999021789</ListID>
95
- <FullName>Non</FullName>
96
- </SalesTaxCodeRef>
97
- <SalesOrPurchase>
98
- <Desc>Delivery Service Fee (free for orders over $100)</Desc>
99
- <Price>15.00</Price>
100
- <AccountRef>
101
- <ListID>610001-1071531179</ListID>
102
- <FullName>Service</FullName>
103
- </AccountRef>
104
- </SalesOrPurchase>
105
- </ItemServiceRet>
106
- <ItemServiceRet>
107
- <ListID>10000-934380927</ListID>
108
- <TimeCreated>1999-08-11T07:15:27-08:00</TimeCreated>
109
- <TimeModified>1999-08-11T07:15:27-08:00</TimeModified>
110
- <EditSequence>934380927</EditSequence>
111
- <Name>Design</Name>
112
- <FullName>Design</FullName>
113
- <IsActive>true</IsActive>
114
- <Sublevel>0</Sublevel>
115
- <SalesTaxCodeRef>
116
- <ListID>20000-999021789</ListID>
117
- <FullName>Non</FullName>
118
- </SalesTaxCodeRef>
119
- <SalesOrPurchase>
120
- <Desc>Custom Landscape Design</Desc>
121
- <Price>55.00</Price>
122
- <AccountRef>
123
- <ListID>150000-934380913</ListID>
124
- <FullName>Landscaping Services:Design Services</FullName>
125
- </AccountRef>
126
- </SalesOrPurchase>
127
- </ItemServiceRet>
128
- <ItemServiceRet>
129
- <ListID>20000-934380927</ListID>
130
- <TimeCreated>1999-08-11T07:15:27-08:00</TimeCreated>
131
- <TimeModified>1999-08-11T08:59:12-08:00</TimeModified>
132
- <EditSequence>934387152</EditSequence>
133
- <Name>Gardening</Name>
134
- <FullName>Gardening</FullName>
135
- <IsActive>true</IsActive>
136
- <Sublevel>0</Sublevel>
137
- <SalesTaxCodeRef>
138
- <ListID>20000-999021789</ListID>
139
- <FullName>Non</FullName>
140
- </SalesTaxCodeRef>
141
- <SalesOrPurchase>
142
- <Desc>Weekly gardening services</Desc>
143
- <Price>0.00</Price>
144
- <AccountRef>
145
- <ListID>1F0000-934380913</ListID>
146
- <FullName>Landscaping Services:Labor:Installation</FullName>
147
- </AccountRef>
148
- </SalesOrPurchase>
149
- </ItemServiceRet>
150
- <ItemServiceRet>
151
- <ListID>30000-934380927</ListID>
152
- <TimeCreated>1999-08-11T07:15:27-08:00</TimeCreated>
153
- <TimeModified>1999-08-11T07:15:27-08:00</TimeModified>
154
- <EditSequence>934380927</EditSequence>
155
- <Name>Installation</Name>
156
- <FullName>Installation</FullName>
157
- <IsActive>true</IsActive>
158
- <Sublevel>0</Sublevel>
159
- <SalesTaxCodeRef>
160
- <ListID>20000-999021789</ListID>
161
- <FullName>Non</FullName>
162
- </SalesTaxCodeRef>
163
- <SalesOrPurchase>
164
- <Desc>Installation of landscape design</Desc>
165
- <Price>35.00</Price>
166
- <AccountRef>
167
- <ListID>1F0000-934380913</ListID>
168
- <FullName>Landscaping Services:Labor:Installation</FullName>
169
- </AccountRef>
170
- </SalesOrPurchase>
171
- </ItemServiceRet>
172
- <ItemServiceRet>
173
- <ListID>40000-934380927</ListID>
174
- <TimeCreated>1999-08-11T07:15:27-08:00</TimeCreated>
175
- <TimeModified>1999-08-11T07:15:27-08:00</TimeModified>
176
- <EditSequence>934380927</EditSequence>
177
- <Name>Pest Control</Name>
178
- <FullName>Pest Control</FullName>
179
- <IsActive>true</IsActive>
180
- <Sublevel>0</Sublevel>
181
- <SalesTaxCodeRef>
182
- <ListID>20000-999021789</ListID>
183
- <FullName>Non</FullName>
184
- </SalesTaxCodeRef>
185
- <SalesOrPurchase>
186
- <Desc>Pest control services</Desc>
187
- <Price>0.00</Price>
188
- <AccountRef>
189
- <ListID>200000-934380913</ListID>
190
- <FullName>Landscaping Services:Labor:Maintenance &amp; Repairs</FullName>
191
- </AccountRef>
192
- </SalesOrPurchase>
193
- </ItemServiceRet>
194
- <ItemServiceRet>
195
- <ListID>2E0000-1071514896</ListID>
196
- <TimeCreated>2003-12-15T11:01:36-08:00</TimeCreated>
197
- <TimeModified>2003-12-15T14:42:51-08:00</TimeModified>
198
- <EditSequence>1071528171</EditSequence>
199
- <Name>Tree Removal</Name>
200
- <FullName>Tree Removal</FullName>
201
- <IsActive>true</IsActive>
202
- <Sublevel>0</Sublevel>
203
- <SalesTaxCodeRef>
204
- <ListID>20000-999021789</ListID>
205
- <FullName>Non</FullName>
206
- </SalesTaxCodeRef>
207
- <SalesOrPurchase>
208
- <Desc>Tree Removal Service</Desc>
209
- <Price>0.00</Price>
210
- <AccountRef>
211
- <ListID>610001-1071531179</ListID>
212
- <FullName>Service</FullName>
213
- </AccountRef>
214
- </SalesOrPurchase>
215
- </ItemServiceRet>
216
- <ItemServiceRet>
217
- <ListID>50000-934380927</ListID>
218
- <TimeCreated>1999-08-11T07:15:27-08:00</TimeCreated>
219
- <TimeModified>1999-08-11T07:15:27-08:00</TimeModified>
220
- <EditSequence>934380927</EditSequence>
221
- <Name>Trimming</Name>
222
- <FullName>Trimming</FullName>
223
- <IsActive>true</IsActive>
224
- <Sublevel>0</Sublevel>
225
- <SalesTaxCodeRef>
226
- <ListID>20000-999021789</ListID>
227
- <FullName>Non</FullName>
228
- </SalesTaxCodeRef>
229
- <SalesOrPurchase>
230
- <Desc>Tree and shrub trimming</Desc>
231
- <Price>35.00</Price>
232
- <AccountRef>
233
- <ListID>200000-934380913</ListID>
234
- <FullName>Landscaping Services:Labor:Maintenance &amp; Repairs</FullName>
235
- </AccountRef>
236
- </SalesOrPurchase>
237
- </ItemServiceRet>
238
- <ItemNonInventoryRet>
239
- <ListID>B0000-934380927</ListID>
240
- <TimeCreated>1999-08-11T07:15:27-08:00</TimeCreated>
241
- <TimeModified>1999-08-11T07:15:27-08:00</TimeModified>
242
- <EditSequence>934380927</EditSequence>
243
- <Name>Concrete</Name>
244
- <FullName>Concrete</FullName>
245
- <IsActive>true</IsActive>
246
- <Sublevel>0</Sublevel>
247
- <SalesTaxCodeRef>
248
- <ListID>10000-999021789</ListID>
249
- <FullName>Tax</FullName>
250
- </SalesTaxCodeRef>
251
- <SalesOrPurchase>
252
- <Desc>Concrete for fountain installation</Desc>
253
- <Price>0.00</Price>
254
- <AccountRef>
255
- <ListID>1B0000-934380913</ListID>
256
- <FullName>Landscaping Services:Job Materials:Fountains &amp; Garden Lighting</FullName>
257
- </AccountRef>
258
- </SalesOrPurchase>
259
- </ItemNonInventoryRet>
260
- <ItemNonInventoryRet>
261
- <ListID>C0000-934380927</ListID>
262
- <TimeCreated>1999-08-11T07:15:27-08:00</TimeCreated>
263
- <TimeModified>1999-08-11T07:15:27-08:00</TimeModified>
264
- <EditSequence>934380927</EditSequence>
265
- <Name>Deck Lumber</Name>
266
- <FullName>Deck Lumber</FullName>
267
- <IsActive>true</IsActive>
268
- <Sublevel>0</Sublevel>
269
- <SalesTaxCodeRef>
270
- <ListID>10000-999021789</ListID>
271
- <FullName>Tax</FullName>
272
- </SalesTaxCodeRef>
273
- <SalesOrPurchase>
274
- <Desc>Deck Lumber</Desc>
275
- <Price>0.00</Price>
276
- <AccountRef>
277
- <ListID>1A0000-934380913</ListID>
278
- <FullName>Landscaping Services:Job Materials:Decks &amp; Patios</FullName>
279
- </AccountRef>
280
- </SalesOrPurchase>
281
- </ItemNonInventoryRet>
282
- <ItemNonInventoryRet>
283
- <ListID>210000-1071530240</ListID>
284
- <TimeCreated>2003-12-15T15:17:20-08:00</TimeCreated>
285
- <TimeModified>2003-12-15T15:17:20-08:00</TimeModified>
286
- <EditSequence>1071530240</EditSequence>
287
- <Name>Fertilizer</Name>
288
- <FullName>Fertilizer</FullName>
289
- <IsActive>true</IsActive>
290
- <Sublevel>0</Sublevel>
291
- <SalesTaxCodeRef>
292
- <ListID>10000-999021789</ListID>
293
- <FullName>Tax</FullName>
294
- </SalesTaxCodeRef>
295
- <SalesOrPurchase>
296
- <Desc>Parent Item - Do Not Use</Desc>
297
- <Price>0.00</Price>
298
- <AccountRef>
299
- <ListID>600001-1071530232</ListID>
300
- <FullName>Retail Sales</FullName>
301
- </AccountRef>
302
- </SalesOrPurchase>
303
- </ItemNonInventoryRet>
304
- <ItemInventoryRet>
305
- <ListID>250000-1071523682</ListID>
306
- <TimeCreated>2003-12-15T13:28:02-08:00</TimeCreated>
307
- <TimeModified>2003-12-15T13:44:20-08:00</TimeModified>
308
- <EditSequence>1071524660</EditSequence>
309
- <Name>Irrigation Hose</Name>
310
- <FullName>Irrigation Hose</FullName>
311
- <IsActive>true</IsActive>
312
- <Sublevel>0</Sublevel>
313
- <SalesTaxCodeRef>
314
- <ListID>10000-999021789</ListID>
315
- <FullName>Tax</FullName>
316
- </SalesTaxCodeRef>
317
- <SalesDesc>Parent Item Vinyl Irrigation Line- Do Not Purchase or Sell</SalesDesc>
318
- <SalesPrice>0.00</SalesPrice>
319
- <IncomeAccountRef>
320
- <ListID>690001-1071523679</ListID>
321
- <FullName>Landscaping Services:Job Materials:Misc Materials</FullName>
322
- </IncomeAccountRef>
323
- <PurchaseDesc>Vinyl Irrigation LineParent Item - Do Not Purchase or Sell</PurchaseDesc>
324
- <PurchaseCost>0.00</PurchaseCost>
325
- <COGSAccountRef>
326
- <ListID>240000-934380913</ListID>
327
- <FullName>Cost of Goods Sold</FullName>
328
- </COGSAccountRef>
329
- <AssetAccountRef>
330
- <ListID>60000-934380912</ListID>
331
- <FullName>Inventory Asset</FullName>
332
- </AssetAccountRef>
333
- <ReorderPoint>-1</ReorderPoint>
334
- <QuantityOnHand>0</QuantityOnHand>
335
- <AverageCost>0.00</AverageCost>
336
- <QuantityOnOrder>0</QuantityOnOrder>
337
- <QuantityOnSalesOrder>0</QuantityOnSalesOrder>
338
- </ItemInventoryRet>
339
- <ItemInventoryRet>
340
- <ListID>270000-1071524193</ListID>
341
- <TimeCreated>2003-12-15T13:36:33-08:00</TimeCreated>
342
- <TimeModified>2003-12-15T13:38:13-08:00</TimeModified>
343
- <EditSequence>1071524293</EditSequence>
344
- <Name>1/2" Line</Name>
345
- <FullName>Irrigation Hose:1/2" Line</FullName>
346
- <IsActive>true</IsActive>
347
- <ParentRef>
348
- <ListID>250000-1071523682</ListID>
349
- <FullName>Irrigation Hose</FullName>
350
- </ParentRef>
351
- <Sublevel>1</Sublevel>
352
- <SalesTaxCodeRef>
353
- <ListID>10000-999021789</ListID>
354
- <FullName>Tax</FullName>
355
- </SalesTaxCodeRef>
356
- <SalesDesc>1/2" Vinyl Irrigation Line</SalesDesc>
357
- <SalesPrice>0.15</SalesPrice>
358
- <IncomeAccountRef>
359
- <ListID>690001-1071523679</ListID>
360
- <FullName>Landscaping Services:Job Materials:Misc Materials</FullName>
361
- </IncomeAccountRef>
362
- <PurchaseDesc>1/2" Vinyl Irrigation Line</PurchaseDesc>
363
- <PurchaseCost>0.12</PurchaseCost>
364
- <COGSAccountRef>
365
- <ListID>240000-934380913</ListID>
366
- <FullName>Cost of Goods Sold</FullName>
367
- </COGSAccountRef>
368
- <AssetAccountRef>
369
- <ListID>60000-934380912</ListID>
370
- <FullName>Inventory Asset</FullName>
371
- </AssetAccountRef>
372
- <ReorderPoint>1500</ReorderPoint>
373
- <QuantityOnHand>1783</QuantityOnHand>
374
- <AverageCost>0.12</AverageCost>
375
- <QuantityOnOrder>0</QuantityOnOrder>
376
- <QuantityOnSalesOrder>0</QuantityOnSalesOrder>
377
- </ItemInventoryRet>
378
- <ItemInventoryRet>
379
- <ListID>260000-1071523858</ListID>
380
- <TimeCreated>2003-12-15T13:30:58-08:00</TimeCreated>
381
- <TimeModified>2003-12-15T13:37:52-08:00</TimeModified>
382
- <EditSequence>1071524272</EditSequence>
383
- <Name>1/4" Line</Name>
384
- <FullName>Irrigation Hose:1/4" Line</FullName>
385
- <IsActive>true</IsActive>
386
- <ParentRef>
387
- <ListID>250000-1071523682</ListID>
388
- <FullName>Irrigation Hose</FullName>
389
- </ParentRef>
390
- <Sublevel>1</Sublevel>
391
- <SalesTaxCodeRef>
392
- <ListID>10000-999021789</ListID>
393
- <FullName>Tax</FullName>
394
- </SalesTaxCodeRef>
395
- <SalesDesc>1/4" Vinyl Irrigation Line</SalesDesc>
396
- <SalesPrice>0.10</SalesPrice>
397
- <IncomeAccountRef>
398
- <ListID>690001-1071523679</ListID>
399
- <FullName>Landscaping Services:Job Materials:Misc Materials</FullName>
400
- </IncomeAccountRef>
401
- <PurchaseDesc>1/4" Vinyl Irrigation Line</PurchaseDesc>
402
- <PurchaseCost>0.07</PurchaseCost>
403
- <COGSAccountRef>
404
- <ListID>240000-934380913</ListID>
405
- <FullName>Cost of Goods Sold</FullName>
406
- </COGSAccountRef>
407
- <AssetAccountRef>
408
- <ListID>60000-934380912</ListID>
409
- <FullName>Inventory Asset</FullName>
410
- </AssetAccountRef>
411
- <ReorderPoint>500</ReorderPoint>
412
- <QuantityOnHand>1235</QuantityOnHand>
413
- <AverageCost>0.07</AverageCost>
414
- <QuantityOnOrder>0</QuantityOnOrder>
415
- <QuantityOnSalesOrder>0</QuantityOnSalesOrder>
416
- </ItemInventoryRet>
417
- <ItemInventoryRet>
418
- <ListID>280000-1071524260</ListID>
419
- <TimeCreated>2003-12-15T13:37:40-08:00</TimeCreated>
420
- <TimeModified>2003-12-15T13:37:40-08:00</TimeModified>
421
- <EditSequence>1071524260</EditSequence>
422
- <Name>3/4" Line</Name>
423
- <FullName>Irrigation Hose:3/4" Line</FullName>
424
- <IsActive>true</IsActive>
425
- <ParentRef>
426
- <ListID>250000-1071523682</ListID>
427
- <FullName>Irrigation Hose</FullName>
428
- </ParentRef>
429
- <Sublevel>1</Sublevel>
430
- <SalesTaxCodeRef>
431
- <ListID>10000-999021789</ListID>
432
- <FullName>Tax</FullName>
433
- </SalesTaxCodeRef>
434
- <SalesDesc>3/4" Vinyl Irrigation Line</SalesDesc>
435
- <SalesPrice>0.27</SalesPrice>
436
- <IncomeAccountRef>
437
- <ListID>690001-1071523679</ListID>
438
- <FullName>Landscaping Services:Job Materials:Misc Materials</FullName>
439
- </IncomeAccountRef>
440
- <PurchaseDesc>3/4" Vinyl Irrigation Line</PurchaseDesc>
441
- <PurchaseCost>0.18</PurchaseCost>
442
- <COGSAccountRef>
443
- <ListID>240000-934380913</ListID>
444
- <FullName>Cost of Goods Sold</FullName>
445
- </COGSAccountRef>
446
- <AssetAccountRef>
447
- <ListID>60000-934380912</ListID>
448
- <FullName>Inventory Asset</FullName>
449
- </AssetAccountRef>
450
- <ReorderPoint>1500</ReorderPoint>
451
- <QuantityOnHand>2670</QuantityOnHand>
452
- <AverageCost>0.18</AverageCost>
453
- <QuantityOnOrder>0</QuantityOnOrder>
454
- <QuantityOnSalesOrder>0</QuantityOnSalesOrder>
455
- </ItemInventoryRet>
456
- <ItemInventoryRet>
457
- <ListID>60000-934380927</ListID>
458
- <TimeCreated>1999-08-11T07:15:27-08:00</TimeCreated>
459
- <TimeModified>1999-08-11T07:15:27-08:00</TimeModified>
460
- <EditSequence>934380927</EditSequence>
461
- <Name>Lighting</Name>
462
- <FullName>Lighting</FullName>
463
- <IsActive>true</IsActive>
464
- <Sublevel>0</Sublevel>
465
- <SalesTaxCodeRef>
466
- <ListID>10000-999021789</ListID>
467
- <FullName>Tax</FullName>
468
- </SalesTaxCodeRef>
469
- <SalesDesc>Garden Lighting</SalesDesc>
470
- <SalesPrice>0.00</SalesPrice>
471
- <IncomeAccountRef>
472
- <ListID>1B0000-934380913</ListID>
473
- <FullName>Landscaping Services:Job Materials:Fountains &amp; Garden Lighting</FullName>
474
- </IncomeAccountRef>
475
- <PurchaseDesc>Garden Lighting</PurchaseDesc>
476
- <PurchaseCost>0.00</PurchaseCost>
477
- <COGSAccountRef>
478
- <ListID>240000-934380913</ListID>
479
- <FullName>Cost of Goods Sold</FullName>
480
- </COGSAccountRef>
481
- <AssetAccountRef>
482
- <ListID>60000-934380912</ListID>
483
- <FullName>Inventory Asset</FullName>
484
- </AssetAccountRef>
485
- <QuantityOnHand>94</QuantityOnHand>
486
- <AverageCost>14.80</AverageCost>
487
- <QuantityOnOrder>28</QuantityOnOrder>
488
- <QuantityOnSalesOrder>0</QuantityOnSalesOrder>
489
- </ItemInventoryRet>
490
- <ItemInventoryRet>
491
- <ListID>70000-934380927</ListID>
492
- <TimeCreated>1999-08-11T07:15:27-08:00</TimeCreated>
493
- <TimeModified>1999-08-11T07:15:27-08:00</TimeModified>
494
- <EditSequence>934380927</EditSequence>
495
- <Name>Pump</Name>
496
- <FullName>Pump</FullName>
497
- <IsActive>true</IsActive>
498
- <Sublevel>0</Sublevel>
499
- <SalesTaxCodeRef>
500
- <ListID>10000-999021789</ListID>
501
- <FullName>Tax</FullName>
502
- </SalesTaxCodeRef>
503
- <SalesDesc>Fountain pump</SalesDesc>
504
- <SalesPrice>75.00</SalesPrice>
505
- <IncomeAccountRef>
506
- <ListID>1B0000-934380913</ListID>
507
- <FullName>Landscaping Services:Job Materials:Fountains &amp; Garden Lighting</FullName>
508
- </IncomeAccountRef>
509
- <PurchaseDesc>Fountain pump #198-30</PurchaseDesc>
510
- <PurchaseCost>56.00</PurchaseCost>
511
- <COGSAccountRef>
512
- <ListID>240000-934380913</ListID>
513
- <FullName>Cost of Goods Sold</FullName>
514
- </COGSAccountRef>
515
- <AssetAccountRef>
516
- <ListID>60000-934380912</ListID>
517
- <FullName>Inventory Asset</FullName>
518
- </AssetAccountRef>
519
- <QuantityOnHand>48</QuantityOnHand>
520
- <AverageCost>53.93</AverageCost>
521
- <QuantityOnOrder>0</QuantityOnOrder>
522
- <QuantityOnSalesOrder>0</QuantityOnSalesOrder>
523
- </ItemInventoryRet>
524
- <ItemInventoryRet>
525
- <ListID>80000-934380927</ListID>
526
- <TimeCreated>1999-08-11T07:15:27-08:00</TimeCreated>
527
- <TimeModified>1999-08-11T07:15:27-08:00</TimeModified>
528
- <EditSequence>934380927</EditSequence>
529
- <Name>Soil</Name>
530
- <FullName>Soil</FullName>
531
- <IsActive>true</IsActive>
532
- <Sublevel>0</Sublevel>
533
- <SalesTaxCodeRef>
534
- <ListID>10000-999021789</ListID>
535
- <FullName>Tax</FullName>
536
- </SalesTaxCodeRef>
537
- <SalesDesc>Soil, 2 cubic ft bag</SalesDesc>
538
- <SalesPrice>6.75</SalesPrice>
539
- <IncomeAccountRef>
540
- <ListID>1C0000-934380913</ListID>
541
- <FullName>Landscaping Services:Job Materials:Plants and Sod</FullName>
542
- </IncomeAccountRef>
543
- <PurchaseDesc>Soil, 2 cubic ft bag</PurchaseDesc>
544
- <PurchaseCost>5.30</PurchaseCost>
545
- <COGSAccountRef>
546
- <ListID>240000-934380913</ListID>
547
- <FullName>Cost of Goods Sold</FullName>
548
- </COGSAccountRef>
549
- <PrefVendorRef>
550
- <ListID>10000-934380927</ListID>
551
- <FullName>Middlefield Nursery</FullName>
552
- </PrefVendorRef>
553
- <AssetAccountRef>
554
- <ListID>60000-934380912</ListID>
555
- <FullName>Inventory Asset</FullName>
556
- </AssetAccountRef>
557
- <ReorderPoint>25</ReorderPoint>
558
- <QuantityOnHand>0</QuantityOnHand>
559
- <AverageCost>5.30</AverageCost>
560
- <QuantityOnOrder>6</QuantityOnOrder>
561
- <QuantityOnSalesOrder>10</QuantityOnSalesOrder>
562
- </ItemInventoryRet>
563
- <ItemInventoryRet>
564
- <ListID>90000-934380927</ListID>
565
- <TimeCreated>1999-08-11T07:15:27-08:00</TimeCreated>
566
- <TimeModified>1999-08-11T07:15:27-08:00</TimeModified>
567
- <EditSequence>934380927</EditSequence>
568
- <Name>Sprinkler Hds</Name>
569
- <FullName>Sprinkler Hds</FullName>
570
- <IsActive>true</IsActive>
571
- <Sublevel>0</Sublevel>
572
- <SalesTaxCodeRef>
573
- <ListID>10000-999021789</ListID>
574
- <FullName>Tax</FullName>
575
- </SalesTaxCodeRef>
576
- <SalesDesc>Sprinkler heads</SalesDesc>
577
- <SalesPrice>0.00</SalesPrice>
578
- <IncomeAccountRef>
579
- <ListID>1D0000-934380913</ListID>
580
- <FullName>Landscaping Services:Job Materials:Sprinklers &amp; Drip systems</FullName>
581
- </IncomeAccountRef>
582
- <PurchaseDesc>Sprinkler head #BLS9081-09</PurchaseDesc>
583
- <PurchaseCost>0.00</PurchaseCost>
584
- <COGSAccountRef>
585
- <ListID>240000-934380913</ListID>
586
- <FullName>Cost of Goods Sold</FullName>
587
- </COGSAccountRef>
588
- <AssetAccountRef>
589
- <ListID>60000-934380912</ListID>
590
- <FullName>Inventory Asset</FullName>
591
- </AssetAccountRef>
592
- <QuantityOnHand>69</QuantityOnHand>
593
- <AverageCost>6.38</AverageCost>
594
- <QuantityOnOrder>36</QuantityOnOrder>
595
- <QuantityOnSalesOrder>0</QuantityOnSalesOrder>
596
- </ItemInventoryRet>
597
- <ItemInventoryRet>
598
- <ListID>A0000-934380927</ListID>
599
- <TimeCreated>1999-08-11T07:15:27-08:00</TimeCreated>
600
- <TimeModified>1999-08-11T07:15:27-08:00</TimeModified>
601
- <EditSequence>934380927</EditSequence>
602
- <Name>Sprkl pipes</Name>
603
- <FullName>Sprkl pipes</FullName>
604
- <IsActive>true</IsActive>
605
- <Sublevel>0</Sublevel>
606
- <SalesTaxCodeRef>
607
- <ListID>10000-999021789</ListID>
608
- <FullName>Tax</FullName>
609
- </SalesTaxCodeRef>
610
- <SalesDesc>Plastic sprinkler piping</SalesDesc>
611
- <SalesPrice>2.75</SalesPrice>
612
- <IncomeAccountRef>
613
- <ListID>1D0000-934380913</ListID>
614
- <FullName>Landscaping Services:Job Materials:Sprinklers &amp; Drip systems</FullName>
615
- </IncomeAccountRef>
616
- <PurchaseDesc>Plastic sprinkler piping #1098-20</PurchaseDesc>
617
- <PurchaseCost>2.10</PurchaseCost>
618
- <COGSAccountRef>
619
- <ListID>240000-934380913</ListID>
620
- <FullName>Cost of Goods Sold</FullName>
621
- </COGSAccountRef>
622
- <AssetAccountRef>
623
- <ListID>60000-934380912</ListID>
624
- <FullName>Inventory Asset</FullName>
625
- </AssetAccountRef>
626
- <ReorderPoint>250</ReorderPoint>
627
- <QuantityOnHand>826</QuantityOnHand>
628
- <AverageCost>2.10</AverageCost>
629
- <QuantityOnOrder>115</QuantityOnOrder>
630
- <QuantityOnSalesOrder>0</QuantityOnSalesOrder>
631
- </ItemInventoryRet>
632
- </ItemQueryRs>
633
- </QBXMLMsgsRs>
634
- </QBXML>
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require 'benchmark'
5
+ require 'hpricot'
6
+ require 'rexml/document'
7
+ require 'xml'
8
+
9
+
10
+ # Taken from http://depixelate.com/2008/4/23/ruby-xml-parsing-benchmarks
11
+
12
+ XML_STRING = DATA.read
13
+
14
+ class Parse
15
+ def self.libxml
16
+ doc = XML::Parser.string(XML_STRING).parse
17
+ ary = []
18
+ doc.find('/*/*/*').each do |node|
19
+ case node.name
20
+ when 'ItemQueryRs'
21
+ node.each_element do |child|
22
+ ary << child.find_first('./ListID')
23
+ end
24
+ end
25
+ end
26
+ ary
27
+ end
28
+
29
+ def self.rexml
30
+ doc = REXML::Document.new(XML_STRING)
31
+ ary = []
32
+ REXML::XPath.each(doc, '/*/*/*') do |node|
33
+ case node.name
34
+ when 'ItemQueryRs'
35
+ node.elements.each do |element|
36
+ ary << rexml_fetch(element, 'ListID')
37
+ end
38
+ end
39
+ end
40
+ ary
41
+ end
42
+
43
+ def self.hpricot
44
+ doc = Hpricot.XML(XML_STRING)
45
+ ary = []
46
+ response_element = doc.search('/*/*/*').each do |node|
47
+ next unless node.elem?
48
+ case node.name
49
+ when 'ItemQueryRs'
50
+ node.containers.each do |element|
51
+ ary << hpricot_fetch(element/'ListID')
52
+ end
53
+ end
54
+ end
55
+ ary
56
+ end
57
+
58
+ # rexml helper
59
+ def self.rexml_fetch(node, name)
60
+ e = REXML::XPath.first(node, name)
61
+ e ? e.text : nil
62
+ end
63
+
64
+ # hpricot helper
65
+ def self.hpricot_fetch(path)
66
+ return nil if path.nil? || path.empty?
67
+ path = path.first if path.is_a?(Array)
68
+ path.innerHTML
69
+ end
70
+ end
71
+
72
+ TIMES = 10
73
+ Benchmark.bmbm do |x|
74
+ x.report('libxml') { TIMES.times { Parse.libxml } }
75
+ x.report('Hpricot') { TIMES.times { Parse.hpricot } }
76
+ x.report('REXML') { TIMES.times { Parse.rexml } }
77
+ end
78
+
79
+ __END__
80
+ <?xml version="1.0"?>
81
+ <QBXML>
82
+ <QBXMLMsgsRs>
83
+ <ItemQueryRs requestID="1" statusCode="0" statusSeverity="Info" statusMessage="Status OK">
84
+ <ItemServiceRet>
85
+ <ListID>240000-1071531214</ListID>
86
+ <TimeCreated>2003-12-15T15:33:34-08:00</TimeCreated>
87
+ <TimeModified>2003-12-15T15:34:51-08:00</TimeModified>
88
+ <EditSequence>1071531291</EditSequence>
89
+ <Name>Delivery</Name>
90
+ <FullName>Delivery</FullName>
91
+ <IsActive>true</IsActive>
92
+ <Sublevel>0</Sublevel>
93
+ <SalesTaxCodeRef>
94
+ <ListID>20000-999021789</ListID>
95
+ <FullName>Non</FullName>
96
+ </SalesTaxCodeRef>
97
+ <SalesOrPurchase>
98
+ <Desc>Delivery Service Fee (free for orders over $100)</Desc>
99
+ <Price>15.00</Price>
100
+ <AccountRef>
101
+ <ListID>610001-1071531179</ListID>
102
+ <FullName>Service</FullName>
103
+ </AccountRef>
104
+ </SalesOrPurchase>
105
+ </ItemServiceRet>
106
+ <ItemServiceRet>
107
+ <ListID>10000-934380927</ListID>
108
+ <TimeCreated>1999-08-11T07:15:27-08:00</TimeCreated>
109
+ <TimeModified>1999-08-11T07:15:27-08:00</TimeModified>
110
+ <EditSequence>934380927</EditSequence>
111
+ <Name>Design</Name>
112
+ <FullName>Design</FullName>
113
+ <IsActive>true</IsActive>
114
+ <Sublevel>0</Sublevel>
115
+ <SalesTaxCodeRef>
116
+ <ListID>20000-999021789</ListID>
117
+ <FullName>Non</FullName>
118
+ </SalesTaxCodeRef>
119
+ <SalesOrPurchase>
120
+ <Desc>Custom Landscape Design</Desc>
121
+ <Price>55.00</Price>
122
+ <AccountRef>
123
+ <ListID>150000-934380913</ListID>
124
+ <FullName>Landscaping Services:Design Services</FullName>
125
+ </AccountRef>
126
+ </SalesOrPurchase>
127
+ </ItemServiceRet>
128
+ <ItemServiceRet>
129
+ <ListID>20000-934380927</ListID>
130
+ <TimeCreated>1999-08-11T07:15:27-08:00</TimeCreated>
131
+ <TimeModified>1999-08-11T08:59:12-08:00</TimeModified>
132
+ <EditSequence>934387152</EditSequence>
133
+ <Name>Gardening</Name>
134
+ <FullName>Gardening</FullName>
135
+ <IsActive>true</IsActive>
136
+ <Sublevel>0</Sublevel>
137
+ <SalesTaxCodeRef>
138
+ <ListID>20000-999021789</ListID>
139
+ <FullName>Non</FullName>
140
+ </SalesTaxCodeRef>
141
+ <SalesOrPurchase>
142
+ <Desc>Weekly gardening services</Desc>
143
+ <Price>0.00</Price>
144
+ <AccountRef>
145
+ <ListID>1F0000-934380913</ListID>
146
+ <FullName>Landscaping Services:Labor:Installation</FullName>
147
+ </AccountRef>
148
+ </SalesOrPurchase>
149
+ </ItemServiceRet>
150
+ <ItemServiceRet>
151
+ <ListID>30000-934380927</ListID>
152
+ <TimeCreated>1999-08-11T07:15:27-08:00</TimeCreated>
153
+ <TimeModified>1999-08-11T07:15:27-08:00</TimeModified>
154
+ <EditSequence>934380927</EditSequence>
155
+ <Name>Installation</Name>
156
+ <FullName>Installation</FullName>
157
+ <IsActive>true</IsActive>
158
+ <Sublevel>0</Sublevel>
159
+ <SalesTaxCodeRef>
160
+ <ListID>20000-999021789</ListID>
161
+ <FullName>Non</FullName>
162
+ </SalesTaxCodeRef>
163
+ <SalesOrPurchase>
164
+ <Desc>Installation of landscape design</Desc>
165
+ <Price>35.00</Price>
166
+ <AccountRef>
167
+ <ListID>1F0000-934380913</ListID>
168
+ <FullName>Landscaping Services:Labor:Installation</FullName>
169
+ </AccountRef>
170
+ </SalesOrPurchase>
171
+ </ItemServiceRet>
172
+ <ItemServiceRet>
173
+ <ListID>40000-934380927</ListID>
174
+ <TimeCreated>1999-08-11T07:15:27-08:00</TimeCreated>
175
+ <TimeModified>1999-08-11T07:15:27-08:00</TimeModified>
176
+ <EditSequence>934380927</EditSequence>
177
+ <Name>Pest Control</Name>
178
+ <FullName>Pest Control</FullName>
179
+ <IsActive>true</IsActive>
180
+ <Sublevel>0</Sublevel>
181
+ <SalesTaxCodeRef>
182
+ <ListID>20000-999021789</ListID>
183
+ <FullName>Non</FullName>
184
+ </SalesTaxCodeRef>
185
+ <SalesOrPurchase>
186
+ <Desc>Pest control services</Desc>
187
+ <Price>0.00</Price>
188
+ <AccountRef>
189
+ <ListID>200000-934380913</ListID>
190
+ <FullName>Landscaping Services:Labor:Maintenance &amp; Repairs</FullName>
191
+ </AccountRef>
192
+ </SalesOrPurchase>
193
+ </ItemServiceRet>
194
+ <ItemServiceRet>
195
+ <ListID>2E0000-1071514896</ListID>
196
+ <TimeCreated>2003-12-15T11:01:36-08:00</TimeCreated>
197
+ <TimeModified>2003-12-15T14:42:51-08:00</TimeModified>
198
+ <EditSequence>1071528171</EditSequence>
199
+ <Name>Tree Removal</Name>
200
+ <FullName>Tree Removal</FullName>
201
+ <IsActive>true</IsActive>
202
+ <Sublevel>0</Sublevel>
203
+ <SalesTaxCodeRef>
204
+ <ListID>20000-999021789</ListID>
205
+ <FullName>Non</FullName>
206
+ </SalesTaxCodeRef>
207
+ <SalesOrPurchase>
208
+ <Desc>Tree Removal Service</Desc>
209
+ <Price>0.00</Price>
210
+ <AccountRef>
211
+ <ListID>610001-1071531179</ListID>
212
+ <FullName>Service</FullName>
213
+ </AccountRef>
214
+ </SalesOrPurchase>
215
+ </ItemServiceRet>
216
+ <ItemServiceRet>
217
+ <ListID>50000-934380927</ListID>
218
+ <TimeCreated>1999-08-11T07:15:27-08:00</TimeCreated>
219
+ <TimeModified>1999-08-11T07:15:27-08:00</TimeModified>
220
+ <EditSequence>934380927</EditSequence>
221
+ <Name>Trimming</Name>
222
+ <FullName>Trimming</FullName>
223
+ <IsActive>true</IsActive>
224
+ <Sublevel>0</Sublevel>
225
+ <SalesTaxCodeRef>
226
+ <ListID>20000-999021789</ListID>
227
+ <FullName>Non</FullName>
228
+ </SalesTaxCodeRef>
229
+ <SalesOrPurchase>
230
+ <Desc>Tree and shrub trimming</Desc>
231
+ <Price>35.00</Price>
232
+ <AccountRef>
233
+ <ListID>200000-934380913</ListID>
234
+ <FullName>Landscaping Services:Labor:Maintenance &amp; Repairs</FullName>
235
+ </AccountRef>
236
+ </SalesOrPurchase>
237
+ </ItemServiceRet>
238
+ <ItemNonInventoryRet>
239
+ <ListID>B0000-934380927</ListID>
240
+ <TimeCreated>1999-08-11T07:15:27-08:00</TimeCreated>
241
+ <TimeModified>1999-08-11T07:15:27-08:00</TimeModified>
242
+ <EditSequence>934380927</EditSequence>
243
+ <Name>Concrete</Name>
244
+ <FullName>Concrete</FullName>
245
+ <IsActive>true</IsActive>
246
+ <Sublevel>0</Sublevel>
247
+ <SalesTaxCodeRef>
248
+ <ListID>10000-999021789</ListID>
249
+ <FullName>Tax</FullName>
250
+ </SalesTaxCodeRef>
251
+ <SalesOrPurchase>
252
+ <Desc>Concrete for fountain installation</Desc>
253
+ <Price>0.00</Price>
254
+ <AccountRef>
255
+ <ListID>1B0000-934380913</ListID>
256
+ <FullName>Landscaping Services:Job Materials:Fountains &amp; Garden Lighting</FullName>
257
+ </AccountRef>
258
+ </SalesOrPurchase>
259
+ </ItemNonInventoryRet>
260
+ <ItemNonInventoryRet>
261
+ <ListID>C0000-934380927</ListID>
262
+ <TimeCreated>1999-08-11T07:15:27-08:00</TimeCreated>
263
+ <TimeModified>1999-08-11T07:15:27-08:00</TimeModified>
264
+ <EditSequence>934380927</EditSequence>
265
+ <Name>Deck Lumber</Name>
266
+ <FullName>Deck Lumber</FullName>
267
+ <IsActive>true</IsActive>
268
+ <Sublevel>0</Sublevel>
269
+ <SalesTaxCodeRef>
270
+ <ListID>10000-999021789</ListID>
271
+ <FullName>Tax</FullName>
272
+ </SalesTaxCodeRef>
273
+ <SalesOrPurchase>
274
+ <Desc>Deck Lumber</Desc>
275
+ <Price>0.00</Price>
276
+ <AccountRef>
277
+ <ListID>1A0000-934380913</ListID>
278
+ <FullName>Landscaping Services:Job Materials:Decks &amp; Patios</FullName>
279
+ </AccountRef>
280
+ </SalesOrPurchase>
281
+ </ItemNonInventoryRet>
282
+ <ItemNonInventoryRet>
283
+ <ListID>210000-1071530240</ListID>
284
+ <TimeCreated>2003-12-15T15:17:20-08:00</TimeCreated>
285
+ <TimeModified>2003-12-15T15:17:20-08:00</TimeModified>
286
+ <EditSequence>1071530240</EditSequence>
287
+ <Name>Fertilizer</Name>
288
+ <FullName>Fertilizer</FullName>
289
+ <IsActive>true</IsActive>
290
+ <Sublevel>0</Sublevel>
291
+ <SalesTaxCodeRef>
292
+ <ListID>10000-999021789</ListID>
293
+ <FullName>Tax</FullName>
294
+ </SalesTaxCodeRef>
295
+ <SalesOrPurchase>
296
+ <Desc>Parent Item - Do Not Use</Desc>
297
+ <Price>0.00</Price>
298
+ <AccountRef>
299
+ <ListID>600001-1071530232</ListID>
300
+ <FullName>Retail Sales</FullName>
301
+ </AccountRef>
302
+ </SalesOrPurchase>
303
+ </ItemNonInventoryRet>
304
+ <ItemInventoryRet>
305
+ <ListID>250000-1071523682</ListID>
306
+ <TimeCreated>2003-12-15T13:28:02-08:00</TimeCreated>
307
+ <TimeModified>2003-12-15T13:44:20-08:00</TimeModified>
308
+ <EditSequence>1071524660</EditSequence>
309
+ <Name>Irrigation Hose</Name>
310
+ <FullName>Irrigation Hose</FullName>
311
+ <IsActive>true</IsActive>
312
+ <Sublevel>0</Sublevel>
313
+ <SalesTaxCodeRef>
314
+ <ListID>10000-999021789</ListID>
315
+ <FullName>Tax</FullName>
316
+ </SalesTaxCodeRef>
317
+ <SalesDesc>Parent Item Vinyl Irrigation Line- Do Not Purchase or Sell</SalesDesc>
318
+ <SalesPrice>0.00</SalesPrice>
319
+ <IncomeAccountRef>
320
+ <ListID>690001-1071523679</ListID>
321
+ <FullName>Landscaping Services:Job Materials:Misc Materials</FullName>
322
+ </IncomeAccountRef>
323
+ <PurchaseDesc>Vinyl Irrigation LineParent Item - Do Not Purchase or Sell</PurchaseDesc>
324
+ <PurchaseCost>0.00</PurchaseCost>
325
+ <COGSAccountRef>
326
+ <ListID>240000-934380913</ListID>
327
+ <FullName>Cost of Goods Sold</FullName>
328
+ </COGSAccountRef>
329
+ <AssetAccountRef>
330
+ <ListID>60000-934380912</ListID>
331
+ <FullName>Inventory Asset</FullName>
332
+ </AssetAccountRef>
333
+ <ReorderPoint>-1</ReorderPoint>
334
+ <QuantityOnHand>0</QuantityOnHand>
335
+ <AverageCost>0.00</AverageCost>
336
+ <QuantityOnOrder>0</QuantityOnOrder>
337
+ <QuantityOnSalesOrder>0</QuantityOnSalesOrder>
338
+ </ItemInventoryRet>
339
+ <ItemInventoryRet>
340
+ <ListID>270000-1071524193</ListID>
341
+ <TimeCreated>2003-12-15T13:36:33-08:00</TimeCreated>
342
+ <TimeModified>2003-12-15T13:38:13-08:00</TimeModified>
343
+ <EditSequence>1071524293</EditSequence>
344
+ <Name>1/2" Line</Name>
345
+ <FullName>Irrigation Hose:1/2" Line</FullName>
346
+ <IsActive>true</IsActive>
347
+ <ParentRef>
348
+ <ListID>250000-1071523682</ListID>
349
+ <FullName>Irrigation Hose</FullName>
350
+ </ParentRef>
351
+ <Sublevel>1</Sublevel>
352
+ <SalesTaxCodeRef>
353
+ <ListID>10000-999021789</ListID>
354
+ <FullName>Tax</FullName>
355
+ </SalesTaxCodeRef>
356
+ <SalesDesc>1/2" Vinyl Irrigation Line</SalesDesc>
357
+ <SalesPrice>0.15</SalesPrice>
358
+ <IncomeAccountRef>
359
+ <ListID>690001-1071523679</ListID>
360
+ <FullName>Landscaping Services:Job Materials:Misc Materials</FullName>
361
+ </IncomeAccountRef>
362
+ <PurchaseDesc>1/2" Vinyl Irrigation Line</PurchaseDesc>
363
+ <PurchaseCost>0.12</PurchaseCost>
364
+ <COGSAccountRef>
365
+ <ListID>240000-934380913</ListID>
366
+ <FullName>Cost of Goods Sold</FullName>
367
+ </COGSAccountRef>
368
+ <AssetAccountRef>
369
+ <ListID>60000-934380912</ListID>
370
+ <FullName>Inventory Asset</FullName>
371
+ </AssetAccountRef>
372
+ <ReorderPoint>1500</ReorderPoint>
373
+ <QuantityOnHand>1783</QuantityOnHand>
374
+ <AverageCost>0.12</AverageCost>
375
+ <QuantityOnOrder>0</QuantityOnOrder>
376
+ <QuantityOnSalesOrder>0</QuantityOnSalesOrder>
377
+ </ItemInventoryRet>
378
+ <ItemInventoryRet>
379
+ <ListID>260000-1071523858</ListID>
380
+ <TimeCreated>2003-12-15T13:30:58-08:00</TimeCreated>
381
+ <TimeModified>2003-12-15T13:37:52-08:00</TimeModified>
382
+ <EditSequence>1071524272</EditSequence>
383
+ <Name>1/4" Line</Name>
384
+ <FullName>Irrigation Hose:1/4" Line</FullName>
385
+ <IsActive>true</IsActive>
386
+ <ParentRef>
387
+ <ListID>250000-1071523682</ListID>
388
+ <FullName>Irrigation Hose</FullName>
389
+ </ParentRef>
390
+ <Sublevel>1</Sublevel>
391
+ <SalesTaxCodeRef>
392
+ <ListID>10000-999021789</ListID>
393
+ <FullName>Tax</FullName>
394
+ </SalesTaxCodeRef>
395
+ <SalesDesc>1/4" Vinyl Irrigation Line</SalesDesc>
396
+ <SalesPrice>0.10</SalesPrice>
397
+ <IncomeAccountRef>
398
+ <ListID>690001-1071523679</ListID>
399
+ <FullName>Landscaping Services:Job Materials:Misc Materials</FullName>
400
+ </IncomeAccountRef>
401
+ <PurchaseDesc>1/4" Vinyl Irrigation Line</PurchaseDesc>
402
+ <PurchaseCost>0.07</PurchaseCost>
403
+ <COGSAccountRef>
404
+ <ListID>240000-934380913</ListID>
405
+ <FullName>Cost of Goods Sold</FullName>
406
+ </COGSAccountRef>
407
+ <AssetAccountRef>
408
+ <ListID>60000-934380912</ListID>
409
+ <FullName>Inventory Asset</FullName>
410
+ </AssetAccountRef>
411
+ <ReorderPoint>500</ReorderPoint>
412
+ <QuantityOnHand>1235</QuantityOnHand>
413
+ <AverageCost>0.07</AverageCost>
414
+ <QuantityOnOrder>0</QuantityOnOrder>
415
+ <QuantityOnSalesOrder>0</QuantityOnSalesOrder>
416
+ </ItemInventoryRet>
417
+ <ItemInventoryRet>
418
+ <ListID>280000-1071524260</ListID>
419
+ <TimeCreated>2003-12-15T13:37:40-08:00</TimeCreated>
420
+ <TimeModified>2003-12-15T13:37:40-08:00</TimeModified>
421
+ <EditSequence>1071524260</EditSequence>
422
+ <Name>3/4" Line</Name>
423
+ <FullName>Irrigation Hose:3/4" Line</FullName>
424
+ <IsActive>true</IsActive>
425
+ <ParentRef>
426
+ <ListID>250000-1071523682</ListID>
427
+ <FullName>Irrigation Hose</FullName>
428
+ </ParentRef>
429
+ <Sublevel>1</Sublevel>
430
+ <SalesTaxCodeRef>
431
+ <ListID>10000-999021789</ListID>
432
+ <FullName>Tax</FullName>
433
+ </SalesTaxCodeRef>
434
+ <SalesDesc>3/4" Vinyl Irrigation Line</SalesDesc>
435
+ <SalesPrice>0.27</SalesPrice>
436
+ <IncomeAccountRef>
437
+ <ListID>690001-1071523679</ListID>
438
+ <FullName>Landscaping Services:Job Materials:Misc Materials</FullName>
439
+ </IncomeAccountRef>
440
+ <PurchaseDesc>3/4" Vinyl Irrigation Line</PurchaseDesc>
441
+ <PurchaseCost>0.18</PurchaseCost>
442
+ <COGSAccountRef>
443
+ <ListID>240000-934380913</ListID>
444
+ <FullName>Cost of Goods Sold</FullName>
445
+ </COGSAccountRef>
446
+ <AssetAccountRef>
447
+ <ListID>60000-934380912</ListID>
448
+ <FullName>Inventory Asset</FullName>
449
+ </AssetAccountRef>
450
+ <ReorderPoint>1500</ReorderPoint>
451
+ <QuantityOnHand>2670</QuantityOnHand>
452
+ <AverageCost>0.18</AverageCost>
453
+ <QuantityOnOrder>0</QuantityOnOrder>
454
+ <QuantityOnSalesOrder>0</QuantityOnSalesOrder>
455
+ </ItemInventoryRet>
456
+ <ItemInventoryRet>
457
+ <ListID>60000-934380927</ListID>
458
+ <TimeCreated>1999-08-11T07:15:27-08:00</TimeCreated>
459
+ <TimeModified>1999-08-11T07:15:27-08:00</TimeModified>
460
+ <EditSequence>934380927</EditSequence>
461
+ <Name>Lighting</Name>
462
+ <FullName>Lighting</FullName>
463
+ <IsActive>true</IsActive>
464
+ <Sublevel>0</Sublevel>
465
+ <SalesTaxCodeRef>
466
+ <ListID>10000-999021789</ListID>
467
+ <FullName>Tax</FullName>
468
+ </SalesTaxCodeRef>
469
+ <SalesDesc>Garden Lighting</SalesDesc>
470
+ <SalesPrice>0.00</SalesPrice>
471
+ <IncomeAccountRef>
472
+ <ListID>1B0000-934380913</ListID>
473
+ <FullName>Landscaping Services:Job Materials:Fountains &amp; Garden Lighting</FullName>
474
+ </IncomeAccountRef>
475
+ <PurchaseDesc>Garden Lighting</PurchaseDesc>
476
+ <PurchaseCost>0.00</PurchaseCost>
477
+ <COGSAccountRef>
478
+ <ListID>240000-934380913</ListID>
479
+ <FullName>Cost of Goods Sold</FullName>
480
+ </COGSAccountRef>
481
+ <AssetAccountRef>
482
+ <ListID>60000-934380912</ListID>
483
+ <FullName>Inventory Asset</FullName>
484
+ </AssetAccountRef>
485
+ <QuantityOnHand>94</QuantityOnHand>
486
+ <AverageCost>14.80</AverageCost>
487
+ <QuantityOnOrder>28</QuantityOnOrder>
488
+ <QuantityOnSalesOrder>0</QuantityOnSalesOrder>
489
+ </ItemInventoryRet>
490
+ <ItemInventoryRet>
491
+ <ListID>70000-934380927</ListID>
492
+ <TimeCreated>1999-08-11T07:15:27-08:00</TimeCreated>
493
+ <TimeModified>1999-08-11T07:15:27-08:00</TimeModified>
494
+ <EditSequence>934380927</EditSequence>
495
+ <Name>Pump</Name>
496
+ <FullName>Pump</FullName>
497
+ <IsActive>true</IsActive>
498
+ <Sublevel>0</Sublevel>
499
+ <SalesTaxCodeRef>
500
+ <ListID>10000-999021789</ListID>
501
+ <FullName>Tax</FullName>
502
+ </SalesTaxCodeRef>
503
+ <SalesDesc>Fountain pump</SalesDesc>
504
+ <SalesPrice>75.00</SalesPrice>
505
+ <IncomeAccountRef>
506
+ <ListID>1B0000-934380913</ListID>
507
+ <FullName>Landscaping Services:Job Materials:Fountains &amp; Garden Lighting</FullName>
508
+ </IncomeAccountRef>
509
+ <PurchaseDesc>Fountain pump #198-30</PurchaseDesc>
510
+ <PurchaseCost>56.00</PurchaseCost>
511
+ <COGSAccountRef>
512
+ <ListID>240000-934380913</ListID>
513
+ <FullName>Cost of Goods Sold</FullName>
514
+ </COGSAccountRef>
515
+ <AssetAccountRef>
516
+ <ListID>60000-934380912</ListID>
517
+ <FullName>Inventory Asset</FullName>
518
+ </AssetAccountRef>
519
+ <QuantityOnHand>48</QuantityOnHand>
520
+ <AverageCost>53.93</AverageCost>
521
+ <QuantityOnOrder>0</QuantityOnOrder>
522
+ <QuantityOnSalesOrder>0</QuantityOnSalesOrder>
523
+ </ItemInventoryRet>
524
+ <ItemInventoryRet>
525
+ <ListID>80000-934380927</ListID>
526
+ <TimeCreated>1999-08-11T07:15:27-08:00</TimeCreated>
527
+ <TimeModified>1999-08-11T07:15:27-08:00</TimeModified>
528
+ <EditSequence>934380927</EditSequence>
529
+ <Name>Soil</Name>
530
+ <FullName>Soil</FullName>
531
+ <IsActive>true</IsActive>
532
+ <Sublevel>0</Sublevel>
533
+ <SalesTaxCodeRef>
534
+ <ListID>10000-999021789</ListID>
535
+ <FullName>Tax</FullName>
536
+ </SalesTaxCodeRef>
537
+ <SalesDesc>Soil, 2 cubic ft bag</SalesDesc>
538
+ <SalesPrice>6.75</SalesPrice>
539
+ <IncomeAccountRef>
540
+ <ListID>1C0000-934380913</ListID>
541
+ <FullName>Landscaping Services:Job Materials:Plants and Sod</FullName>
542
+ </IncomeAccountRef>
543
+ <PurchaseDesc>Soil, 2 cubic ft bag</PurchaseDesc>
544
+ <PurchaseCost>5.30</PurchaseCost>
545
+ <COGSAccountRef>
546
+ <ListID>240000-934380913</ListID>
547
+ <FullName>Cost of Goods Sold</FullName>
548
+ </COGSAccountRef>
549
+ <PrefVendorRef>
550
+ <ListID>10000-934380927</ListID>
551
+ <FullName>Middlefield Nursery</FullName>
552
+ </PrefVendorRef>
553
+ <AssetAccountRef>
554
+ <ListID>60000-934380912</ListID>
555
+ <FullName>Inventory Asset</FullName>
556
+ </AssetAccountRef>
557
+ <ReorderPoint>25</ReorderPoint>
558
+ <QuantityOnHand>0</QuantityOnHand>
559
+ <AverageCost>5.30</AverageCost>
560
+ <QuantityOnOrder>6</QuantityOnOrder>
561
+ <QuantityOnSalesOrder>10</QuantityOnSalesOrder>
562
+ </ItemInventoryRet>
563
+ <ItemInventoryRet>
564
+ <ListID>90000-934380927</ListID>
565
+ <TimeCreated>1999-08-11T07:15:27-08:00</TimeCreated>
566
+ <TimeModified>1999-08-11T07:15:27-08:00</TimeModified>
567
+ <EditSequence>934380927</EditSequence>
568
+ <Name>Sprinkler Hds</Name>
569
+ <FullName>Sprinkler Hds</FullName>
570
+ <IsActive>true</IsActive>
571
+ <Sublevel>0</Sublevel>
572
+ <SalesTaxCodeRef>
573
+ <ListID>10000-999021789</ListID>
574
+ <FullName>Tax</FullName>
575
+ </SalesTaxCodeRef>
576
+ <SalesDesc>Sprinkler heads</SalesDesc>
577
+ <SalesPrice>0.00</SalesPrice>
578
+ <IncomeAccountRef>
579
+ <ListID>1D0000-934380913</ListID>
580
+ <FullName>Landscaping Services:Job Materials:Sprinklers &amp; Drip systems</FullName>
581
+ </IncomeAccountRef>
582
+ <PurchaseDesc>Sprinkler head #BLS9081-09</PurchaseDesc>
583
+ <PurchaseCost>0.00</PurchaseCost>
584
+ <COGSAccountRef>
585
+ <ListID>240000-934380913</ListID>
586
+ <FullName>Cost of Goods Sold</FullName>
587
+ </COGSAccountRef>
588
+ <AssetAccountRef>
589
+ <ListID>60000-934380912</ListID>
590
+ <FullName>Inventory Asset</FullName>
591
+ </AssetAccountRef>
592
+ <QuantityOnHand>69</QuantityOnHand>
593
+ <AverageCost>6.38</AverageCost>
594
+ <QuantityOnOrder>36</QuantityOnOrder>
595
+ <QuantityOnSalesOrder>0</QuantityOnSalesOrder>
596
+ </ItemInventoryRet>
597
+ <ItemInventoryRet>
598
+ <ListID>A0000-934380927</ListID>
599
+ <TimeCreated>1999-08-11T07:15:27-08:00</TimeCreated>
600
+ <TimeModified>1999-08-11T07:15:27-08:00</TimeModified>
601
+ <EditSequence>934380927</EditSequence>
602
+ <Name>Sprkl pipes</Name>
603
+ <FullName>Sprkl pipes</FullName>
604
+ <IsActive>true</IsActive>
605
+ <Sublevel>0</Sublevel>
606
+ <SalesTaxCodeRef>
607
+ <ListID>10000-999021789</ListID>
608
+ <FullName>Tax</FullName>
609
+ </SalesTaxCodeRef>
610
+ <SalesDesc>Plastic sprinkler piping</SalesDesc>
611
+ <SalesPrice>2.75</SalesPrice>
612
+ <IncomeAccountRef>
613
+ <ListID>1D0000-934380913</ListID>
614
+ <FullName>Landscaping Services:Job Materials:Sprinklers &amp; Drip systems</FullName>
615
+ </IncomeAccountRef>
616
+ <PurchaseDesc>Plastic sprinkler piping #1098-20</PurchaseDesc>
617
+ <PurchaseCost>2.10</PurchaseCost>
618
+ <COGSAccountRef>
619
+ <ListID>240000-934380913</ListID>
620
+ <FullName>Cost of Goods Sold</FullName>
621
+ </COGSAccountRef>
622
+ <AssetAccountRef>
623
+ <ListID>60000-934380912</ListID>
624
+ <FullName>Inventory Asset</FullName>
625
+ </AssetAccountRef>
626
+ <ReorderPoint>250</ReorderPoint>
627
+ <QuantityOnHand>826</QuantityOnHand>
628
+ <AverageCost>2.10</AverageCost>
629
+ <QuantityOnOrder>115</QuantityOnOrder>
630
+ <QuantityOnSalesOrder>0</QuantityOnSalesOrder>
631
+ </ItemInventoryRet>
632
+ </ItemQueryRs>
633
+ </QBXMLMsgsRs>
634
+ </QBXML>