libxml-jruby-fixed 1.0.0-jruby

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. data/History.txt +4 -0
  2. data/Manifest.txt +91 -0
  3. data/README.txt +50 -0
  4. data/Rakefile +40 -0
  5. data/lib/libxml-jruby.rb +84 -0
  6. data/lib/libxml-jruby/xml.rb +1 -0
  7. data/lib/libxml-jruby/xml/attr.rb +46 -0
  8. data/lib/libxml-jruby/xml/attributes.rb +68 -0
  9. data/lib/libxml-jruby/xml/document.rb +52 -0
  10. data/lib/libxml-jruby/xml/dtd.rb +25 -0
  11. data/lib/libxml-jruby/xml/node.rb +285 -0
  12. data/lib/libxml-jruby/xml/ns.rb +19 -0
  13. data/lib/libxml-jruby/xml/parser.rb +121 -0
  14. data/lib/libxml-jruby/xml/xpath.rb +98 -0
  15. data/lib/libxml.rb +1 -0
  16. data/lib/xml.rb +13 -0
  17. data/lib/xml/libxml.rb +8 -0
  18. data/script/benchmark/depixelate.rb +633 -0
  19. data/script/benchmark/hamlet.xml +9055 -0
  20. data/script/benchmark/sock_entries.xml +507 -0
  21. data/script/benchmark/throughput.rb +40 -0
  22. data/script/benchmark/xml_benchmarks.rb +228 -0
  23. data/script/test +6 -0
  24. data/tasks/ann.rake +81 -0
  25. data/tasks/bones.rake +21 -0
  26. data/tasks/gem.rake +126 -0
  27. data/tasks/git.rake +41 -0
  28. data/tasks/manifest.rake +49 -0
  29. data/tasks/notes.rake +28 -0
  30. data/tasks/post_load.rake +39 -0
  31. data/tasks/rdoc.rake +51 -0
  32. data/tasks/rubyforge.rake +57 -0
  33. data/tasks/setup.rb +268 -0
  34. data/tasks/spec.rake +55 -0
  35. data/tasks/svn.rake +48 -0
  36. data/tasks/test.rake +38 -0
  37. data/test/etc_doc_to_s.rb +19 -0
  38. data/test/ets_copy_bug.rb +21 -0
  39. data/test/ets_copy_bug3.rb +38 -0
  40. data/test/ets_doc_file.rb +15 -0
  41. data/test/ets_doc_to_s.rb +21 -0
  42. data/test/ets_gpx.rb +26 -0
  43. data/test/ets_node_gc.rb +21 -0
  44. data/test/ets_test.xml +2 -0
  45. data/test/ets_tsr.rb +9 -0
  46. data/test/model/books.xml +147 -0
  47. data/test/model/default_validation_bug.rb +0 -0
  48. data/test/model/merge_bug_data.xml +58 -0
  49. data/test/model/rubynet.xml +78 -0
  50. data/test/model/rubynet_project +1 -0
  51. data/test/model/saxtest.xml +5 -0
  52. data/test/model/shiporder.rnc +28 -0
  53. data/test/model/shiporder.rng +86 -0
  54. data/test/model/shiporder.xml +23 -0
  55. data/test/model/shiporder.xsd +31 -0
  56. data/test/model/simple.xml +7 -0
  57. data/test/model/soap.xml +27 -0
  58. data/test/model/xinclude.xml +5 -0
  59. data/test/tc_attributes.rb +110 -0
  60. data/test/tc_deprecated_require.rb +13 -0
  61. data/test/tc_document.rb +97 -0
  62. data/test/tc_document_write.rb +139 -0
  63. data/test/tc_dtd.rb +70 -0
  64. data/test/tc_html_parser.rb +63 -0
  65. data/test/tc_node.rb +108 -0
  66. data/test/tc_node_attr.rb +176 -0
  67. data/test/tc_node_cdata.rb +51 -0
  68. data/test/tc_node_comment.rb +32 -0
  69. data/test/tc_node_copy.rb +40 -0
  70. data/test/tc_node_edit.rb +98 -0
  71. data/test/tc_node_set.rb +24 -0
  72. data/test/tc_node_set2.rb +37 -0
  73. data/test/tc_node_text.rb +17 -0
  74. data/test/tc_node_xlink.rb +28 -0
  75. data/test/tc_ns.rb +18 -0
  76. data/test/tc_parser.rb +308 -0
  77. data/test/tc_parser_context.rb +126 -0
  78. data/test/tc_properties.rb +37 -0
  79. data/test/tc_reader.rb +112 -0
  80. data/test/tc_relaxng.rb +39 -0
  81. data/test/tc_sax_parser.rb +113 -0
  82. data/test/tc_schema.rb +39 -0
  83. data/test/tc_traversal.rb +220 -0
  84. data/test/tc_well_formed.rb +11 -0
  85. data/test/tc_xinclude.rb +26 -0
  86. data/test/tc_xpath.rb +130 -0
  87. data/test/tc_xpath_context.rb +72 -0
  88. data/test/tc_xpointer.rb +78 -0
  89. data/test/test_libxml-jruby.rb +0 -0
  90. data/test/test_suite.rb +31 -0
  91. data/test/ts_working.rb +31 -0
  92. metadata +146 -0
@@ -0,0 +1,98 @@
1
+ module LibXMLJRuby
2
+ module XML
3
+ module XPath
4
+ NODESET = nil
5
+
6
+ class Object
7
+ include Enumerable
8
+
9
+ def initialize(expr, document, nslist = nil)
10
+ @expr, @document = expr, document
11
+ @nslist = nslist
12
+ end
13
+
14
+ def each(&block)
15
+ set.each(&block)
16
+ end
17
+
18
+ def length
19
+ set.length
20
+ end
21
+
22
+ def first
23
+ set.first
24
+ end
25
+
26
+ def xpath_type
27
+ LibXMLJRuby::XML::XPath::NODESET
28
+ end
29
+
30
+ def set
31
+ @set ||= LibXMLJRuby::XML::Node::Set.from_java(evaluate_expression)
32
+ end
33
+
34
+ def [](index)
35
+ set[index]
36
+ end
37
+
38
+ private
39
+ def xpath_factory
40
+ @xpath_factory ||= XPathFactory.new_instance
41
+ end
42
+
43
+ def xpath
44
+ @xpath ||= xpath_factory.newXPath
45
+ end
46
+
47
+ def resolver
48
+ PrefixResolverDefault.new(doc_element)
49
+ end
50
+
51
+ def doc_element
52
+ if document.respond_to?(:getDocumentElement)
53
+ document.getDocumentElement
54
+ elsif document.respond_to?(:getOwnerDocument)
55
+ document.getOwnerDocument
56
+ else
57
+ nil
58
+ end
59
+ end
60
+
61
+ def namespace_context
62
+ CustomNamespaceContext.new(resolver)
63
+ end
64
+
65
+ def evaluate_expression
66
+ xpath.setNamespaceContext(namespace_context)
67
+ xpath.evaluate(@expr, document, XPathConstants::NODESET)
68
+ end
69
+
70
+ def document
71
+ @document.respond_to?(:java_obj) ? @document.java_obj : @document
72
+ end
73
+
74
+ class CustomNamespaceContext
75
+ include javax.xml.namespace.NamespaceContext
76
+
77
+ attr_reader :resolver
78
+
79
+ def initialize(resolver)
80
+ @resolver = resolver
81
+ end
82
+
83
+ def getNamespaceURI(prefix)
84
+ resolver.getNamespaceForPrefix(prefix)
85
+ end
86
+
87
+ def getPrefixes(val)
88
+ nil
89
+ end
90
+
91
+ def getPrefix(uri)
92
+ nil
93
+ end
94
+ end
95
+ end
96
+ end
97
+ end
98
+ end
@@ -0,0 +1 @@
1
+ require 'libxml-jruby'
@@ -0,0 +1,13 @@
1
+ # This file loads libxml and adds the LibXML namespace
2
+ # to the toplevel for conveneience. The end result
3
+ # is to have XML:: universally exposed.
4
+ #
5
+ # It is recommend that you only load this file for libs
6
+ # that do not have their own namespace, eg. administrative
7
+ # scripts, personal programs, etc. For other applications
8
+ # require 'libxml' instead and include LibXML into your
9
+ # app/libs namespace.
10
+
11
+ require 'libxml'
12
+
13
+ include LibXML
@@ -0,0 +1,8 @@
1
+ # This is here for backward compatibility.
2
+ #
3
+ # TODO: DEPRECATE!
4
+
5
+ require 'libxml.rb'
6
+
7
+ include LibXML
8
+
@@ -0,0 +1,633 @@
1
+ $:.unshift(Dir.pwd + "/lib")
2
+ require 'rubygems'
3
+ require 'benchmark'
4
+ require 'hpricot'
5
+ require 'rexml/document'
6
+ require 'xml'
7
+
8
+
9
+ # Taken from http://depixelate.com/2008/4/23/ruby-xml-parsing-benchmarks
10
+
11
+ XML_STRING = DATA.read
12
+
13
+ class Parse
14
+ def self.libxml
15
+ doc = XML::Parser.string(XML_STRING).parse
16
+ ary = []
17
+ doc.find('/*/*/*').each do |node|
18
+ case node.name
19
+ when 'ItemQueryRs'
20
+ node.each_element do |child|
21
+ ary << child.find_first('./ListID')
22
+ end
23
+ end
24
+ end
25
+ ary
26
+ end
27
+
28
+ def self.rexml
29
+ doc = REXML::Document.new(XML_STRING)
30
+ ary = []
31
+ REXML::XPath.each(doc, '/*/*/*') do |node|
32
+ case node.name
33
+ when 'ItemQueryRs'
34
+ node.elements.each do |element|
35
+ ary << rexml_fetch(element, 'ListID')
36
+ end
37
+ end
38
+ end
39
+ ary
40
+ end
41
+
42
+ def self.hpricot
43
+ doc = Hpricot.XML(XML_STRING)
44
+ ary = []
45
+ response_element = doc.search('/*/*/*').each do |node|
46
+ next unless node.elem?
47
+ case node.name
48
+ when 'ItemQueryRs'
49
+ node.containers.each do |element|
50
+ ary << hpricot_fetch(element/'ListID')
51
+ end
52
+ end
53
+ end
54
+ ary
55
+ end
56
+
57
+ # rexml helper
58
+ def self.rexml_fetch(node, name)
59
+ e = REXML::XPath.first(node, name)
60
+ e ? e.text : nil
61
+ end
62
+
63
+ # hpricot helper
64
+ def self.hpricot_fetch(path)
65
+ return nil if path.nil? || path.empty?
66
+ path = path.first if path.is_a?(Array)
67
+ path.innerHTML
68
+ end
69
+ end
70
+
71
+ TIMES = 100
72
+ Benchmark.bmbm do |x|
73
+ x.report('libxml') { TIMES.times { Parse.libxml } }
74
+ x.report('Hpricot') { TIMES.times { Parse.hpricot } }
75
+ x.report('REXML') { TIMES.times { Parse.rexml } }
76
+ end
77
+
78
+ __END__
79
+ <?xml version="1.0"?>
80
+ <QBXML>
81
+ <QBXMLMsgsRs>
82
+ <ItemQueryRs requestID="1" statusCode="0" statusSeverity="Info" statusMessage="Status OK">
83
+ <ItemServiceRet>
84
+ <ListID>240000-1071531214</ListID>
85
+ <TimeCreated>2003-12-15T15:33:34-08:00</TimeCreated>
86
+ <TimeModified>2003-12-15T15:34:51-08:00</TimeModified>
87
+ <EditSequence>1071531291</EditSequence>
88
+ <Name>Delivery</Name>
89
+ <FullName>Delivery</FullName>
90
+ <IsActive>true</IsActive>
91
+ <Sublevel>0</Sublevel>
92
+ <SalesTaxCodeRef>
93
+ <ListID>20000-999021789</ListID>
94
+ <FullName>Non</FullName>
95
+ </SalesTaxCodeRef>
96
+ <SalesOrPurchase>
97
+ <Desc>Delivery Service Fee (free for orders over $100)</Desc>
98
+ <Price>15.00</Price>
99
+ <AccountRef>
100
+ <ListID>610001-1071531179</ListID>
101
+ <FullName>Service</FullName>
102
+ </AccountRef>
103
+ </SalesOrPurchase>
104
+ </ItemServiceRet>
105
+ <ItemServiceRet>
106
+ <ListID>10000-934380927</ListID>
107
+ <TimeCreated>1999-08-11T07:15:27-08:00</TimeCreated>
108
+ <TimeModified>1999-08-11T07:15:27-08:00</TimeModified>
109
+ <EditSequence>934380927</EditSequence>
110
+ <Name>Design</Name>
111
+ <FullName>Design</FullName>
112
+ <IsActive>true</IsActive>
113
+ <Sublevel>0</Sublevel>
114
+ <SalesTaxCodeRef>
115
+ <ListID>20000-999021789</ListID>
116
+ <FullName>Non</FullName>
117
+ </SalesTaxCodeRef>
118
+ <SalesOrPurchase>
119
+ <Desc>Custom Landscape Design</Desc>
120
+ <Price>55.00</Price>
121
+ <AccountRef>
122
+ <ListID>150000-934380913</ListID>
123
+ <FullName>Landscaping Services:Design Services</FullName>
124
+ </AccountRef>
125
+ </SalesOrPurchase>
126
+ </ItemServiceRet>
127
+ <ItemServiceRet>
128
+ <ListID>20000-934380927</ListID>
129
+ <TimeCreated>1999-08-11T07:15:27-08:00</TimeCreated>
130
+ <TimeModified>1999-08-11T08:59:12-08:00</TimeModified>
131
+ <EditSequence>934387152</EditSequence>
132
+ <Name>Gardening</Name>
133
+ <FullName>Gardening</FullName>
134
+ <IsActive>true</IsActive>
135
+ <Sublevel>0</Sublevel>
136
+ <SalesTaxCodeRef>
137
+ <ListID>20000-999021789</ListID>
138
+ <FullName>Non</FullName>
139
+ </SalesTaxCodeRef>
140
+ <SalesOrPurchase>
141
+ <Desc>Weekly gardening services</Desc>
142
+ <Price>0.00</Price>
143
+ <AccountRef>
144
+ <ListID>1F0000-934380913</ListID>
145
+ <FullName>Landscaping Services:Labor:Installation</FullName>
146
+ </AccountRef>
147
+ </SalesOrPurchase>
148
+ </ItemServiceRet>
149
+ <ItemServiceRet>
150
+ <ListID>30000-934380927</ListID>
151
+ <TimeCreated>1999-08-11T07:15:27-08:00</TimeCreated>
152
+ <TimeModified>1999-08-11T07:15:27-08:00</TimeModified>
153
+ <EditSequence>934380927</EditSequence>
154
+ <Name>Installation</Name>
155
+ <FullName>Installation</FullName>
156
+ <IsActive>true</IsActive>
157
+ <Sublevel>0</Sublevel>
158
+ <SalesTaxCodeRef>
159
+ <ListID>20000-999021789</ListID>
160
+ <FullName>Non</FullName>
161
+ </SalesTaxCodeRef>
162
+ <SalesOrPurchase>
163
+ <Desc>Installation of landscape design</Desc>
164
+ <Price>35.00</Price>
165
+ <AccountRef>
166
+ <ListID>1F0000-934380913</ListID>
167
+ <FullName>Landscaping Services:Labor:Installation</FullName>
168
+ </AccountRef>
169
+ </SalesOrPurchase>
170
+ </ItemServiceRet>
171
+ <ItemServiceRet>
172
+ <ListID>40000-934380927</ListID>
173
+ <TimeCreated>1999-08-11T07:15:27-08:00</TimeCreated>
174
+ <TimeModified>1999-08-11T07:15:27-08:00</TimeModified>
175
+ <EditSequence>934380927</EditSequence>
176
+ <Name>Pest Control</Name>
177
+ <FullName>Pest Control</FullName>
178
+ <IsActive>true</IsActive>
179
+ <Sublevel>0</Sublevel>
180
+ <SalesTaxCodeRef>
181
+ <ListID>20000-999021789</ListID>
182
+ <FullName>Non</FullName>
183
+ </SalesTaxCodeRef>
184
+ <SalesOrPurchase>
185
+ <Desc>Pest control services</Desc>
186
+ <Price>0.00</Price>
187
+ <AccountRef>
188
+ <ListID>200000-934380913</ListID>
189
+ <FullName>Landscaping Services:Labor:Maintenance &amp; Repairs</FullName>
190
+ </AccountRef>
191
+ </SalesOrPurchase>
192
+ </ItemServiceRet>
193
+ <ItemServiceRet>
194
+ <ListID>2E0000-1071514896</ListID>
195
+ <TimeCreated>2003-12-15T11:01:36-08:00</TimeCreated>
196
+ <TimeModified>2003-12-15T14:42:51-08:00</TimeModified>
197
+ <EditSequence>1071528171</EditSequence>
198
+ <Name>Tree Removal</Name>
199
+ <FullName>Tree Removal</FullName>
200
+ <IsActive>true</IsActive>
201
+ <Sublevel>0</Sublevel>
202
+ <SalesTaxCodeRef>
203
+ <ListID>20000-999021789</ListID>
204
+ <FullName>Non</FullName>
205
+ </SalesTaxCodeRef>
206
+ <SalesOrPurchase>
207
+ <Desc>Tree Removal Service</Desc>
208
+ <Price>0.00</Price>
209
+ <AccountRef>
210
+ <ListID>610001-1071531179</ListID>
211
+ <FullName>Service</FullName>
212
+ </AccountRef>
213
+ </SalesOrPurchase>
214
+ </ItemServiceRet>
215
+ <ItemServiceRet>
216
+ <ListID>50000-934380927</ListID>
217
+ <TimeCreated>1999-08-11T07:15:27-08:00</TimeCreated>
218
+ <TimeModified>1999-08-11T07:15:27-08:00</TimeModified>
219
+ <EditSequence>934380927</EditSequence>
220
+ <Name>Trimming</Name>
221
+ <FullName>Trimming</FullName>
222
+ <IsActive>true</IsActive>
223
+ <Sublevel>0</Sublevel>
224
+ <SalesTaxCodeRef>
225
+ <ListID>20000-999021789</ListID>
226
+ <FullName>Non</FullName>
227
+ </SalesTaxCodeRef>
228
+ <SalesOrPurchase>
229
+ <Desc>Tree and shrub trimming</Desc>
230
+ <Price>35.00</Price>
231
+ <AccountRef>
232
+ <ListID>200000-934380913</ListID>
233
+ <FullName>Landscaping Services:Labor:Maintenance &amp; Repairs</FullName>
234
+ </AccountRef>
235
+ </SalesOrPurchase>
236
+ </ItemServiceRet>
237
+ <ItemNonInventoryRet>
238
+ <ListID>B0000-934380927</ListID>
239
+ <TimeCreated>1999-08-11T07:15:27-08:00</TimeCreated>
240
+ <TimeModified>1999-08-11T07:15:27-08:00</TimeModified>
241
+ <EditSequence>934380927</EditSequence>
242
+ <Name>Concrete</Name>
243
+ <FullName>Concrete</FullName>
244
+ <IsActive>true</IsActive>
245
+ <Sublevel>0</Sublevel>
246
+ <SalesTaxCodeRef>
247
+ <ListID>10000-999021789</ListID>
248
+ <FullName>Tax</FullName>
249
+ </SalesTaxCodeRef>
250
+ <SalesOrPurchase>
251
+ <Desc>Concrete for fountain installation</Desc>
252
+ <Price>0.00</Price>
253
+ <AccountRef>
254
+ <ListID>1B0000-934380913</ListID>
255
+ <FullName>Landscaping Services:Job Materials:Fountains &amp; Garden Lighting</FullName>
256
+ </AccountRef>
257
+ </SalesOrPurchase>
258
+ </ItemNonInventoryRet>
259
+ <ItemNonInventoryRet>
260
+ <ListID>C0000-934380927</ListID>
261
+ <TimeCreated>1999-08-11T07:15:27-08:00</TimeCreated>
262
+ <TimeModified>1999-08-11T07:15:27-08:00</TimeModified>
263
+ <EditSequence>934380927</EditSequence>
264
+ <Name>Deck Lumber</Name>
265
+ <FullName>Deck Lumber</FullName>
266
+ <IsActive>true</IsActive>
267
+ <Sublevel>0</Sublevel>
268
+ <SalesTaxCodeRef>
269
+ <ListID>10000-999021789</ListID>
270
+ <FullName>Tax</FullName>
271
+ </SalesTaxCodeRef>
272
+ <SalesOrPurchase>
273
+ <Desc>Deck Lumber</Desc>
274
+ <Price>0.00</Price>
275
+ <AccountRef>
276
+ <ListID>1A0000-934380913</ListID>
277
+ <FullName>Landscaping Services:Job Materials:Decks &amp; Patios</FullName>
278
+ </AccountRef>
279
+ </SalesOrPurchase>
280
+ </ItemNonInventoryRet>
281
+ <ItemNonInventoryRet>
282
+ <ListID>210000-1071530240</ListID>
283
+ <TimeCreated>2003-12-15T15:17:20-08:00</TimeCreated>
284
+ <TimeModified>2003-12-15T15:17:20-08:00</TimeModified>
285
+ <EditSequence>1071530240</EditSequence>
286
+ <Name>Fertilizer</Name>
287
+ <FullName>Fertilizer</FullName>
288
+ <IsActive>true</IsActive>
289
+ <Sublevel>0</Sublevel>
290
+ <SalesTaxCodeRef>
291
+ <ListID>10000-999021789</ListID>
292
+ <FullName>Tax</FullName>
293
+ </SalesTaxCodeRef>
294
+ <SalesOrPurchase>
295
+ <Desc>Parent Item - Do Not Use</Desc>
296
+ <Price>0.00</Price>
297
+ <AccountRef>
298
+ <ListID>600001-1071530232</ListID>
299
+ <FullName>Retail Sales</FullName>
300
+ </AccountRef>
301
+ </SalesOrPurchase>
302
+ </ItemNonInventoryRet>
303
+ <ItemInventoryRet>
304
+ <ListID>250000-1071523682</ListID>
305
+ <TimeCreated>2003-12-15T13:28:02-08:00</TimeCreated>
306
+ <TimeModified>2003-12-15T13:44:20-08:00</TimeModified>
307
+ <EditSequence>1071524660</EditSequence>
308
+ <Name>Irrigation Hose</Name>
309
+ <FullName>Irrigation Hose</FullName>
310
+ <IsActive>true</IsActive>
311
+ <Sublevel>0</Sublevel>
312
+ <SalesTaxCodeRef>
313
+ <ListID>10000-999021789</ListID>
314
+ <FullName>Tax</FullName>
315
+ </SalesTaxCodeRef>
316
+ <SalesDesc>Parent Item Vinyl Irrigation Line- Do Not Purchase or Sell</SalesDesc>
317
+ <SalesPrice>0.00</SalesPrice>
318
+ <IncomeAccountRef>
319
+ <ListID>690001-1071523679</ListID>
320
+ <FullName>Landscaping Services:Job Materials:Misc Materials</FullName>
321
+ </IncomeAccountRef>
322
+ <PurchaseDesc>Vinyl Irrigation LineParent Item - Do Not Purchase or Sell</PurchaseDesc>
323
+ <PurchaseCost>0.00</PurchaseCost>
324
+ <COGSAccountRef>
325
+ <ListID>240000-934380913</ListID>
326
+ <FullName>Cost of Goods Sold</FullName>
327
+ </COGSAccountRef>
328
+ <AssetAccountRef>
329
+ <ListID>60000-934380912</ListID>
330
+ <FullName>Inventory Asset</FullName>
331
+ </AssetAccountRef>
332
+ <ReorderPoint>-1</ReorderPoint>
333
+ <QuantityOnHand>0</QuantityOnHand>
334
+ <AverageCost>0.00</AverageCost>
335
+ <QuantityOnOrder>0</QuantityOnOrder>
336
+ <QuantityOnSalesOrder>0</QuantityOnSalesOrder>
337
+ </ItemInventoryRet>
338
+ <ItemInventoryRet>
339
+ <ListID>270000-1071524193</ListID>
340
+ <TimeCreated>2003-12-15T13:36:33-08:00</TimeCreated>
341
+ <TimeModified>2003-12-15T13:38:13-08:00</TimeModified>
342
+ <EditSequence>1071524293</EditSequence>
343
+ <Name>1/2" Line</Name>
344
+ <FullName>Irrigation Hose:1/2" Line</FullName>
345
+ <IsActive>true</IsActive>
346
+ <ParentRef>
347
+ <ListID>250000-1071523682</ListID>
348
+ <FullName>Irrigation Hose</FullName>
349
+ </ParentRef>
350
+ <Sublevel>1</Sublevel>
351
+ <SalesTaxCodeRef>
352
+ <ListID>10000-999021789</ListID>
353
+ <FullName>Tax</FullName>
354
+ </SalesTaxCodeRef>
355
+ <SalesDesc>1/2" Vinyl Irrigation Line</SalesDesc>
356
+ <SalesPrice>0.15</SalesPrice>
357
+ <IncomeAccountRef>
358
+ <ListID>690001-1071523679</ListID>
359
+ <FullName>Landscaping Services:Job Materials:Misc Materials</FullName>
360
+ </IncomeAccountRef>
361
+ <PurchaseDesc>1/2" Vinyl Irrigation Line</PurchaseDesc>
362
+ <PurchaseCost>0.12</PurchaseCost>
363
+ <COGSAccountRef>
364
+ <ListID>240000-934380913</ListID>
365
+ <FullName>Cost of Goods Sold</FullName>
366
+ </COGSAccountRef>
367
+ <AssetAccountRef>
368
+ <ListID>60000-934380912</ListID>
369
+ <FullName>Inventory Asset</FullName>
370
+ </AssetAccountRef>
371
+ <ReorderPoint>1500</ReorderPoint>
372
+ <QuantityOnHand>1783</QuantityOnHand>
373
+ <AverageCost>0.12</AverageCost>
374
+ <QuantityOnOrder>0</QuantityOnOrder>
375
+ <QuantityOnSalesOrder>0</QuantityOnSalesOrder>
376
+ </ItemInventoryRet>
377
+ <ItemInventoryRet>
378
+ <ListID>260000-1071523858</ListID>
379
+ <TimeCreated>2003-12-15T13:30:58-08:00</TimeCreated>
380
+ <TimeModified>2003-12-15T13:37:52-08:00</TimeModified>
381
+ <EditSequence>1071524272</EditSequence>
382
+ <Name>1/4" Line</Name>
383
+ <FullName>Irrigation Hose:1/4" Line</FullName>
384
+ <IsActive>true</IsActive>
385
+ <ParentRef>
386
+ <ListID>250000-1071523682</ListID>
387
+ <FullName>Irrigation Hose</FullName>
388
+ </ParentRef>
389
+ <Sublevel>1</Sublevel>
390
+ <SalesTaxCodeRef>
391
+ <ListID>10000-999021789</ListID>
392
+ <FullName>Tax</FullName>
393
+ </SalesTaxCodeRef>
394
+ <SalesDesc>1/4" Vinyl Irrigation Line</SalesDesc>
395
+ <SalesPrice>0.10</SalesPrice>
396
+ <IncomeAccountRef>
397
+ <ListID>690001-1071523679</ListID>
398
+ <FullName>Landscaping Services:Job Materials:Misc Materials</FullName>
399
+ </IncomeAccountRef>
400
+ <PurchaseDesc>1/4" Vinyl Irrigation Line</PurchaseDesc>
401
+ <PurchaseCost>0.07</PurchaseCost>
402
+ <COGSAccountRef>
403
+ <ListID>240000-934380913</ListID>
404
+ <FullName>Cost of Goods Sold</FullName>
405
+ </COGSAccountRef>
406
+ <AssetAccountRef>
407
+ <ListID>60000-934380912</ListID>
408
+ <FullName>Inventory Asset</FullName>
409
+ </AssetAccountRef>
410
+ <ReorderPoint>500</ReorderPoint>
411
+ <QuantityOnHand>1235</QuantityOnHand>
412
+ <AverageCost>0.07</AverageCost>
413
+ <QuantityOnOrder>0</QuantityOnOrder>
414
+ <QuantityOnSalesOrder>0</QuantityOnSalesOrder>
415
+ </ItemInventoryRet>
416
+ <ItemInventoryRet>
417
+ <ListID>280000-1071524260</ListID>
418
+ <TimeCreated>2003-12-15T13:37:40-08:00</TimeCreated>
419
+ <TimeModified>2003-12-15T13:37:40-08:00</TimeModified>
420
+ <EditSequence>1071524260</EditSequence>
421
+ <Name>3/4" Line</Name>
422
+ <FullName>Irrigation Hose:3/4" Line</FullName>
423
+ <IsActive>true</IsActive>
424
+ <ParentRef>
425
+ <ListID>250000-1071523682</ListID>
426
+ <FullName>Irrigation Hose</FullName>
427
+ </ParentRef>
428
+ <Sublevel>1</Sublevel>
429
+ <SalesTaxCodeRef>
430
+ <ListID>10000-999021789</ListID>
431
+ <FullName>Tax</FullName>
432
+ </SalesTaxCodeRef>
433
+ <SalesDesc>3/4" Vinyl Irrigation Line</SalesDesc>
434
+ <SalesPrice>0.27</SalesPrice>
435
+ <IncomeAccountRef>
436
+ <ListID>690001-1071523679</ListID>
437
+ <FullName>Landscaping Services:Job Materials:Misc Materials</FullName>
438
+ </IncomeAccountRef>
439
+ <PurchaseDesc>3/4" Vinyl Irrigation Line</PurchaseDesc>
440
+ <PurchaseCost>0.18</PurchaseCost>
441
+ <COGSAccountRef>
442
+ <ListID>240000-934380913</ListID>
443
+ <FullName>Cost of Goods Sold</FullName>
444
+ </COGSAccountRef>
445
+ <AssetAccountRef>
446
+ <ListID>60000-934380912</ListID>
447
+ <FullName>Inventory Asset</FullName>
448
+ </AssetAccountRef>
449
+ <ReorderPoint>1500</ReorderPoint>
450
+ <QuantityOnHand>2670</QuantityOnHand>
451
+ <AverageCost>0.18</AverageCost>
452
+ <QuantityOnOrder>0</QuantityOnOrder>
453
+ <QuantityOnSalesOrder>0</QuantityOnSalesOrder>
454
+ </ItemInventoryRet>
455
+ <ItemInventoryRet>
456
+ <ListID>60000-934380927</ListID>
457
+ <TimeCreated>1999-08-11T07:15:27-08:00</TimeCreated>
458
+ <TimeModified>1999-08-11T07:15:27-08:00</TimeModified>
459
+ <EditSequence>934380927</EditSequence>
460
+ <Name>Lighting</Name>
461
+ <FullName>Lighting</FullName>
462
+ <IsActive>true</IsActive>
463
+ <Sublevel>0</Sublevel>
464
+ <SalesTaxCodeRef>
465
+ <ListID>10000-999021789</ListID>
466
+ <FullName>Tax</FullName>
467
+ </SalesTaxCodeRef>
468
+ <SalesDesc>Garden Lighting</SalesDesc>
469
+ <SalesPrice>0.00</SalesPrice>
470
+ <IncomeAccountRef>
471
+ <ListID>1B0000-934380913</ListID>
472
+ <FullName>Landscaping Services:Job Materials:Fountains &amp; Garden Lighting</FullName>
473
+ </IncomeAccountRef>
474
+ <PurchaseDesc>Garden Lighting</PurchaseDesc>
475
+ <PurchaseCost>0.00</PurchaseCost>
476
+ <COGSAccountRef>
477
+ <ListID>240000-934380913</ListID>
478
+ <FullName>Cost of Goods Sold</FullName>
479
+ </COGSAccountRef>
480
+ <AssetAccountRef>
481
+ <ListID>60000-934380912</ListID>
482
+ <FullName>Inventory Asset</FullName>
483
+ </AssetAccountRef>
484
+ <QuantityOnHand>94</QuantityOnHand>
485
+ <AverageCost>14.80</AverageCost>
486
+ <QuantityOnOrder>28</QuantityOnOrder>
487
+ <QuantityOnSalesOrder>0</QuantityOnSalesOrder>
488
+ </ItemInventoryRet>
489
+ <ItemInventoryRet>
490
+ <ListID>70000-934380927</ListID>
491
+ <TimeCreated>1999-08-11T07:15:27-08:00</TimeCreated>
492
+ <TimeModified>1999-08-11T07:15:27-08:00</TimeModified>
493
+ <EditSequence>934380927</EditSequence>
494
+ <Name>Pump</Name>
495
+ <FullName>Pump</FullName>
496
+ <IsActive>true</IsActive>
497
+ <Sublevel>0</Sublevel>
498
+ <SalesTaxCodeRef>
499
+ <ListID>10000-999021789</ListID>
500
+ <FullName>Tax</FullName>
501
+ </SalesTaxCodeRef>
502
+ <SalesDesc>Fountain pump</SalesDesc>
503
+ <SalesPrice>75.00</SalesPrice>
504
+ <IncomeAccountRef>
505
+ <ListID>1B0000-934380913</ListID>
506
+ <FullName>Landscaping Services:Job Materials:Fountains &amp; Garden Lighting</FullName>
507
+ </IncomeAccountRef>
508
+ <PurchaseDesc>Fountain pump #198-30</PurchaseDesc>
509
+ <PurchaseCost>56.00</PurchaseCost>
510
+ <COGSAccountRef>
511
+ <ListID>240000-934380913</ListID>
512
+ <FullName>Cost of Goods Sold</FullName>
513
+ </COGSAccountRef>
514
+ <AssetAccountRef>
515
+ <ListID>60000-934380912</ListID>
516
+ <FullName>Inventory Asset</FullName>
517
+ </AssetAccountRef>
518
+ <QuantityOnHand>48</QuantityOnHand>
519
+ <AverageCost>53.93</AverageCost>
520
+ <QuantityOnOrder>0</QuantityOnOrder>
521
+ <QuantityOnSalesOrder>0</QuantityOnSalesOrder>
522
+ </ItemInventoryRet>
523
+ <ItemInventoryRet>
524
+ <ListID>80000-934380927</ListID>
525
+ <TimeCreated>1999-08-11T07:15:27-08:00</TimeCreated>
526
+ <TimeModified>1999-08-11T07:15:27-08:00</TimeModified>
527
+ <EditSequence>934380927</EditSequence>
528
+ <Name>Soil</Name>
529
+ <FullName>Soil</FullName>
530
+ <IsActive>true</IsActive>
531
+ <Sublevel>0</Sublevel>
532
+ <SalesTaxCodeRef>
533
+ <ListID>10000-999021789</ListID>
534
+ <FullName>Tax</FullName>
535
+ </SalesTaxCodeRef>
536
+ <SalesDesc>Soil, 2 cubic ft bag</SalesDesc>
537
+ <SalesPrice>6.75</SalesPrice>
538
+ <IncomeAccountRef>
539
+ <ListID>1C0000-934380913</ListID>
540
+ <FullName>Landscaping Services:Job Materials:Plants and Sod</FullName>
541
+ </IncomeAccountRef>
542
+ <PurchaseDesc>Soil, 2 cubic ft bag</PurchaseDesc>
543
+ <PurchaseCost>5.30</PurchaseCost>
544
+ <COGSAccountRef>
545
+ <ListID>240000-934380913</ListID>
546
+ <FullName>Cost of Goods Sold</FullName>
547
+ </COGSAccountRef>
548
+ <PrefVendorRef>
549
+ <ListID>10000-934380927</ListID>
550
+ <FullName>Middlefield Nursery</FullName>
551
+ </PrefVendorRef>
552
+ <AssetAccountRef>
553
+ <ListID>60000-934380912</ListID>
554
+ <FullName>Inventory Asset</FullName>
555
+ </AssetAccountRef>
556
+ <ReorderPoint>25</ReorderPoint>
557
+ <QuantityOnHand>0</QuantityOnHand>
558
+ <AverageCost>5.30</AverageCost>
559
+ <QuantityOnOrder>6</QuantityOnOrder>
560
+ <QuantityOnSalesOrder>10</QuantityOnSalesOrder>
561
+ </ItemInventoryRet>
562
+ <ItemInventoryRet>
563
+ <ListID>90000-934380927</ListID>
564
+ <TimeCreated>1999-08-11T07:15:27-08:00</TimeCreated>
565
+ <TimeModified>1999-08-11T07:15:27-08:00</TimeModified>
566
+ <EditSequence>934380927</EditSequence>
567
+ <Name>Sprinkler Hds</Name>
568
+ <FullName>Sprinkler Hds</FullName>
569
+ <IsActive>true</IsActive>
570
+ <Sublevel>0</Sublevel>
571
+ <SalesTaxCodeRef>
572
+ <ListID>10000-999021789</ListID>
573
+ <FullName>Tax</FullName>
574
+ </SalesTaxCodeRef>
575
+ <SalesDesc>Sprinkler heads</SalesDesc>
576
+ <SalesPrice>0.00</SalesPrice>
577
+ <IncomeAccountRef>
578
+ <ListID>1D0000-934380913</ListID>
579
+ <FullName>Landscaping Services:Job Materials:Sprinklers &amp; Drip systems</FullName>
580
+ </IncomeAccountRef>
581
+ <PurchaseDesc>Sprinkler head #BLS9081-09</PurchaseDesc>
582
+ <PurchaseCost>0.00</PurchaseCost>
583
+ <COGSAccountRef>
584
+ <ListID>240000-934380913</ListID>
585
+ <FullName>Cost of Goods Sold</FullName>
586
+ </COGSAccountRef>
587
+ <AssetAccountRef>
588
+ <ListID>60000-934380912</ListID>
589
+ <FullName>Inventory Asset</FullName>
590
+ </AssetAccountRef>
591
+ <QuantityOnHand>69</QuantityOnHand>
592
+ <AverageCost>6.38</AverageCost>
593
+ <QuantityOnOrder>36</QuantityOnOrder>
594
+ <QuantityOnSalesOrder>0</QuantityOnSalesOrder>
595
+ </ItemInventoryRet>
596
+ <ItemInventoryRet>
597
+ <ListID>A0000-934380927</ListID>
598
+ <TimeCreated>1999-08-11T07:15:27-08:00</TimeCreated>
599
+ <TimeModified>1999-08-11T07:15:27-08:00</TimeModified>
600
+ <EditSequence>934380927</EditSequence>
601
+ <Name>Sprkl pipes</Name>
602
+ <FullName>Sprkl pipes</FullName>
603
+ <IsActive>true</IsActive>
604
+ <Sublevel>0</Sublevel>
605
+ <SalesTaxCodeRef>
606
+ <ListID>10000-999021789</ListID>
607
+ <FullName>Tax</FullName>
608
+ </SalesTaxCodeRef>
609
+ <SalesDesc>Plastic sprinkler piping</SalesDesc>
610
+ <SalesPrice>2.75</SalesPrice>
611
+ <IncomeAccountRef>
612
+ <ListID>1D0000-934380913</ListID>
613
+ <FullName>Landscaping Services:Job Materials:Sprinklers &amp; Drip systems</FullName>
614
+ </IncomeAccountRef>
615
+ <PurchaseDesc>Plastic sprinkler piping #1098-20</PurchaseDesc>
616
+ <PurchaseCost>2.10</PurchaseCost>
617
+ <COGSAccountRef>
618
+ <ListID>240000-934380913</ListID>
619
+ <FullName>Cost of Goods Sold</FullName>
620
+ </COGSAccountRef>
621
+ <AssetAccountRef>
622
+ <ListID>60000-934380912</ListID>
623
+ <FullName>Inventory Asset</FullName>
624
+ </AssetAccountRef>
625
+ <ReorderPoint>250</ReorderPoint>
626
+ <QuantityOnHand>826</QuantityOnHand>
627
+ <AverageCost>2.10</AverageCost>
628
+ <QuantityOnOrder>115</QuantityOnOrder>
629
+ <QuantityOnSalesOrder>0</QuantityOnSalesOrder>
630
+ </ItemInventoryRet>
631
+ </ItemQueryRs>
632
+ </QBXMLMsgsRs>
633
+ </QBXML>