<?xml version="1.0" encoding="ISO-8859-1"?>
<!--

    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.

-->
<book>
	<chapter>
		<comment>
		First chapter.
		</comment>
		<paragraph>
			Once upon a time...
		</paragraph>
		<paragraph>
			And this is how the book met the fairy, and how all this
			story began.
		</paragraph>
	</chapter>
	<chapter>
		<paragraph>
			And the book lived a never ending happy life, read, copied
			and enjoyed by so many readers.
		</paragraph>	
	</chapter>
	<chapter>	
		<comment>
		Empty chapter
		</comment>
	</chapter>
	<index>
		<word>
			Good book
		</word>
		<ref>
		<page>
			22
		</page>	
		<line>
			12
		</line>
		</ref>
	</index>
	<index>
		<word>
			E-Tool
		</word>
		<ref>
		<page>
			5
		</page>	
		<line>
			15
		</line>
		</ref>
		<ref>
		<page>
			29
		</page>	
		<line>
			31
		</line>
		</ref>
	</index>
	<good/>
</book>
