<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://xmlns.oracle.com/xdb/acl.xsd" version="1.0" xmlns:xdb="http://xmlns.oracle.com/xdb" xmlns:xdbacl="http://xmlns.oracle.com/xdb/acl.xsd" elementFormDefault="qualified" xdb:flags="24885" xdb:schemaURL="http://xmlns.oracle.com/xdb/acl.xsd" xdb:schemaOwner="XDB" xdb:numProps="46">
  <annotation>
    <documentation>
        This XML schema describes the structure of XDB ACL documents.
        
        Note : The &quot;systemPrivileges&quot; element below lists all supported 
          system privileges and their aggregations.
          See dav.xsd for description of DAV privileges
        Note : The elements and attributes marked &quot;hidden&quot; are for
          internal use only.
     </documentation>
    <appinfo><xdb:systemPrivileges xmlns:xdb="http://xmlns.oracle.com/xdb">
        <xdbacl:all xmlns:xdbacl="http://xmlns.oracle.com/xdb/acl.xsd">
          <xdbacl:read-properties/>
          <xdbacl:read-contents/>
          <xdbacl:read-acl/>
          <xdbacl:update/>
          <xdbacl:link/>
          <xdbacl:unlink/>
          <xdbacl:unlink-from/>
          <xdbacl:write-acl-ref/>
          <xdbacl:update-acl/>
          <xdbacl:link-to/>
          <xdbacl:resolve/>
          <xdbacl:write-config/>
        </xdbacl:all>
      </xdb:systemPrivileges></appinfo>
  </annotation>
  <!-- privilegeNameType (this is an emptycontent type) -->
  <complexType name="privilegeNameType" xdb:typeID="100"/>
  <!-- privilegeName element 
       All system and user privileges are in the substitutionGroup 
       of this element. 
    -->
  <element name="privilegeName" type="xdbacl:privilegeNameType" xdb:defaultTable="" xdb:propNumber="2007" xdb:global="true" xdb:memType="258" xdb:defaultTableSchema="XDB"/>
  <!-- all system privileges in the XDB ACL namespace -->
  <element name="read-properties" type="xdbacl:privilegeNameType" substitutionGroup="xdbacl:privilegeName" xdb:defaultTable="" xdb:propNumber="2008" xdb:global="true" xdb:memType="258" xdb:defaultTableSchema="XDB"/>
  <element name="read-contents" type="xdbacl:privilegeNameType" substitutionGroup="xdbacl:privilegeName" xdb:defaultTable="" xdb:propNumber="2009" xdb:global="true" xdb:memType="258" xdb:defaultTableSchema="XDB"/>
  <element name="read-acl" type="xdbacl:privilegeNameType" substitutionGroup="xdbacl:privilegeName" xdb:defaultTable="" xdb:propNumber="2010" xdb:global="true" xdb:memType="258" xdb:defaultTableSchema="XDB"/>
  <element name="update" type="xdbacl:privilegeNameType" substitutionGroup="xdbacl:privilegeName" xdb:defaultTable="" xdb:propNumber="2011" xdb:global="true" xdb:memType="258" xdb:defaultTableSchema="XDB"/>
  <element name="link" type="xdbacl:privilegeNameType" substitutionGroup="xdbacl:privilegeName" xdb:defaultTable="" xdb:propNumber="2012" xdb:global="true" xdb:memType="258" xdb:defaultTableSchema="XDB"/>
  <element name="unlink" type="xdbacl:privilegeNameType" substitutionGroup="xdbacl:privilegeName" xdb:defaultTable="" xdb:propNumber="2013" xdb:global="true" xdb:memType="258" xdb:defaultTableSchema="XDB"/>
  <element name="unlink-from" type="xdbacl:privilegeNameType" substitutionGroup="xdbacl:privilegeName" xdb:defaultTable="" xdb:propNumber="2014" xdb:global="true" xdb:memType="258" xdb:defaultTableSchema="XDB"/>
  <element name="write-acl-ref" type="xdbacl:privilegeNameType" substitutionGroup="xdbacl:privilegeName" xdb:defaultTable="" xdb:propNumber="2015" xdb:global="true" xdb:memType="258" xdb:defaultTableSchema="XDB"/>
  <element name="update-acl" type="xdbacl:privilegeNameType" substitutionGroup="xdbacl:privilegeName" xdb:defaultTable="" xdb:propNumber="2016" xdb:global="true" xdb:memType="258" xdb:defaultTableSchema="XDB"/>
  <element name="link-to" type="xdbacl:privilegeNameType" substitutionGroup="xdbacl:privilegeName" xdb:defaultTable="" xdb:propNumber="2017" xdb:global="true" xdb:memType="258" xdb:defaultTableSchema="XDB"/>
  <element name="resolve" type="xdbacl:privilegeNameType" substitutionGroup="xdbacl:privilegeName" xdb:defaultTable="" xdb:propNumber="2018" xdb:global="true" xdb:memType="258" xdb:defaultTableSchema="XDB"/>
  <element name="all" type="xdbacl:privilegeNameType" substitutionGroup="xdbacl:privilegeName" xdb:defaultTable="" xdb:propNumber="2019" xdb:global="true" xdb:memType="258" xdb:defaultTableSchema="XDB"/>
  <!-- privilege element -->
  <element name="privilege" xdb:defaultTable="" xdb:propNumber="2021" xdb:global="true" xdb:memType="258" xdb:defaultTableSchema="XDB">
    <complexType>
      <annotation>
        <appinfo><xdb:kidList xmlns:xdb="http://xmlns.oracle.com/xdb" sequential="true">
            <xdb:kid propNum="2020" kidNum="0"/>
          </xdb:kidList></appinfo>
      </annotation>
      <sequence>
        <any maxOccurs="unbounded" processContents="lax" xdb:propNumber="2020" xdb:SQLName="SYS_XDBANY1$" xdb:SQLType="VARCHAR2" xdb:memType="258"/>
      </sequence>
    </complexType>
  </element>
  <!-- ace element -->
  <element name="ace" xdb:defaultTable="" xdb:propNumber="2035" xdb:global="true" xdb:memType="258" xdb:defaultTableSchema="XDB">
    <complexType>
      <annotation>
        <appinfo><xdb:kidList xmlns:xdb="http://xmlns.oracle.com/xdb" sequential="true">
            <xdb:kid propNum="2026" kidNum="0"/>
            <xdb:kid propNum="2031" kidNum="1"/>
            <xdb:kid propNum="2032" kidNum="2"/>
            <xdb:kid propNum="2027" kidNum="3"/>
            <xdb:kid propNum="2029" kidNum="4"/>
            <xdb:kid propNum="2033" kidNum="5"/>
            <xdb:kid propNum="2034" kidNum="6"/>
            <xdb:kid propNum="2028" kidNum="7"/>
            <xdb:kid propNum="2022" kidNum="8"/>
            <xdb:kid propNum="2023" kidNum="9"/>
            <xdb:kid propNum="2024" kidNum="10"/>
            <xdb:kid propNum="2025" kidNum="11"/>
          </xdb:kidList></appinfo>
      </annotation>
      <sequence>
        <element name="grant" type="boolean" xdb:propNumber="2026" xdb:global="false" xdb:SQLType="boolean" xdb:memType="252" xdb:MemInline="true" xdb:SQLInline="true" xdb:JavaInline="true"/>
        <choice>
          <element name="invert" xdb:transient="generated" xdb:propNumber="2031" xdb:global="false" xdb:memType="258" xdb:MemInline="false" xdb:SQLInline="true" xdb:JavaInline="false">
            <complexType>
              <annotation>
                <appinfo><xdb:kidList xmlns:xdb="http://xmlns.oracle.com/xdb" sequential="true">
                    <xdb:kid propNum="2030" kidNum="0"/>
                  </xdb:kidList></appinfo>
              </annotation>
              <sequence>
                <element name="principal" type="string" xdb:transient="generated" xdb:propNumber="2030" xdb:global="false" xdb:SQLType="string" xdb:memType="1" xdb:MemInline="true" xdb:SQLInline="true" xdb:JavaInline="true"/>
              </sequence>
            </complexType>
          </element>
          <element name="principal" type="string" xdb:transient="generated" xdb:propNumber="2032" xdb:global="false" xdb:SQLType="string" xdb:memType="1" xdb:MemInline="true" xdb:SQLInline="true" xdb:JavaInline="true"/>
        </choice>
        <element ref="xdbacl:privilege" minOccurs="1" xdb:propNumber="2027" xdb:global="false" xdb:memType="258" xdb:MemInline="false" xdb:SQLInline="true" xdb:JavaInline="false"/>
        <!-- "any" contain all app info for an ACE e.g.reason for creation -->
        <any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" xdb:propNumber="2029" xdb:SQLName="SYS_XDBANY2$" xdb:SQLType="VARCHAR2" xdb:memType="258"/>
        <!-- HIDDEN ELEMENTS -->
        <choice minOccurs="0">
          <element name="principalID" type="hexBinary" xdb:baseProp="true" xdb:hidden="true" xdb:propNumber="2033" xdb:global="false" xdb:SQLType="binary" xdb:memType="23" xdb:MemInline="true" xdb:SQLInline="true" xdb:JavaInline="true"/>
          <element name="principalString" type="string" xdb:baseProp="true" xdb:hidden="true" xdb:propNumber="2034" xdb:global="false" xdb:SQLType="string" xdb:memType="1" xdb:MemInline="true" xdb:SQLInline="true" xdb:JavaInline="true"/>
        </choice>
        <element name="flags" type="unsignedInt" minOccurs="0" xdb:baseProp="true" xdb:hidden="true" xdb:propNumber="2028" xdb:global="false" xdb:SQLType="unsigned-int" xdb:memType="68" xdb:memByteLength="4" xdb:MemInline="true" xdb:SQLInline="true" xdb:JavaInline="true"/>
      </sequence>
      <attribute name="collection" type="boolean" xdb:transient="generated" use="optional" xdb:propNumber="2022" xdb:global="false" xdb:memType="252"/>
      <attribute name="principalFormat" xdb:transient="generated" use="optional" xdb:propNumber="2023" xdb:global="false" xdb:memType="259">
        <simpleType>
          <restriction base="string">
            <enumeration value="ShortName"/>
            <enumeration value="DistinguishedName"/>
            <enumeration value="GUID"/>
            <enumeration value="XSName"/>
            <enumeration value="ApplicationName"/>
          </restriction>
        </simpleType>
      </attribute>
      <attribute name="start_date" type="dateTime" use="optional" xdb:propNumber="2024" xdb:global="false" xdb:memType="181"/>
      <attribute name="end_date" type="dateTime" use="optional" xdb:propNumber="2025" xdb:global="false" xdb:memType="181"/>
    </complexType>
  </element>
  <!-- acl element -->
  <complexType name="inheritanceType" xdb:typeID="101">
    <annotation>
      <appinfo><xdb:kidList xmlns:xdb="http://xmlns.oracle.com/xdb" sequential="true">
          <xdb:kid propNum="2038" kidNum="0"/>
          <xdb:kid propNum="2039" kidNum="1"/>
        </xdb:kidList></appinfo>
    </annotation>
    <attribute name="type" type="string" use="required" xdb:propNumber="2038" xdb:global="false" xdb:memType="1"/>
    <attribute name="href" type="string" use="required" xdb:propNumber="2039" xdb:global="false" xdb:memType="1"/>
  </complexType>
  <complexType name="aclType" xdb:typeID="102">
    <annotation>
      <appinfo><xdb:kidList xmlns:xdb="http://xmlns.oracle.com/xdb" sequential="true">
          <xdb:kid propNum="2042" kidNum="0"/>
          <xdb:kid propNum="2043" kidNum="1"/>
          <xdb:kid propNum="2044" kidNum="2"/>
          <xdb:kid propNum="2049" kidNum="3"/>
          <xdb:kid propNum="2050" kidNum="4"/>
          <xdb:kid propNum="2045" kidNum="5"/>
          <xdb:kid propNum="2048" kidNum="6"/>
          <xdb:kid propNum="2046" kidNum="7"/>
          <xdb:kid propNum="2047" kidNum="8"/>
          <xdb:kid propNum="2040" kidNum="9"/>
          <xdb:kid propNum="2041" kidNum="10"/>
        </xdb:kidList></appinfo>
    </annotation>
    <sequence>
      <element name="schemaURL" type="string" minOccurs="0" xdb:transient="generated" xdb:propNumber="2042" xdb:global="false" xdb:SQLType="string" xdb:memType="1" xdb:MemInline="true" xdb:SQLInline="true" xdb:JavaInline="true"/>
      <element name="elementName" type="string" minOccurs="0" xdb:transient="generated" xdb:propNumber="2043" xdb:global="false" xdb:SQLType="string" xdb:memType="1" xdb:MemInline="true" xdb:SQLInline="true" xdb:JavaInline="true"/>
      <element name="security-class" type="QName" minOccurs="0" xdb:propNumber="2044" xdb:global="false" xdb:SQLType="qname" xdb:memType="260" xdb:MemInline="true" xdb:SQLInline="true" xdb:JavaInline="true"/>
      <choice minOccurs="0">
        <element name="extends-from" type="xdbacl:inheritanceType" xdb:propNumber="2049" xdb:global="false" xdb:memType="258" xdb:MemInline="false" xdb:SQLInline="true" xdb:JavaInline="false"/>
        <element name="constrained-with" type="xdbacl:inheritanceType" xdb:propNumber="2050" xdb:global="false" xdb:memType="258" xdb:MemInline="false" xdb:SQLInline="true" xdb:JavaInline="false"/>
      </choice>
      <element ref="xdbacl:ace" minOccurs="0" maxOccurs="unbounded" xdb:propNumber="2045" xdb:global="false" xdb:memType="258" xdb:MemInline="false" xdb:SQLInline="true" xdb:JavaInline="false"/>
      <!-- this "any" contains all application specific info for an ACL, 
         e.g., reason for creation  -->
      <any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="lax" xdb:propNumber="2048" xdb:SQLName="SYS_XDBANY3$" xdb:SQLType="VARCHAR2" xdb:memType="258"/>
      <!-- HIDDEN ELEMENTS -->
      <element name="schemaOID" type="hexBinary" minOccurs="0" xdb:baseProp="true" xdb:hidden="true" xdb:propNumber="2046" xdb:global="false" xdb:SQLType="binary" xdb:memType="23" xdb:MemInline="true" xdb:SQLInline="true" xdb:JavaInline="true"/>
      <element name="elementNum" type="unsignedInt" minOccurs="0" xdb:baseProp="true" xdb:hidden="true" xdb:propNumber="2047" xdb:global="false" xdb:SQLType="unsigned-int" xdb:memType="68" xdb:memByteLength="4" xdb:MemInline="true" xdb:SQLInline="true" xdb:JavaInline="true"/>
    </sequence>
    <attribute name="shared" type="boolean" default="true" xdb:propNumber="2040" xdb:global="false" xdb:memType="252"/>
    <attribute name="description" type="string" xdb:propNumber="2041" xdb:global="false" xdb:memType="1"/>
  </complexType>
  <complexType name="rule-based-acl" xdb:typeID="103">
    <annotation>
      <appinfo><xdb:kidList xmlns:xdb="http://xmlns.oracle.com/xdb">
          <xdb:kid propNum="2042" kidNum="0"/>
          <xdb:kid propNum="2043" kidNum="1"/>
          <xdb:kid propNum="2044" kidNum="2"/>
          <xdb:kid propNum="2049" kidNum="3"/>
          <xdb:kid propNum="2050" kidNum="4"/>
          <xdb:kid propNum="2045" kidNum="5"/>
          <xdb:kid propNum="2048" kidNum="6"/>
          <xdb:kid propNum="2046" kidNum="7"/>
          <xdb:kid propNum="2047" kidNum="8"/>
          <xdb:kid propNum="2040" kidNum="9"/>
          <xdb:kid propNum="2041" kidNum="10"/>
          <xdb:kid propNum="2052" kidNum="11"/>
        </xdb:kidList></appinfo>
    </annotation>
    <complexContent>
      <extension base="xdbacl:aclType">
        <sequence>
          <element name="param" minOccurs="0" maxOccurs="unbounded" xdb:propNumber="2052" xdb:global="false" xdb:memType="258" xdb:MemInline="false" xdb:SQLInline="true" xdb:JavaInline="false">
            <complexType>
              <annotation>
                <appinfo><xdb:kidList xmlns:xdb="http://xmlns.oracle.com/xdb" sequential="true">
                    <xdb:kid propNum="2051" kidNum="0"/>
                  </xdb:kidList></appinfo>
              </annotation>
              <simpleContent>
                <extension base="string">
                  <attribute name="name" type="string" use="required" xdb:propNumber="2051" xdb:global="false" xdb:memType="1"/>
                </extension>
              </simpleContent>
            </complexType>
          </element>
        </sequence>
      </extension>
    </complexContent>
  </complexType>
  <element name="acl" type="xdbacl:aclType" xdb:defaultTable="XDB$ACL" xdb:propNumber="2036" xdb:global="true" xdb:memType="258" xdb:defaultTableSchema="XDB"/>
  <element name="write-config" type="xdbacl:privilegeNameType" substitutionGroup="xdbacl:privilegeName" xdb:defaultTable="" xdb:propNumber="2037" xdb:global="true" xdb:memType="258" xdb:defaultTableSchema="XDB"/>
</schema>
