<?xml version="1.0"?>
<!--
    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 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://docbook.org/ns/docbook ../../content/dtd/docbook.xsd"
 xmlns="http://docbook.org/ns/docbook">
    
    <preface>
        <para>
            This Book is in an experimental stage and acts as a proof of concept. It could be the start of moving the ofbiz documentation from the current <ulink type="http"
                url="http://docs.ofbiz.org">OFBiz documentation site</ulink> to the OFBiz content component. It is currently open for discussion by the OFBiz community. 
        </para>
        <para>
            The advantages of using it within OFBiz are:
            <orderedlist>
                <listitem>No external system required for documentation</listitem>
                <listitem>The content of the internal help files can be used within the documentation</listitem>
                <listitem>The documentation always has the same version as the system (It is part of it)</listitem>
                <listitem>The content is stored in a internationally accepted <ulink type="http" url="http://www.docbook.org">'DocBook'</ulink> format</listitem>
                <listitem>The content can be easily presented in the selected visual schemas (To be implemented)</listitem>
            </orderedlist>
        </para>
    </preface>
    
    <bookinfo>
        <title>Apache OFBiz official documentation</title>
        <copyright><year>2009</year><holder>Apache Foundation</holder></copyright>
    </bookinfo>
    
    
    
    <chapter>
        <title>Introduction</title>
        <para>
            Welcome to Apache OFBiz the ready to use open source ERP system.
        </para>
    </chapter>
    
    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 
        href="../../../applications/accounting/documents/Accounting.xml"/>
    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 
        href="../../../specialpurpose/myportal/documents/MyPortal.xml"/>
    
</book>