libxml-ruby 1.1.4 → 2.0.0

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 (146) hide show
  1. data/{CHANGES → HISTORY} +35 -0
  2. data/LICENSE +1 -0
  3. data/MANIFEST +165 -0
  4. data/{README → README.rdoc} +2 -2
  5. data/Rakefile +47 -147
  6. data/ext/libxml/libxml.c +17 -1
  7. data/ext/libxml/ruby_libxml.h +9 -1
  8. data/ext/libxml/ruby_xml_attr.c +3 -3
  9. data/ext/libxml/ruby_xml_attr_decl.c +32 -32
  10. data/ext/libxml/ruby_xml_attributes.c +1 -1
  11. data/ext/libxml/ruby_xml_cbg.c +1 -2
  12. data/ext/libxml/ruby_xml_document.c +26 -4
  13. data/ext/libxml/ruby_xml_dtd.c +3 -3
  14. data/ext/libxml/ruby_xml_encoding.c +92 -5
  15. data/ext/libxml/ruby_xml_encoding.h +4 -0
  16. data/ext/libxml/ruby_xml_namespace.c +2 -2
  17. data/ext/libxml/ruby_xml_node.c +14 -14
  18. data/ext/libxml/ruby_xml_parser_context.c +8 -8
  19. data/ext/libxml/ruby_xml_reader.c +98 -43
  20. data/ext/libxml/ruby_xml_sax2_handler.c +13 -1
  21. data/ext/libxml/ruby_xml_sax_parser.c +4 -5
  22. data/ext/libxml/ruby_xml_version.h +5 -5
  23. data/ext/libxml/ruby_xml_xpath_context.c +9 -6
  24. data/ext/libxml/ruby_xml_xpath_object.c +1 -1
  25. data/ext/vc/libxml_ruby.sln +4 -4
  26. data/lib/libxml.rb +29 -29
  27. data/lib/libxml/attr.rb +112 -110
  28. data/lib/libxml/attr_decl.rb +2 -0
  29. data/lib/libxml/attributes.rb +13 -11
  30. data/lib/libxml/document.rb +192 -190
  31. data/lib/libxml/error.rb +89 -87
  32. data/lib/libxml/hpricot.rb +77 -75
  33. data/lib/libxml/html_parser.rb +96 -94
  34. data/lib/libxml/namespace.rb +61 -59
  35. data/lib/libxml/namespaces.rb +37 -35
  36. data/lib/libxml/node.rb +398 -384
  37. data/lib/libxml/ns.rb +21 -19
  38. data/lib/libxml/parser.rb +366 -364
  39. data/lib/libxml/properties.rb +22 -20
  40. data/lib/libxml/reader.rb +2 -0
  41. data/lib/libxml/sax_callbacks.rb +179 -177
  42. data/lib/libxml/sax_parser.rb +57 -55
  43. data/lib/libxml/tree.rb +28 -26
  44. data/lib/libxml/xpath_object.rb +15 -13
  45. data/lib/xml.rb +16 -14
  46. data/lib/xml/libxml.rb +10 -8
  47. data/libxml-ruby.gemspec +50 -0
  48. data/script/benchmark/depixelate +634 -0
  49. data/script/benchmark/hamlet.xml +9055 -0
  50. data/script/benchmark/parsecount +170 -0
  51. data/script/benchmark/sock_entries.xml +507 -0
  52. data/script/benchmark/throughput +41 -0
  53. data/script/test +6 -0
  54. data/test/etc_doc_to_s.rb +21 -19
  55. data/test/ets_doc_file.rb +17 -15
  56. data/test/ets_doc_to_s.rb +23 -21
  57. data/test/ets_gpx.rb +28 -26
  58. data/test/ets_node_gc.rb +23 -21
  59. data/test/ets_tsr.rb +11 -9
  60. data/test/model/bands.iso-8859-1.xml +5 -0
  61. data/test/model/bands.utf-8.xml +5 -0
  62. data/test/rb-magic-comment.rb +33 -0
  63. data/test/tc_attr.rb +181 -170
  64. data/test/tc_attr_decl.rb +3 -1
  65. data/test/tc_attributes.rb +134 -132
  66. data/test/tc_deprecated_require.rb +13 -11
  67. data/test/tc_document.rb +119 -113
  68. data/test/tc_document_write.rb +186 -117
  69. data/test/tc_dtd.rb +125 -123
  70. data/test/tc_error.rb +3 -1
  71. data/test/tc_html_parser.rb +139 -137
  72. data/test/tc_namespace.rb +61 -58
  73. data/test/tc_namespaces.rb +176 -173
  74. data/test/tc_node.rb +257 -180
  75. data/test/tc_node_cdata.rb +51 -49
  76. data/test/tc_node_comment.rb +33 -30
  77. data/test/tc_node_copy.rb +42 -40
  78. data/test/tc_node_edit.rb +159 -157
  79. data/test/tc_node_text.rb +71 -69
  80. data/test/tc_node_write.rb +41 -16
  81. data/test/tc_node_xlink.rb +29 -26
  82. data/test/tc_parser.rb +335 -329
  83. data/test/tc_parser_context.rb +188 -185
  84. data/test/tc_properties.rb +39 -36
  85. data/test/tc_reader.rb +297 -283
  86. data/test/tc_relaxng.rb +54 -51
  87. data/test/tc_sax_parser.rb +275 -273
  88. data/test/tc_schema.rb +53 -51
  89. data/test/tc_traversal.rb +222 -220
  90. data/test/tc_xinclude.rb +21 -19
  91. data/test/tc_xml.rb +3 -1
  92. data/test/tc_xpath.rb +195 -193
  93. data/test/tc_xpath_context.rb +80 -78
  94. data/test/tc_xpath_expression.rb +38 -35
  95. data/test/tc_xpointer.rb +74 -72
  96. data/test/test_helper.rb +14 -0
  97. data/test/test_suite.rb +39 -33
  98. metadata +65 -105
  99. data/doc/css/normal.css +0 -182
  100. data/doc/img/raze-tiny.png +0 -0
  101. data/doc/img/red-cube.jpg +0 -0
  102. data/doc/img/xml-ruby.png +0 -0
  103. data/doc/index.xml +0 -43
  104. data/doc/install.xml +0 -77
  105. data/doc/layout.rhtml +0 -38
  106. data/doc/layout.xsl +0 -67
  107. data/doc/license.xml +0 -32
  108. data/doc/log/changelog.xml +0 -1324
  109. data/doc/log/changelog.xsl +0 -42
  110. data/ext/libxml/Makefile +0 -156
  111. data/ext/libxml/extconf.h +0 -5
  112. data/ext/libxml/libxml-ruby.so.a +0 -0
  113. data/ext/libxml/libxml.o +0 -0
  114. data/ext/libxml/libxml_ruby.so +0 -0
  115. data/ext/libxml/mkmf.log +0 -129
  116. data/ext/libxml/ruby_xml.o +0 -0
  117. data/ext/libxml/ruby_xml_attr.o +0 -0
  118. data/ext/libxml/ruby_xml_attr_decl.o +0 -0
  119. data/ext/libxml/ruby_xml_attributes.o +0 -0
  120. data/ext/libxml/ruby_xml_cbg.o +0 -0
  121. data/ext/libxml/ruby_xml_document.o +0 -0
  122. data/ext/libxml/ruby_xml_dtd.o +0 -0
  123. data/ext/libxml/ruby_xml_encoding.o +0 -0
  124. data/ext/libxml/ruby_xml_error.o +0 -0
  125. data/ext/libxml/ruby_xml_html_parser.o +0 -0
  126. data/ext/libxml/ruby_xml_html_parser_context.o +0 -0
  127. data/ext/libxml/ruby_xml_html_parser_options.o +0 -0
  128. data/ext/libxml/ruby_xml_input_cbg.o +0 -0
  129. data/ext/libxml/ruby_xml_io.o +0 -0
  130. data/ext/libxml/ruby_xml_namespace.o +0 -0
  131. data/ext/libxml/ruby_xml_namespaces.o +0 -0
  132. data/ext/libxml/ruby_xml_node.o +0 -0
  133. data/ext/libxml/ruby_xml_parser.o +0 -0
  134. data/ext/libxml/ruby_xml_parser_context.o +0 -0
  135. data/ext/libxml/ruby_xml_parser_options.o +0 -0
  136. data/ext/libxml/ruby_xml_reader.o +0 -0
  137. data/ext/libxml/ruby_xml_relaxng.o +0 -0
  138. data/ext/libxml/ruby_xml_sax2_handler.o +0 -0
  139. data/ext/libxml/ruby_xml_sax_parser.o +0 -0
  140. data/ext/libxml/ruby_xml_schema.o +0 -0
  141. data/ext/libxml/ruby_xml_xinclude.o +0 -0
  142. data/ext/libxml/ruby_xml_xpath.o +0 -0
  143. data/ext/libxml/ruby_xml_xpath_context.o +0 -0
  144. data/ext/libxml/ruby_xml_xpath_expression.o +0 -0
  145. data/ext/libxml/ruby_xml_xpath_object.o +0 -0
  146. data/ext/libxml/ruby_xml_xpointer.o +0 -0
data/lib/libxml/tree.rb CHANGED
@@ -1,27 +1,29 @@
1
- module LibXML
2
- module XML
3
- class Tree # :nodoc:
4
- ELEMENT_NODE = Node::ELEMENT_NODE
5
- ATTRIBUTE_NODE = Node::ATTRIBUTE_NODE
6
- TEXT_NODE = Node::TEXT_NODE
7
- CDATA_SECTION_NODE = Node::CDATA_SECTION_NODE
8
- ENTITY_REF_NODE = Node::ENTITY_REF_NODE
9
- ENTITY_NODE = Node::ENTITY_NODE
10
- PI_NODE = Node::PI_NODE
11
- COMMENT_NODE = Node::COMMENT_NODE
12
- DOCUMENT_NODE = Node::DOCUMENT_NODE
13
- DOCUMENT_TYPE_NODE = Node::DOCUMENT_TYPE_NODE
14
- DOCUMENT_FRAG_NODE = Node::DOCUMENT_FRAG_NODE
15
- NOTATION_NODE = Node::NOTATION_NODE
16
- HTML_DOCUMENT_NODE = Node::HTML_DOCUMENT_NODE
17
- DTD_NODE = Node::DTD_NODE
18
- ELEMENT_DECL = Node::ELEMENT_DECL
19
- ATTRIBUTE_DECL = Node::ATTRIBUTE_DECL
20
- ENTITY_DECL = Node::ENTITY_DECL
21
- NAMESPACE_DECL = Node::NAMESPACE_DECL
22
- XINCLUDE_START = Node::XINCLUDE_START
23
- XINCLUDE_END = Node::XINCLUDE_END
24
- DOCB_DOCUMENT_NODE = Node::DOCB_DOCUMENT_NODE
25
- end
26
- end
1
+ # encoding: UTF-8
2
+
3
+ module LibXML
4
+ module XML
5
+ class Tree # :nodoc:
6
+ ELEMENT_NODE = Node::ELEMENT_NODE
7
+ ATTRIBUTE_NODE = Node::ATTRIBUTE_NODE
8
+ TEXT_NODE = Node::TEXT_NODE
9
+ CDATA_SECTION_NODE = Node::CDATA_SECTION_NODE
10
+ ENTITY_REF_NODE = Node::ENTITY_REF_NODE
11
+ ENTITY_NODE = Node::ENTITY_NODE
12
+ PI_NODE = Node::PI_NODE
13
+ COMMENT_NODE = Node::COMMENT_NODE
14
+ DOCUMENT_NODE = Node::DOCUMENT_NODE
15
+ DOCUMENT_TYPE_NODE = Node::DOCUMENT_TYPE_NODE
16
+ DOCUMENT_FRAG_NODE = Node::DOCUMENT_FRAG_NODE
17
+ NOTATION_NODE = Node::NOTATION_NODE
18
+ HTML_DOCUMENT_NODE = Node::HTML_DOCUMENT_NODE
19
+ DTD_NODE = Node::DTD_NODE
20
+ ELEMENT_DECL = Node::ELEMENT_DECL
21
+ ATTRIBUTE_DECL = Node::ATTRIBUTE_DECL
22
+ ENTITY_DECL = Node::ENTITY_DECL
23
+ NAMESPACE_DECL = Node::NAMESPACE_DECL
24
+ XINCLUDE_START = Node::XINCLUDE_START
25
+ XINCLUDE_END = Node::XINCLUDE_END
26
+ DOCB_DOCUMENT_NODE = Node::DOCB_DOCUMENT_NODE
27
+ end
28
+ end
27
29
  end
@@ -1,14 +1,16 @@
1
- module LibXML
2
- module XML
3
- module XPath
4
- class Object
5
- alias :size :length
6
-
7
- def set
8
- warn("XPath::Object#set is deprecated. Simply use the XPath::Object API instead")
9
- self
10
- end
11
- end
12
- end
13
- end
1
+ # encoding: UTF-8
2
+
3
+ module LibXML
4
+ module XML
5
+ module XPath
6
+ class Object
7
+ alias :size :length
8
+
9
+ def set
10
+ warn("XPath::Object#set is deprecated. Simply use the XPath::Object API instead")
11
+ self
12
+ end
13
+ end
14
+ end
15
+ end
14
16
  end
data/lib/xml.rb CHANGED
@@ -1,14 +1,16 @@
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
14
-
1
+ # encoding: UTF-8
2
+
3
+ # This file loads libxml and adds the LibXML namespace
4
+ # to the toplevel for conveneience. The end result
5
+ # is to have XML:: universally exposed.
6
+ #
7
+ # It is recommend that you only load this file for libs
8
+ # that do not have their own namespace, eg. administrative
9
+ # scripts, personal programs, etc. For other applications
10
+ # require 'libxml' instead and include LibXML into your
11
+ # app/libs namespace.
12
+
13
+ require 'libxml'
14
+
15
+ include LibXML
16
+
data/lib/xml/libxml.rb CHANGED
@@ -1,8 +1,10 @@
1
- # This is here for backward compatibility.
2
- #
3
- # TODO: DEPRECATE!
4
-
5
- require 'libxml.rb'
6
-
7
- include LibXML
8
-
1
+ # encoding: UTF-8
2
+
3
+ # This is here for backward compatibility.
4
+ #
5
+ # TODO: DEPRECATE!
6
+
7
+ require 'libxml.rb'
8
+
9
+ include LibXML
10
+
@@ -0,0 +1,50 @@
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
+ # ------- Default Package ----------
7
+ FILES = FileList[
8
+ 'HISTORY',
9
+ 'LICENSE',
10
+ 'libxml-ruby.gemspec',
11
+ 'MANIFEST',
12
+ 'Rakefile',
13
+ 'README.rdoc',
14
+ 'setup.rb',
15
+ 'ext/libxml/*.h',
16
+ 'ext/libxml/*.c',
17
+ 'ext/libxml/*.rb',
18
+ 'ext/mingw/Rakefile',
19
+ 'ext/mingw/build.rake',
20
+ 'ext/vc/*.sln',
21
+ 'ext/vc/*.vcproj',
22
+ 'lib/**/*.rb',
23
+ 'script/**/*',
24
+ 'test/**/*'
25
+ ]
26
+
27
+ Gem::Specification.new do |spec|
28
+ spec.name = 'libxml-ruby'
29
+ spec.version = version
30
+ spec.homepage = 'http://xml4r.github.com/libxml-ruby'
31
+ spec.summary = 'Ruby Bindings for LibXML2'
32
+ spec.description = <<-EOS
33
+ The Libxml-Ruby project provides Ruby language bindings for the GNOME
34
+ Libxml2 XML toolkit. It is free software, released under the MIT License.
35
+ Libxml-ruby's primary advantage over REXML is performance - if speed
36
+ is your need, these are good libraries to consider, as demonstrated
37
+ by the informal benchmark below.
38
+ EOS
39
+ spec.authors = ['Ross Bamform', 'Wai-Sun Chia', 'Sean Chittenden',
40
+ 'Dan Janwoski', 'Anurag Priyam', 'Charlie Savage']
41
+ spec.platform = Gem::Platform::RUBY
42
+ spec.bindir = "bin"
43
+ spec.extensions = ["ext/libxml/extconf.rb"]
44
+ spec.files = FILES.to_a
45
+ spec.test_files = Dir.glob("test/tc_*.rb")
46
+
47
+ spec.required_ruby_version = '>= 1.8.6'
48
+ spec.date = DateTime.now
49
+ spec.has_rdoc = true
50
+ end
@@ -0,0 +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>