*******************************************************************************
* (c) Copyright IBM Corp. 2007 All rights reserved.
* 
* The following sample of source code ("Sample") is owned by International 
* Business Machines Corporation or one of its subsidiaries ("IBM") and is 
* copyrighted and licensed, not sold. You may use, copy, modify, and 
* distribute the Sample in any form without payment to IBM, for the purpose of 
* assisting you in the development of your applications.
* 
* The Sample code is provided to you on an "AS IS" basis, without warranty of 
* any kind. IBM HEREBY EXPRESSLY DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR 
* IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Some jurisdictions do 
* not allow for the exclusion or limitation of implied warranties, so the above 
* limitations or exclusions may not apply to you. IBM shall not be liable for 
* any damages you suffer as a result of using, copying, modifying or 
* distributing the Sample, even if IBM has been advised of the possibility of 
* such damages.
*
*******************************************************************************
*
*                    README for XML Samples
*
* The <install_path>/sqllib/samples/xml directory on UNIX and 
* <install_path>\sqllib\samples\xml directory on Windows contain this README file
* where <install_path> is the location of DB2 9.7 on your hard drive.
* The default location for <install_path> is $HOME for UNIX
* and C:\Program Files\IBM for windows. 
*
* The DB2 9.7 sample code for XML is located in the following directory :
* <install_path>/sqllib/samples/xml directory on Unix and
* <install_path>\sqllib\samples\xml directory on Windows.
*
* This README is organized into DIRECTORY ROADMAP, GETTING XML SAMPLES UP 
* AND RUNNING, XML SAMPLES DESIGN OVERVIEW and DETAILS OF SAMPLES sections.
*
*******************************************************************************
*
*                        DIRECTORY ROADMAP
* 
* 1.xml/xquery : This directory contains samples for demonstrating the XQuery
*                features.
*                xquery/c contains C samples for XQuery.
*                xquery/cli contains CLI samples for XQuery.
                 xquery/clp contains command line processor samples for XQuery.
*                xquery/java/jdbc contains JDBC API samples for XQuery.
*                xquery/java/sqlj contains SQLj samples for XQuery.
*
* 2. xml/c   : contains the files for embedded SQL samples.
* 3. xml/cli : contains the files for CLI samples.
* 4. xml/clp : contains the files for CLP samples.
* 5. xml/java: contains the files for JAVA samples.
*              java/jdbc contains the files for JDBC API samples 
*              java/sqlj contains the files for SQLj samples.
* 6. xml/data: directory contains the data required for running these samples.
*              This directory contains the setup and clean up scripts for some of
*              the samples.
*
* For more details on the content of these directories, please refer to the
* the README file in the respective directories. 
* 
********************************************************************************
*
*               GETTING XML SAMPLES UP AND RUNNING
*
* WARNINGS
*  1. These steps gives an overview of building and running the samples. Please
*     read the README in corresponding directory for any specific considerations.
*
* SETUP:
*
*   1) Copy the files from corresponding  directory to a working 
*      directory and ensure that directory has write permission.
*
*   2) On Windows platform, all samples should be run and built in DB2 
*      Command Window. 
*      The DB2 command window is needed to execute the db2 specific commands. 
*      You can follow the step below to open DB2 command window.
*      From the Start Menu click Start --> Programs --> IBM DB2 --> 
*      <DB2  copy name> --> Command Line Tools --> Command Window. 
*
*   3) Start the database manager with the following command:
*      db2start
*
*   4) Create the sample database with the following command:
*      db2sampl -xml
*
*   5) Connect to the sample database with the following command:
*      db2 connect to sample
*
*   6) To build stored procedures and User defined functions, 
*      ensure that you have write permission on the 
*      <install_path>/sqllib/function directory on UNIX and
*      <install_path>\sqlib\function directory on WINDOWS. 
*
*   7) Change directory (CD) to the directory containing the files 
*      copied in step 1.
*
* BUILD AND RUN:
*    1. Some of the samples might need one or more of the data files at runtime.
*       The data files can be found in the xml/data directory. Please copy the
*       data files to your working directory before running the particular sample.
*       For more details on the data files required for a particular sample,
*       please refer the header section of the sample.
*             
*  To compile these samples, build scripts are provided.
*  The README file in each directory containing the actual samples provides the
*  details about how to compile the samples using the build script.
*
*  Here is the brief overview :
*  
*  C and CLI:
*
*  To create the executable for the sample:
* 
*    bldapp <sample name>
*  
*  where <sample name> is the name of the sample without any extension.
*
*  e.g. bldapp xmlschema
*
*  To run the sample:
*
*    xmlschema
*
*  JDBC:
*
*  To create the class file:
*  
*    javac <sample name>.java
*
*  where <sample name> is the name of the sample without any extension.
*
*  To run the sample file:
*
*    java <sample name>.class
*
*  where <sample name> is the name of the sample without any extension.
*
*   SQLj:
*
*  To create the class file:
*
*    bldsqlj <sample name> userid password [server name] [port name]
*
*  where <sample name> is the name of the sample without any extension.
*
*  To run the sample:
*
*    java <sample name>.class
*
*  where <sample name> is the name of the sample without any extension.
*
*
*******************************************************************************
*
*                 XML SAMPLES DESIGN OVERVIEW
*
* The XML samples can be functionally categorized into the following areas:
*
* Administration Samples
*
*   XML Schema Support 
*   Schema registration and validation of XML document as per the schema 
*
*   XML Values Index Support 
*   Indexes on different node types of XML value 
*  
*   Utility Support for XML
*   Import/export/runstats/db2look/db2batch support for XML data type 
*
* Application Development Samples
*
*   XML Insert/Update/Delete 
*   Inserting the new XML value in XML type column, Updating and Deleting the
*   existing values.
*  
*   XML Parse/Validate/Serialize Support 
*   Implicit/explicit parsing of compatible data types.
*
*   Hybrid Use of SQL and XQuery 
*   SQL/XML functions like XMLTable, XMLQuery and XMLExists.
*   
*   XML in Stored Procedures
*   Stored procedure with XML data type parameter 
*   
*   XML Decomposition Support 
*   Decomposition of XML document as per annnotated schema 
*
* XQuery Samples
*
*   Axises, FLWOR expression. SQL/XML with XQuery and nested XQueries
*
********************************************************************************
*
*                        DETAILS OF SAMPLES
*
* In order to help provide valid, usable and comprehensive XML samples, the
* samples are based on specific usage scenarios, or they demonstrate a
* particular feature or API. These samples are derived from a purchase order
* scenario. Besides the purchase order scenario, a bookstore scenario is used
* to demonstrate the decomposition functionality.
*
* A. Usage Scenarios
*    
*    1. Consider a user who needs to insert an XML type value into the table.
*       The user would like to ensure that the XML value conforms to a
*       deterministic XML schema. To do so, the user can register the XML
*       schema to the database and use that to validate the XML document
*       prior to inserting it into the table.
*        
*       Samples: xmlschema.*
*
*    2. Purchase order XML document contains detailed information about all
*       the orders. It will also have the detail of the customer with each
*       order. To avoid infomation, such as address, repeating for each
*       purchase order from the same customer, user can store this data into
*       the relational table having XML column.
*
*       Samples: xmltotable.*
*                
*    3. A bookstore owner has some XML documents which contains descriptive
*       information about a book which he has for sale. The owner needs to
*       store these details in a relational table for easy retrival of
*       information. He/She can easily do it using the Decomposition function. 
*        
*       Samples: xmldecomposition.*
*      
*    4. User's purchase order database uses relational tables to store the
*       orders of different customers. To get all the purchase order data
*       filtered by date or status, a lot of joins on relational tables are
*       required. These joins create a massive amount of redundant data as the 
*       intermediate results. The same data can be returned as an XML object
*       to the application. The XML object can be created using the XML
*       constructor functions on the server side.
*
*       Samples: reltoxmltype.*
*                reltoxmldoc.*
*
* B. Features 
*   
*    1. XML Document Insert/Update/Delete:
*       These samples demonstrate different ways of inserting/updating/deleting
*       an XML document in a table having XML column.
*
*       Samples: xmlinsert.*
*                xmlupdel.*
*                xmlread.*
*
*    2. Stored Procedure parameter of XML type:
*       These samples demonstrate the XML parameter type for stored procedure. 
*
*       Samples: simple_xmlproc.* 
*
*    3. XML Value Index:
*       These samples demonstrate the new index features on XML document,
*       the different kinds of indexes for XML columns, and how to put the
*       constraints on XML document using an index.
*
*       Samples: xmlindex.*
*                xmlconst.*
*
*    4. Import/Export:
*       These samples demonstrate the new import/export command for XML data,
*       and the API changes for import/export commands.
*
*       Samples: impexpxml.*
*                       
*    5. XML Runstats:
*       These samples demonstrate how to perform RUNSTATS on a TABLE containing
*       one or more XML columns. In DB2 Viper, RUNSTATS collects statistics for
*       XML columns and associated XML indexes along with relational columns.
*       Using these statistics the optimizers perform cost estimation for
*       different execution plans. 
*
*       Samples: xmlrunstats.*
*                 
*    6. db2look support for XML:
*       These samples demonstrate how db2look generates the DDL statements for
*       the tables having XML columns.
*
*       Samples: xmldb2look.*
*
*    7. db2batch support for XML:
*        These samples demonstrate the db2batch functionality when the
*        query statements in the batch has XML related queries.
*
*       Samples: xmldb2batch.*
*
*    8. XQuery Support:
*       These sample demonstrate the XQuery support of DB2. For more details,
*       please refer to the README in xquery directory.
*
********************************************************************************