libxml-ruby 1.1.4 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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>