MINI MINI MANI MO

Path : /opt/oracle/product/18c/dbhomeXE/rdbms/xml/xsl/
File Upload :
Current File : //opt/oracle/product/18c/dbhomeXE/rdbms/xml/xsl/kuaudit.xsl

<?xml version="1.0"?>
<!-- Copyright (c) 2001, 2017, Oracle and/or its affiliates. 
All rights reserved.-->
<!-- 
NAME
    kuaudit.xsl
DESCRIPTION
    XSLT stylesheet for XML => DDL conversion of ku$_audit_t ADTs
NOTES
    Do NOT modify this file under any circumstance. Copy the file
    if you wish to use this stylesheet with an external XML/XSL parser

MODIFIED        MM/DD/YY
    jjanosik    01/31/17 - Bug 25459227: quote role name in audit policy
    bwright     11/05/14 - Support 'audit policy by granted roles'
    bwright     08/15/13 - Bug 17312600: Remove hard tabs from DP src code
    sdavidso    10/18/11 - add audit policy types
                           (12.1 project for Simplified and Dynamic Audit
                           Configuration)
    tbhukya     09/06/10 - Bug 10091108: Add double quotes for user name
    lbarton     03/20/09 - lrg 3751805: need nl in dummy audit
    lbarton     11/10/08 - ssonawan_bug-7295457: generate null pl/sql
                           if property=1
    lbarton     11/02/05 - Bug 4715313: reformat files for use with XMLSpy 
    htseng      06/05/03 - bug 2992644 - need call DoParse for each AUDIT 
    htseng      08/02/02 - add grantee parse param
    htseng      07/25/02 - add BaseNameNode
    htseng      09/19/01 - Merged htseng_add_xsl_stylesheets
    htseng      06/26/01 - Creation 
 -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <!-- Import required scripts -->
 <xsl:import href="kucommon.xsl"/>
 <!-- Top-level parameters -->
 <xsl:param name="PRETTY">1</xsl:param>
 <xsl:param name="SQLTERMINATOR">1</xsl:param>
 <!-- params for parse -->
 <xsl:param name="PRS_DDL">0</xsl:param>
 <xsl:param name="PRS_DELIM">\{]`</xsl:param>
 <xsl:param name="PRS_VERB">0</xsl:param>
 <xsl:param name="PRS_OBJECT_TYPE">0</xsl:param>
 <xsl:param name="PRS_SCHEMA">0</xsl:param>
 <xsl:param name="PRS_NAME">0</xsl:param>
 <xsl:param name="PRS_GRANTEE">0</xsl:param>
 <xsl:param name="PRS_GRANTOR">0</xsl:param>
 <xsl:param name="PRS_BASE_OBJECT_TYPE">0</xsl:param>
 <xsl:param name="PRS_BASE_OBJECT_SCHEMA">0</xsl:param>
 <xsl:param name="PRS_BASE_OBJECT_NAME">0</xsl:param>
 <xsl:template match="AUDIT_POLICY_T">
  <!-- *******************************************************************
Template: AUDIT_POLICY_T - top-level template for audit policies.
   Generates CREATE AUDIT POLICY ddl
******************************************************************** -->
  <xsl:call-template name="DoParse">
   <xsl:with-param name="Verb">AUDIT</xsl:with-param>
   <xsl:with-param name="ObjectType">AUDIT_POLICY</xsl:with-param>
   <xsl:with-param name="NameNode" select="USER_NAME"/>
   <xsl:with-param name="Grantee" select="USER_NAME"/>
  </xsl:call-template>
  <xsl:text> CREATE AUDIT POLICY "</xsl:text>
  <xsl:value-of select="SCHEMA_OBJ/NAME"/>
  <xsl:text>" </xsl:text>
  <!--system privileges-->
  <xsl:if test="(TYPE mod 2) = 1">
   <xsl:text>PRIVILEGES </xsl:text>
   <xsl:for-each select="PRIVILEGE_OPTIONS/PRIVILEGE_OPTIONS_ITEM">
    <xsl:value-of select="NAME"/>
    <xsl:choose>
     <xsl:when test="position()!=last()">
      <xsl:text>,</xsl:text>
      <xsl:if test="$PRETTY=1">
       <xsl:text>&#xa;    </xsl:text>
      </xsl:if>
     </xsl:when>
     <xsl:otherwise>
      <xsl:text> </xsl:text>
      <xsl:if test="$PRETTY=1">
       <xsl:text>&#xa; </xsl:text>
      </xsl:if>
     </xsl:otherwise>
    </xsl:choose>
   </xsl:for-each>
  </xsl:if>
  <!--system actions-->
  <xsl:if test="SYS_ACTION_OPTIONS/SYS_ACTION_OPTIONS_ITEM or 
OBJ_ACTION_OPTIONS/OBJ_ACTION_OPTIONS_ITEM">
   <xsl:text>ACTIONS  </xsl:text>
   <xsl:if test="SYS_ACTION_OPTIONS/SYS_ACTION_OPTIONS_ITEM ">
    <xsl:for-each select="SYS_ACTION_OPTIONS/SYS_ACTION_OPTIONS_ITEM">
     <xsl:value-of select="NAME"/>
     <xsl:choose>
      <xsl:when test="position()!=last() or 
../../OBJ_ACTION_OPTIONS/OBJ_ACTION_OPTIONS_ITEM">
       <xsl:text>,</xsl:text>
       <xsl:if test="$PRETTY=1"/>
      </xsl:when>
      <xsl:otherwise>
       <xsl:text> </xsl:text>
       <xsl:if test="$PRETTY=1">
        <xsl:text>&#xa;  </xsl:text>
       </xsl:if>
      </xsl:otherwise>
     </xsl:choose>
    </xsl:for-each>
   </xsl:if>
   <xsl:if test="OBJ_ACTION_OPTIONS/OBJ_ACTION_OPTIONS_ITEM">
    <xsl:for-each select="OBJ_ACTION_OPTIONS/OBJ_ACTION_OPTIONS_ITEM">
     <xsl:value-of select="NAME"/>
     <xsl:text> ON </xsl:text>
     <xsl:apply-templates select="AUDIT_OBJ"/>
     <xsl:choose>
      <xsl:when test="position()!=last()">
       <xsl:text>,</xsl:text>
       <xsl:if test="$PRETTY=1">
        <xsl:text>&#xa;</xsl:text>
       </xsl:if>
      </xsl:when>
      <xsl:otherwise>
       <xsl:text> </xsl:text>
       <xsl:if test="$PRETTY=1">
        <xsl:text>&#xa;  </xsl:text>
       </xsl:if>
      </xsl:otherwise>
     </xsl:choose>
    </xsl:for-each>
   </xsl:if>
  </xsl:if>
  <!--XS actions-->
  <xsl:if test="XS_ACTION_OPTIONS/XS_ACTION_OPTIONS_ITEM">
   <xsl:text>ACTIONS COMPONENT=XS </xsl:text>
   <xsl:for-each select="XS_ACTION_OPTIONS/XS_ACTION_OPTIONS_ITEM">
    <xsl:value-of select="NAME"/>
    <xsl:choose>
     <xsl:when test="position()!=last()">
      <xsl:text>,</xsl:text>
      <xsl:if test="$PRETTY=1">
       <xsl:text>&#xa;    </xsl:text>
      </xsl:if>
     </xsl:when>
     <xsl:otherwise>
      <xsl:text> </xsl:text>
      <xsl:if test="$PRETTY=1">
       <xsl:text>&#xa;  </xsl:text>
      </xsl:if>
     </xsl:otherwise>
    </xsl:choose>
   </xsl:for-each>
  </xsl:if>
  <!--OLS actions-->
  <xsl:if test="OLS_ACTION_OPTIONS/OLS_ACTION_OPTIONS_ITEM">
   <xsl:text>ACTIONS COMPONENT=OLS </xsl:text>
   <xsl:for-each select="OLS_ACTION_OPTIONS/OLS_ACTION_OPTIONS_ITEM">
    <xsl:value-of select="NAME"/>
    <xsl:choose>
     <xsl:when test="position()!=last()">
      <xsl:text>,</xsl:text>
      <xsl:if test="$PRETTY=1">
       <xsl:text>&#xa;    </xsl:text>
      </xsl:if>
     </xsl:when>
     <xsl:otherwise>
      <xsl:text> </xsl:text>
      <xsl:if test="$PRETTY=1">
       <xsl:text>&#xa;  </xsl:text>
      </xsl:if>
     </xsl:otherwise>
    </xsl:choose>
   </xsl:for-each>
  </xsl:if>
  <!--Role audits-->
  <xsl:if test="ROLE_OPTIONS/ROLE_OPTIONS_ITEM">
   <xsl:text>ROLES </xsl:text>
   <xsl:for-each select="ROLE_OPTIONS/ROLE_OPTIONS_ITEM">
    <xsl:call-template name="QuoteObject">
     <xsl:with-param name="Object" select="ROLE_NAME"/>
    </xsl:call-template>
    <xsl:choose>
     <xsl:when test="position()!=last()">
      <xsl:text>,</xsl:text>
      <xsl:if test="$PRETTY=1">
       <xsl:text>&#xa;    </xsl:text>
      </xsl:if>
     </xsl:when>
     <xsl:otherwise>
      <xsl:text> </xsl:text>
      <xsl:if test="$PRETTY=1">
       <xsl:text>&#xa;  </xsl:text>
      </xsl:if>
     </xsl:otherwise>
    </xsl:choose>
   </xsl:for-each>
  </xsl:if>
  <xsl:if test="CONDITION">
   <xsl:text>WHEN '</xsl:text>
   <xsl:call-template name="EnQuote">
    <xsl:with-param name="String" select="CONDITION"/>
   </xsl:call-template>
   <xsl:text>' </xsl:text>
   <xsl:if test="CONDITION_EVAL!=0">
    <xsl:text>EVALUATE PER </xsl:text>
    <xsl:choose>
     <xsl:when test="CONDITION_EVAL=1">
      <xsl:text> STATEMENT </xsl:text>
     </xsl:when>
     <xsl:when test="CONDITION_EVAL=2">
      <xsl:text>SESSION </xsl:text>
     </xsl:when>
     <xsl:when test="CONDITION_EVAL=3">
      <xsl:text>INSTANCE  </xsl:text>
     </xsl:when>
    </xsl:choose>
   </xsl:if>
  </xsl:if>
  <xsl:if test="HAND_PRCEDURE">
   <xsl:text>HANDLER "</xsl:text>
   <xsl:if test="HAND_SCHEMA">
    <xsl:value-of select="HAND_SCHEMA"/>
    <xsl:text>"."</xsl:text>
   </xsl:if>
   <xsl:value-of select="HAND_PROCEDURE"/>
   <xsl:text>" </xsl:text>
  </xsl:if>
  <xsl:if test="$SQLTERMINATOR=1">
   <xsl:text>;</xsl:text>
   <!-- Terminate the SQL statement -->
  </xsl:if>
  <xsl:if test="$PRETTY=1">
   <xsl:text>&#xa;</xsl:text>
  </xsl:if>
 </xsl:template>
 <xsl:template match="AUDIT_POLICY_ENABLE_T">
  <!-- *******************************************************************
Template: AUDIT_POLICY_ENABLE_T - top-level template for audit policy enables.
   Generates AUDIT POLICY ddl
******************************************************************** -->
  <xsl:call-template name="DoParse">
   <xsl:with-param name="Verb">AUDIT</xsl:with-param>
   <xsl:with-param name="ObjectType">AUDIT_POLICY_ENABLE</xsl:with-param>
   <xsl:with-param name="NameNode" select="USER_NAME"/>
   <xsl:with-param name="Grantee" select="USER_NAME"/>
  </xsl:call-template>
  <xsl:text>AUDIT POLICY "</xsl:text>
  <xsl:value-of select="SCHEMA_OBJ/NAME"/>
  <xsl:text>" </xsl:text>
  <!-- BY <userlist> clause-->
  <xsl:if test="USER">
   <xsl:choose>
    <xsl:when test="HOW_OPT=1">
     <xsl:text>BY </xsl:text>
    </xsl:when>
    <xsl:when test="HOW_OPT=2">
     <xsl:text>EXCEPT </xsl:text>
    </xsl:when>
    <xsl:when test="HOW_OPT=3">
     <xsl:text>BY USERS WITH GRANTED ROLES </xsl:text>
    </xsl:when>
   </xsl:choose>
   <xsl:call-template name="QuoteObject">
    <xsl:with-param name="Object" select="USER"/>
   </xsl:call-template>
   <xsl:text> </xsl:text>
  </xsl:if>
  <xsl:choose>
   <xsl:when test="WHEN_OPT=1">
    <!-- 1 - on success-->
    <xsl:text>WHENEVER SUCCESSFUL </xsl:text>
   </xsl:when>
   <xsl:when test="WHEN_OPT=2">
    <!-- 2 - on not success-->
    <xsl:text>WHENEVER NOT SUCCESSFUL </xsl:text>
   </xsl:when>
  </xsl:choose>
  <xsl:if test="$SQLTERMINATOR=1">
   <xsl:text>;</xsl:text>
   <!-- Terminate the SQL statement -->
  </xsl:if>
  <xsl:if test="$PRETTY=1">
   <xsl:text>&#xa;</xsl:text>
  </xsl:if>
 </xsl:template>
 <xsl:template match="AUDIT_CONTEXT_T">
  <!-- *******************************************************************
Template: AUDIT_CONTEXT_T - top-level template for audit contexts.
   Generates AUDIT CONTEXT ddl
******************************************************************** -->
  <xsl:call-template name="DoParse">
   <xsl:with-param name="Verb">AUDIT</xsl:with-param>
   <xsl:with-param name="ObjectType">AUDIT_CONTEXT</xsl:with-param>
   <xsl:with-param name="NameNode" select="USER"/>
  </xsl:call-template>
  <xsl:text>AUDIT CONTEXT </xsl:text>
  <xsl:if test="AUD_CONTEXT/AUD_CONTEXT_ITEM">
   <xsl:for-each select="AUD_CONTEXT/AUD_CONTEXT_ITEM">
    <xsl:text>NAMESPACE </xsl:text>
    <!--'context namespace' name-->
    <xsl:call-template name="QuoteObject">
     <xsl:with-param name="Object" select="NAMESPACE"/>
    </xsl:call-template>
    <xsl:text> </xsl:text>
    <xsl:if test="AUD_ATTR/AUD_ATTR_ITEM">
     <xsl:text>ATTRIBUTES  </xsl:text>
     <xsl:for-each select="AUD_ATTR/AUD_ATTR_ITEM">
      <!--atribute name-->
      <xsl:call-template name="QuoteObject">
       <xsl:with-param name="Object" select="."/>
      </xsl:call-template>
      <xsl:choose>
       <xsl:when test="position()!=last()">
        <xsl:text>,</xsl:text>
        <xsl:if test="$PRETTY=1">
         <xsl:text>&#xa;    </xsl:text>
        </xsl:if>
       </xsl:when>
       <xsl:otherwise>
        <xsl:text> </xsl:text>
       </xsl:otherwise>
      </xsl:choose>
     </xsl:for-each>
    </xsl:if>
    <xsl:choose>
     <xsl:when test="position()!=last()">
      <xsl:text> </xsl:text>
      <xsl:if test="$PRETTY=1">
       <xsl:text>&#xa;    </xsl:text>
      </xsl:if>
     </xsl:when>
    </xsl:choose>
   </xsl:for-each>
  </xsl:if>
  <xsl:if test="USER">
   <xsl:if test="$PRETTY=1">
    <xsl:text>&#xa;  </xsl:text>
   </xsl:if>
   <xsl:text> BY </xsl:text>
   <xsl:call-template name="QuoteObject">
    <xsl:with-param name="Object" select="USER"/>
   </xsl:call-template>
   <xsl:text> </xsl:text>
  </xsl:if>
  <xsl:if test="$SQLTERMINATOR=1">
   <xsl:text>;</xsl:text>
   <!-- Terminate the SQL statement -->
  </xsl:if>
  <xsl:if test="$PRETTY=1">
   <xsl:text>&#xa;</xsl:text>
  </xsl:if>
 </xsl:template>
 <xsl:template match="AUDIT_T">
  <!-- *******************************************************************
Template: AUDIT_T - top-level template for audit.
******************************************************************** -->
  <xsl:call-template name="DoParse">
   <xsl:with-param name="Verb">AUDIT</xsl:with-param>
   <xsl:with-param name="ObjectType">AUDIT</xsl:with-param>
   <xsl:with-param name="NameNode" select="USER_NAME"/>
   <xsl:with-param name="Grantee" select="USER_NAME"/>
   <xsl:with-param name="BaseNameNode" select="AUDIT_OPTION"/>
  </xsl:call-template>
  <xsl:choose>
   <xsl:when test="PROPERTY=1">
    <!-- "Property=1 means the audit option (or system privilege) cannot
        be audited using regular AUDIT / NO AUDIT sql statements.
        It has to be audited using other means,
        like dedicated pl/sql api for instance."
        lrg 3751805: Replace 'Rem' with double-dash -->
    <xsl:text>-- 
-- </xsl:text>
    <xsl:value-of select="AUDIT_OPTION"/>
    <xsl:text>
--
BEGIN  NULL; END;</xsl:text>
    <xsl:if test="$SQLTERMINATOR=1">
     <xsl:text>
/</xsl:text>
    </xsl:if>
   </xsl:when>
   <xsl:otherwise>
    <xsl:if test="SUCCESS!=0">
     <xsl:text> AUDIT </xsl:text>
     <xsl:value-of select="AUDIT_OPTION"/>
     <xsl:if test="USER_NUM!=1">
      <xsl:text> BY "</xsl:text>
      <xsl:value-of select="USER_NAME"/>
      <xsl:text>"</xsl:text>
     </xsl:if>
     <xsl:if test="SUCCESS=1">
      <xsl:text> BY SESSION</xsl:text>
     </xsl:if>
     <xsl:if test="SUCCESS=2">
      <xsl:text> BY ACCESS</xsl:text>
     </xsl:if>
     <xsl:if test="SUCCESS!=FAILURE">
      <xsl:text> WHENEVER SUCCESSFUL </xsl:text>
     </xsl:if>
     <xsl:if test="$SQLTERMINATOR=1">
      <xsl:text>;</xsl:text>
      <!-- Terminate the SQL statement -->
     </xsl:if>
     <xsl:if test="$PRETTY=1">
      <xsl:text>&#xa;</xsl:text>
     </xsl:if>
    </xsl:if>
    <xsl:if test="FAILURE!=0 and SUCCESS!=FAILURE">
     <xsl:text> AUDIT </xsl:text>
     <xsl:value-of select="AUDIT_OPTION"/>
     <xsl:if test="USER_NUM!=1">
      <xsl:text> BY "</xsl:text>
      <xsl:value-of select="USER_NAME"/>
      <xsl:text>"</xsl:text>
     </xsl:if>
     <xsl:if test="FAILURE=1">
      <xsl:text> BY SESSION  WHENEVER NOT SUCCESSFUL </xsl:text>
     </xsl:if>
     <xsl:if test="FAILURE=2">
      <xsl:text> BY ACCESS  WHENEVER NOT SUCCESSFUL </xsl:text>
     </xsl:if>
     <xsl:if test="$SQLTERMINATOR=1">
      <xsl:text>;</xsl:text>
      <!-- Terminate the SQL statement -->
     </xsl:if>
     <xsl:if test="$PRETTY=1">
      <xsl:text>&#xa;</xsl:text>
     </xsl:if>
    </xsl:if>
   </xsl:otherwise>
  </xsl:choose>
 </xsl:template>
</xsl:stylesheet>

OHA YOOOO