<?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.
-->
<!--
Forrest site.xml

This file contains an outline of the site's information content.  It is used to:
- Generate the website menus (though these can be overridden - see docs)
- Provide semantic, location-independent aliases for internal 'site:' URIs, eg
<link href="site:changes"> links to changes.html (or ../changes.html if in
  subdir).
- Provide aliases for external URLs in the external-refs section.  Eg, <link
  href="ext:cocoon"> links to http://cocoon.apache.org/ 

See http://forrest.apache.org/docs/linking.html for more info
-->
<!-- The label attribute of the outer "site" element will only show 
  in the linkmap (linkmap.html).
  Use elements project-name and group-name in skinconfig to change name of 
  your site or project that is usually shown at the top of page.
  No matter what you configure for the href attribute, Forrest will
  always use index.html when you request http://yourHost/
  See FAQ: "How can I use a start-up-page other than index.html?"
-->
<site label="Pig" href="" xmlns="http://apache.org/forrest/linkmap/1.0" tab="">

  <docs label="Pig"> 
    <index label="Overview" 				href="index.html" />
    <start label="Getting Started"	        href="start.html" />
    <basics label="Pig Latin Basics"	href="basic.html" />
    <funct label="Built In Functions"	href="func.html" />
    <udf label="User Defined Functions"  href="udf.html" />
    <control label="Control Structures"	href="cont.html" />
    <cmds label="Shell and Utililty Commands" href="cmds.html" />
    <perform label="Performance and Efficiency" href="perf.html" />
    <test label="Testing and Diagnostics" href="test.html" />
    <admin label="Administration" href="admin.html" />
    <index label="Index" href="pig-index.html" />
    </docs>  
      
     <docs label="Miscellaneous"> 
     <api	label="API Docs" href="api/"/>
     <jdiff label="API Changes" href="ext:jdiff/changes"/>
     <wiki  label="Wiki" href="ext:wiki" />
     <faq  label="FAQ" href="ext:faq" />
     <relnotes  label="Release Notes" 	href="ext:relnotes" />
    </docs>
     
 <external-refs> 
    <wiki      href="https://cwiki.apache.org/confluence/display/PIG" />
    <faq       href="https://cwiki.apache.org/confluence/display/PIG/FAQ" />
    <relnotes  href="http://hadoop.apache.org/pig/releases.html" />
    <jdiff     href="jdiff/">
    <changes href="changes.html" />
    </jdiff>
 </external-refs>
</site>
