<?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 bookinfo PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
]>

<bookinfo id="book-Messaging_Installation_Guide-Messaging_Installation_Guide">
        <title>Apache Qpid</title>
        <subtitle>Open Source AMQP Messaging</subtitle>
        <edition>1</edition>
        <pubsnumber>0</pubsnumber>
        <productname>Apache Qpid</productname>
        <productnumber>6</productnumber>
	<corpauthor>
	  <inlinemediaobject>
	    <imageobject>
	      <imagedata fileref="Common_Content/images/qpid-logo.png" format="PNG" />
	    </imageobject>
	  </inlinemediaobject>
	</corpauthor>

	<copyright>
	  <year>2010</year>
	  <holder>The Apache Software Foundation</holder>
	</copyright>

	<legalnotice>
	  <para>Licensed 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</para>

	  <para><filename>http://www.apache.org/licenses/LICENSE-2.0</filename></para>

	  <para>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.
	</para>


	</legalnotice>

</bookinfo>

                
