<?xml version="1.0"?>
<!--
NAME

 Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. 

    kuscomm.xsd
DESCRIPTION
    Common XML Schema types for SXML.

MODIFIED        MM/DD/YY
    pknaggs     05/24/11 - 9934805: add char256ElementWithValue1 for
                           link$.passwordx
    lbarton     11/11/09 - deferred segment creation for partitions
    lbarton     09/21/09 - bug 8820324: support all values in deferred_stg
    lbarton     07/09/09 - bug 8494344: archive compression
    rapayne     05/10/09 - bug 8391296: add FLASH_CACHE to storage definition.
    rapayne     01/15/08 - Add INTEGER and DECIMAL to TypeNameElement
                         - Add OIDType definitions (i.e., from kustablt.xsd)
    lbarton     01/15/08 - Bug 6724820: table compression
    lbarton     03/19/08 - deferred segment creation
    lbarton     12/19/07 - Bug 6655531: customer area
    lbarton     11/15/06 - diff support
    slynn       10/15/06 - remove LOBRETENTION
    htseng      08/01/06 - add LOBRETENTION and MAXSIZE support
    lbarton     11/09/05 - Bug 4724986: reformat files for use with XMLSpy 
    lbarton     10/18/05 - lbarton_mddiff2
    lbarton     09/06/05 - Initial version
 -->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ku="http://xmlns.oracle.com/ku" targetNamespace="http://xmlns.oracle.com/ku" elementFormDefault="qualified" attributeFormDefault="unqualified">
 <!-- types without element content -->
 <!-- "vsn" attribute -->
 <xsd:simpleType name="vsn">
  <xsd:restriction base="xsd:string">
   <xsd:enumeration value="1.0"/>
   <!-- Other values can be added as needed -->
  </xsd:restriction>
 </xsd:simpleType>
 <!-- "src" attribute -->
 <xsd:simpleType name="srcType">
  <xsd:restriction base="xsd:integer">
   <xsd:minInclusive value="1"/>
   <xsd:maxInclusive value="2"/>
  </xsd:restriction>
 </xsd:simpleType>
 <!-- for elements without content, e.g., GLOBAL_TEMPORARY -->
 <xsd:complexType name="EmptyType">
  <xsd:attribute name="src" type="ku:srcType"/>
 </xsd:complexType>
 <!-- for elements like SCHEMA or NAME - 30 characters long -->
 <xsd:complexType name="char30ElementWithValue1">
  <xsd:simpleContent>
   <xsd:extension base="ku:char30Element">
    <xsd:attribute name="value1" type="ku:char30Element"/>
    <xsd:attribute name="src" type="ku:srcType"/>
   </xsd:extension>
  </xsd:simpleContent>
 </xsd:complexType>
 <xsd:simpleType name="char30Element">
  <xsd:restriction base="xsd:string">
   <xsd:maxLength value="30"/>
  </xsd:restriction>
 </xsd:simpleType>
 <!-- 128-character elements -->
 <xsd:complexType name="char128ElementWithValue1">
  <xsd:simpleContent>
   <xsd:extension base="ku:char128Element">
    <xsd:attribute name="value1" type="ku:char128Element"/>
    <xsd:attribute name="src" type="ku:srcType"/>
   </xsd:extension>
  </xsd:simpleContent>
 </xsd:complexType>
 <xsd:simpleType name="char128Element">
  <xsd:restriction base="xsd:string">
   <xsd:maxLength value="128"/>
  </xsd:restriction>
 </xsd:simpleType>
 <!-- 256-character elements (link dollar passwordx, bug 9934805) -->
 <xsd:complexType name="char256ElementWithValue1">
  <xsd:simpleContent>
   <xsd:extension base="ku:char256Element">
    <xsd:attribute name="value1" type="ku:char256Element"/>
    <xsd:attribute name="src" type="ku:srcType"/>
   </xsd:extension>
  </xsd:simpleContent>
 </xsd:complexType>
 <xsd:simpleType name="char256Element">
  <xsd:restriction base="xsd:string">
   <xsd:maxLength value="256"/>
  </xsd:restriction>
 </xsd:simpleType>
 <!-- 1000-character elements -->
 <xsd:complexType name="char1000ElementWithValue1">
  <xsd:simpleContent>
   <xsd:extension base="ku:char1000Element">
    <xsd:attribute name="value1" type="ku:char1000Element"/>
    <xsd:attribute name="src" type="ku:srcType"/>
   </xsd:extension>
  </xsd:simpleContent>
 </xsd:complexType>
 <xsd:simpleType name="char1000Element">
  <xsd:restriction base="xsd:string">
   <xsd:maxLength value="1000"/>
  </xsd:restriction>
 </xsd:simpleType>
 <!-- 2000-character elements -->
 <xsd:complexType name="char2000ElementWithValue1">
  <xsd:simpleContent>
   <xsd:extension base="ku:char2000Element">
    <xsd:attribute name="value1" type="ku:char2000Element"/>
    <xsd:attribute name="src" type="ku:srcType"/>
   </xsd:extension>
  </xsd:simpleContent>
 </xsd:complexType>
 <xsd:simpleType name="char2000Element">
  <xsd:restriction base="xsd:string">
   <xsd:maxLength value="2000"/>
  </xsd:restriction>
 </xsd:simpleType>
 <!-- 4000-character elements -->
 <xsd:complexType name="char4000ElementWithValue1">
  <xsd:simpleContent>
   <xsd:extension base="ku:char4000Element">
    <xsd:attribute name="value1" type="ku:char4000Element"/>
    <xsd:attribute name="src" type="ku:srcType"/>
   </xsd:extension>
  </xsd:simpleContent>
 </xsd:complexType>
 <xsd:simpleType name="char4000Element">
  <xsd:restriction base="xsd:string">
   <xsd:maxLength value="4000"/>
  </xsd:restriction>
 </xsd:simpleType>
 <!-- unbounded strings -->
 <xsd:complexType name="stringElementWithValue1">
  <xsd:simpleContent>
   <xsd:extension base="xsd:string">
    <xsd:attribute name="value1" type="xsd:string"/>
    <xsd:attribute name="src" type="ku:srcType"/>
   </xsd:extension>
  </xsd:simpleContent>
 </xsd:complexType>
 <!-- numeric with range 1-99 (e.g., PCTFREE) -->
 <xsd:simpleType name="pctElement">
  <xsd:restriction base="xsd:nonNegativeInteger">
   <xsd:maxInclusive value="99"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:complexType name="pctElementWithValue1">
  <xsd:simpleContent>
   <xsd:extension base="ku:pctElement">
    <xsd:attribute name="value1" type="ku:pctElement"/>
    <xsd:attribute name="src" type="ku:srcType"/>
   </xsd:extension>
  </xsd:simpleContent>
 </xsd:complexType>
 <!-- numeric with range 1-255 (e.g., INITRANS) -->
 <xsd:simpleType name="int255Element">
  <xsd:restriction base="xsd:nonNegativeInteger">
   <xsd:maxInclusive value="255"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:complexType name="int255ElementWithValue1">
  <xsd:simpleContent>
   <xsd:extension base="ku:int255Element">
    <xsd:attribute name="value1" type="ku:int255Element"/>
    <xsd:attribute name="src" type="ku:srcType"/>
   </xsd:extension>
  </xsd:simpleContent>
 </xsd:complexType>
 <!-- numeric with range 1-32766 (e.g., PARALLEL) -->
 <xsd:simpleType name="int32766Element">
  <xsd:restriction base="xsd:nonNegativeInteger">
   <xsd:maxInclusive value="32766"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:complexType name="int32766ElementWithValue1">
  <xsd:simpleContent>
   <xsd:extension base="ku:int32766Element">
    <xsd:attribute name="value1" type="ku:int32766Element"/>
    <xsd:attribute name="src" type="ku:srcType"/>
   </xsd:extension>
  </xsd:simpleContent>
 </xsd:complexType>
 <!-- unbounded non-negative integers -->
 <xsd:complexType name="intElementWithValue1">
  <xsd:simpleContent>
   <xsd:extension base="xsd:nonNegativeInteger">
    <xsd:attribute name="value1" type="xsd:nonNegativeInteger"/>
    <xsd:attribute name="src" type="ku:srcType"/>
   </xsd:extension>
  </xsd:simpleContent>
 </xsd:complexType>
 <!-- Y/N values -->
 <xsd:simpleType name="YNElement">
  <xsd:restriction base="xsd:string">
   <xsd:enumeration value="Y"/>
   <xsd:enumeration value="N"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:complexType name="YNElementWithValue1">
  <xsd:simpleContent>
   <xsd:extension base="ku:YNElement">
    <xsd:attribute name="value1" type="ku:YNElement"/>
    <xsd:attribute name="src" type="ku:srcType"/>
   </xsd:extension>
  </xsd:simpleContent>
 </xsd:complexType>
 <!-- PARALLEL
       (Note: I wanted content to be optional but I can't
        figure out how to do that.  So AUTOMATIC means
        that Oracle will select the degree of parallelism.)
   -->
 <xsd:simpleType name="PARALLELstring">
  <xsd:restriction base="xsd:string">
   <xsd:enumeration value="AUTOMATIC"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="PARALLELType">
  <xsd:union memberTypes="ku:int32766Element ku:PARALLELstring"/>
 </xsd:simpleType>
 <xsd:complexType name="PARALLELTypeWithValue1">
  <xsd:simpleContent>
   <xsd:extension base="ku:PARALLELType">
    <xsd:attribute name="value1" type="ku:PARALLELType"/>
    <xsd:attribute name="src" type="ku:srcType"/>
   </xsd:extension>
  </xsd:simpleContent>
 </xsd:complexType>
 <!-- this is to support the old syntax -->
 <xsd:simpleType name="DEFAULTstring">
  <xsd:restriction base="xsd:string">
   <xsd:enumeration value="DEFAULT"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="DEFAULTType">
  <xsd:union memberTypes="ku:int32766Element ku:DEFAULTstring"/>
 </xsd:simpleType>
 <xsd:complexType name="DEFAULTTypeWithValue1">
  <xsd:simpleContent>
   <xsd:extension base="ku:DEFAULTType">
    <xsd:attribute name="value1" type="ku:DEFAULTType"/>
    <xsd:attribute name="src" type="ku:srcType"/>
   </xsd:extension>
  </xsd:simpleContent>
 </xsd:complexType>
 <xsd:complexType name="OldPARALLELType">
  <xsd:sequence>
   <xsd:element name="DEGREE" type="ku:DEFAULTTypeWithValue1"/>
   <xsd:element name="INSTANCES" type="ku:DEFAULTTypeWithValue1" minOccurs="0"/>
  </xsd:sequence>
  <xsd:attribute name="src" type="ku:srcType"/>
 </xsd:complexType>
 <!-- complex types with element content -->
 <!-- Physical Attributes clause -->
 <xsd:group name="PhysicalAttributesClause">
  <xsd:sequence>
   <xsd:element name="PCTFREE" type="ku:pctElementWithValue1" minOccurs="0"/>
   <xsd:element name="PCTUSED" type="ku:pctElementWithValue1" minOccurs="0"/>
   <xsd:element name="INITRANS" type="ku:int255ElementWithValue1" minOccurs="0"/>
   <xsd:element name="STORAGE" type="ku:STORAGEType" minOccurs="0"/>
  </xsd:sequence>
 </xsd:group>
 <!-- SEGMENT ATTRIBUTES clause -->
 <xsd:complexType name="SEGMENT_ATTRIBUTESType">
  <xsd:sequence>
   <!-- sxml diff doc can contain one of each -->
   <xsd:choice minOccurs="0" maxOccurs="2">
    <xsd:element name="SEGMENT_CREATION_DEFERRED" type="ku:EmptyType" minOccurs="0"/>
    <xsd:element name="SEGMENT_CREATION_IMMEDIATE" type="ku:EmptyType" minOccurs="0"/>
   </xsd:choice>
   <xsd:group ref="ku:PhysicalAttributesClause"/>
   <xsd:element name="TABLESPACE" type="ku:char30ElementWithValue1" minOccurs="0"/>
   <xsd:element name="LOGGING" type="ku:YNElementWithValue1" minOccurs="0"/>
  </xsd:sequence>
 </xsd:complexType>
 <!-- STORAGE clause -->
 <xsd:complexType name="STORAGEType">
  <xsd:sequence>
   <xsd:element name="INITIAL" type="ku:intElementWithValue1" minOccurs="0"/>
   <xsd:element name="NEXT" type="ku:intElementWithValue1" minOccurs="0"/>
   <xsd:element name="MINEXTENTS" type="ku:intElementWithValue1" minOccurs="0"/>
   <xsd:element name="MAXEXTENTS" type="ku:intElementWithValue1" minOccurs="0"/>
   <xsd:element name="PCTINCREASE" type="ku:pctElementWithValue1" minOccurs="0"/>
   <xsd:element name="MAXSIZE" type="ku:intElementWithValue1" minOccurs="0"/>
   <xsd:element name="FREELISTS" type="ku:intElementWithValue1" minOccurs="0"/>
   <xsd:element name="FREELIST_GROUPS" type="ku:intElementWithValue1" minOccurs="0"/>
   <xsd:element name="BUFFER_POOL" type="ku:BufferPoolElementWithValue1" minOccurs="0"/>
   <xsd:element name="FLASH_CACHE" type="ku:FlashCacheWithValue1" minOccurs="0"/>
   <xsd:element name="CELL_FLASH_CACHE" type="ku:FlashCacheWithValue1" minOccurs="0"/>
  </xsd:sequence>
  <xsd:attribute name="src" type="ku:srcType"/>
 </xsd:complexType>
 <!-- BUFFER POOL -->
 <xsd:simpleType name="BufferPoolElement">
  <xsd:restriction base="xsd:string">
   <xsd:enumeration value="KEEP"/>
   <xsd:enumeration value="RECYCLE"/>
   <xsd:enumeration value="DEFAULT"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:complexType name="BufferPoolElementWithValue1">
  <xsd:simpleContent>
   <xsd:extension base="ku:BufferPoolElement">
    <xsd:attribute name="value1" type="ku:BufferPoolElement"/>
    <xsd:attribute name="src" type="ku:srcType"/>
   </xsd:extension>
  </xsd:simpleContent>
 </xsd:complexType>
 <!-- FLASH_CACHE -->
 <xsd:simpleType name="FlashCacheElement">
  <xsd:restriction base="xsd:string">
   <xsd:enumeration value="KEEP"/>
   <xsd:enumeration value="NONE"/>
   <xsd:enumeration value="DEFAULT"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:complexType name="FlashCacheWithValue1">
  <xsd:simpleContent>
   <xsd:extension base="ku:FlashCacheElement">
    <xsd:attribute name="value1" type="ku:FlashCacheElement"/>
    <xsd:attribute name="src" type="ku:srcType"/>
   </xsd:extension>
  </xsd:simpleContent>
 </xsd:complexType>
 <!-- TYPE_NAME -->
 <xsd:simpleType name="TypeNameElement">
  <xsd:restriction base="xsd:string">
   <xsd:enumeration value="CHAR"/>
   <xsd:enumeration value="VARCHAR2"/>
   <xsd:enumeration value="NCHAR"/>
   <xsd:enumeration value="NVARCHAR2"/>
   <xsd:enumeration value="NUMBER"/>
   <xsd:enumeration value="INTEGER"/>
   <xsd:enumeration value="DECIMAL"/>
   <xsd:enumeration value="FLOAT"/>
   <xsd:enumeration value="BINARY_FLOAT"/>
   <xsd:enumeration value="BINARY_DOUBLE"/>
   <xsd:enumeration value="LONG"/>
   <xsd:enumeration value="LONG_RAW"/>
   <xsd:enumeration value="RAW"/>
   <xsd:enumeration value="DATE"/>
   <xsd:enumeration value="TIMESTAMP"/>
   <xsd:enumeration value="TIMESTAMP_WITH_TIMEZONE"/>
   <xsd:enumeration value="TIMESTAMP_WITH_LOCAL_TIMEZONE"/>
   <xsd:enumeration value="INTERVAL_YEAR_TO_MONTH"/>
   <xsd:enumeration value="INTERVAL_DAY_TO_SECOND"/>
   <xsd:enumeration value="TIME"/>
   <xsd:enumeration value="TIME_WITH_TIMEZONE"/>
   <xsd:enumeration value="BLOB"/>
   <xsd:enumeration value="CLOB"/>
   <xsd:enumeration value="NCLOB"/>
   <xsd:enumeration value="BFILE"/>
   <xsd:enumeration value="ROWID"/>
   <xsd:enumeration value="UROWID"/>
   <xsd:enumeration value="MLSLABEL"/>
   <xsd:enumeration value="UDT"/>
   <xsd:enumeration value="NESTED_TABLE"/>
   <xsd:enumeration value="VARRAY"/>
   <xsd:enumeration value="OPAQUE"/>
   <xsd:enumeration value="REF"/>
   <xsd:enumeration value="XMLTYPE"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:complexType name="TypeNameElementWithValue1">
  <xsd:simpleContent>
   <xsd:extension base="ku:TypeNameElement">
    <xsd:attribute name="value1" type="ku:TypeNameElement"/>
    <xsd:attribute name="src" type="ku:srcType"/>
   </xsd:extension>
  </xsd:simpleContent>
 </xsd:complexType>
 <!-- SCHEMA NAME: define both group and type -->
 <xsd:group name="SCHEMA_NAMEGroup">
  <xsd:sequence>
   <xsd:element name="SCHEMA" type="ku:char30ElementWithValue1"/>
   <xsd:element name="NAME" type="ku:char30ElementWithValue1"/>
  </xsd:sequence>
 </xsd:group>
 <xsd:complexType name="SCHEMA_NAMEType">
  <xsd:sequence>
   <xsd:group ref="ku:SCHEMA_NAMEGroup"/>
  </xsd:sequence>
 </xsd:complexType>
 <xsd:group name="optSCHEMA_NAMEGroup">
  <xsd:sequence>
   <xsd:element name="SCHEMA" type="ku:char30ElementWithValue1" minOccurs="0"/>
   <xsd:element name="NAME" type="ku:char30ElementWithValue1"/>
  </xsd:sequence>
 </xsd:group>
 <xsd:complexType name="optSCHEMA_NAMEType">
  <xsd:sequence>
   <xsd:group ref="ku:optSCHEMA_NAMEGroup"/>
  </xsd:sequence>
 </xsd:complexType>
 <!-- simple COL_LIST -->
 <xsd:complexType name="SimpleCOL_LISTType">
  <xsd:sequence>
   <xsd:element name="COL_LIST_ITEM" type="ku:SimpleCOL_LIST_ITEMType" maxOccurs="1000"/>
  </xsd:sequence>
 </xsd:complexType>
 <xsd:complexType name="SimpleCOL_LIST_ITEMType">
  <xsd:sequence>
   <xsd:element name="NAME" type="ku:char30ElementWithValue1"/>
   <xsd:element name="CUSTOMER_AREA" minOccurs="0"/>
  </xsd:sequence>
  <xsd:attribute name="src" type="ku:srcType"/>
 </xsd:complexType>
 <!-- *******************************************************************
  Key compression
  COMPRESS - Y, N, non-negative integer 
******************************************************************** -->
 <xsd:simpleType name="KeyCompressType">
  <xsd:union memberTypes="ku:YNElement xsd:nonNegativeInteger"/>
 </xsd:simpleType>
 <xsd:complexType name="KeyCompressTypeWithValue1">
  <xsd:simpleContent>
   <xsd:extension base="ku:KeyCompressType">
    <xsd:attribute name="value1" type="ku:KeyCompressType"/>
    <xsd:attribute name="src" type="ku:srcType"/>
   </xsd:extension>
  </xsd:simpleContent>
 </xsd:complexType>
 <xsd:complexType name="OIDTypeWithValue1">
  <xsd:simpleContent>
   <xsd:extension base="ku:OIDType">
    <xsd:attribute name="value1" type="ku:OIDType"/>
    <xsd:attribute name="src" type="ku:srcType"/>
   </xsd:extension>
  </xsd:simpleContent>
  <!-- *******************************************************************
  OID: SYSTEM_GENERATED, PRIMARY_KEY or a hex value
******************************************************************** -->
 </xsd:complexType>
 <xsd:simpleType name="OIDType1">
  <xsd:restriction base="xsd:string">
   <xsd:enumeration value="SYSTEM_GENERATED"/>
   <xsd:enumeration value="PRIMARY_KEY"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="OIDType2">
  <xsd:restriction base="xsd:hexBinary">
   <xsd:maxLength value="32"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:simpleType name="OIDType">
  <xsd:union memberTypes="ku:OIDType1 ku:OIDType2"/>
 </xsd:simpleType>
 <!-- *******************************************************************
  Table compression
  COMPRESS - ALL, DIRECT_LOAD, etc.
    OLTP (11.2) and ALL (pre-11.2) are synonyms
    BASIC (11.2) and DIRECT_LOAD (pre-11.2) are synonyms
******************************************************************** -->
 <xsd:simpleType name="TableCompressType">
  <xsd:restriction base="xsd:string">
   <xsd:enumeration value="OLTP"/>
   <xsd:enumeration value="ALL"/>
   <xsd:enumeration value="BASIC"/>
   <xsd:enumeration value="DIRECT_LOAD"/>
   <xsd:enumeration value="QUERY"/>
   <xsd:enumeration value="ARCHIVE"/>
   <xsd:enumeration value="N"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:complexType name="TableCompressTypeWithValue1">
  <xsd:simpleContent>
   <xsd:extension base="ku:TableCompressType">
    <xsd:attribute name="value1" type="ku:TableCompressType"/>
    <xsd:attribute name="src" type="ku:srcType"/>
   </xsd:extension>
  </xsd:simpleContent>
 </xsd:complexType>
 <!-- *******************************************************************
  Table compress level - LOW (default is HIGH)
  We call the complex type "WithValue1" so that its name is like
  the other complex types, even though it can't have a value1
******************************************************************** -->
 <xsd:simpleType name="TableCompressLevel">
  <xsd:restriction base="xsd:string">
   <xsd:enumeration value="LOW"/>
  </xsd:restriction>
 </xsd:simpleType>
 <xsd:complexType name="TableCompressLevelWithValue1">
  <xsd:simpleContent>
   <xsd:extension base="ku:TableCompressLevel">
    <xsd:attribute name="src" type="ku:srcType"/>
   </xsd:extension>
  </xsd:simpleContent>
 </xsd:complexType>
</xsd:schema>
