<?xml version='1.0' encoding='UTF-8' ?>
<!--

    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.

-->
<!DOCTYPE invoice []>
<invoice>
  <!--This is an invoice-->
	<ship-to>
	    <!-- Where the heck is this thing going to? -->
		<name>Cliff</name>
		<address>
			<street1>1800 Harrison St.</street1>
			<city>Oakland</city>
			<state>CA</state>
			<zip-code>94404</zip-code>
		</address>
		<phone>800 236-9564</phone>
	</ship-to>
  <!-- Another comment -->
    <item Id="45623" InStock="true" Category="toy">
		<Quantity>3</Quantity>
		<Price>9.99</Price>
	</item>
	<shipping-method>
		<carrier>FedEx</carrier>
		<option>Fast</option>
		<estimated-delivery>P1D</estimated-delivery>
	</shipping-method>
	<shipping-date>
		<date>2002-10-25</date>
		<time>10:21:00</time>
	</shipping-date>
</invoice>
