<?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.
-->
<chapter xmlns="http://docbook.org/ns/docbook"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://docbook.org/ns/docbook ../../../applications/content/dtd/docbook.xsd">
    <title>The Ebay Component</title>
    <section>
        <title>Ebay Introduction</title>
        <para>
             The Ebay component provides an interface to the Ebay website. It is possible to export products from your store into  eBay category  also import an orders from ebay.       
        </para>
    </section>
    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../data/helpdata/HELP_EBAY_main.xml"/>
    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../data/helpdata/HELP_EBAY_EditEbayConfiguration.xml"/>
    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../data/helpdata/HELP_EBAY_AdvanceSearch.xml"/>
    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../data/helpdata/HELP_EBAY_KeywordSearch.xml"/>
    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../data/helpdata/HELP_EBAY_eBayOrders.xml"/>
    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../data/helpdata/HELP_EBAY_ManageOrdersFromEbay.xml"/>
    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../data/helpdata/HELP_EBAY_ProductsExportToEbay.xml"/>
    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../data/helpdata/HELP_EBAY_ShippingMethods.xml"/>
</chapter>
