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/kugrant.xsl

<?xml version="1.0"?>
<!-- 
NAME
    kugrant.xsl
DESCRIPTION
    XSLT stylesheet for XML => DDL conversion of md$_objgrant_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
     vvirao     09/28/17 - Bug 23278760: Check wgo value to emit admin option
                           for SYSGRANT
     rapayne    12/04/13 - bug 15916457: make objgrant_t template callable.
    bwright     08/15/13 - Bug 17312600: Remove hard tabs from DP src code
    dgagne      06/16/08 - add comments around grant name
    lbarton     01/13/06 - bug 4951322: WITH HIERARCHY OPTION 
    lbarton     11/02/05 - Bug 4715313: reformat files for use with XMLSpy 
    htseng      07/24/03 - add long_name 
    htseng      08/02/02 - add grantee parse param
    htseng      07/26/02 - add more parse params
    htseng      11/08/01 - bug 2100506 - follow the object_type roule.
    lbarton     06/01/01 - remove oradb-style imports
    lbarton     10/18/00 - support DDL parsing
    gclaborn    10/30/00 - Add external imports; change name
    lbarton     07/24/00 - use uriref in import
    lbarton     03/17/00 - Add module header
 -->
<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 name="doObjGrant">
  <xsl:param name="objGrant">0</xsl:param>
  <!-- *******************************************************************
Template: doObjGrant - work template for object grants
******************************************************************** -->
  <xsl:call-template name="DoParse">
   <xsl:with-param name="Verb">GRANT</xsl:with-param>
   <xsl:with-param name="ObjectType">OBJECT_GRANT</xsl:with-param>
   <xsl:with-param name="Grantor" select="$objGrant/GRANTOR"/>
   <xsl:with-param name="Grantee" select="$objGrant/GRANTEE"/>
   <xsl:with-param name="BaseSchemaNode" select="$objGrant/BASE_OBJ/OWNER_NAME"/>
   <xsl:with-param name="BaseNameNode" select="$objGrant/BASE_OBJ/NAME"/>
   <xsl:with-param name="BaseObjectType" select="$objGrant/BASE_OBJ/TYPE"/>
  </xsl:call-template>
  <xsl:text>GRANT </xsl:text>
  <!-- The privname is either in a list, or there is only one, but both cannot
       exist in the same .xml document.   Because of this, instead of adding
       code to see which version is present, just try to print both. -->
  <xsl:for-each select="PRIVS/PRIVS_ITEM">
   <!-- if not the first item, add a comma and space before the next item -->
   <xsl:if test="position() != 1">
    <xsl:text>, </xsl:text>
   </xsl:if>
   <xsl:value-of select="PRIVNAME"/>
  </xsl:for-each>
  <xsl:value-of select="$objGrant/PRIVNAME"/>
  <xsl:if test="$objGrant/COLNAME">
   <xsl:text> ("</xsl:text>
   <xsl:value-of select="$objGrant/COLNAME"/>
   <xsl:text>")</xsl:text>
  </xsl:if>
  <xsl:text> ON </xsl:text>
  <xsl:choose>
   <xsl:when test="$objGrant/BASE_OBJ/TYPE_NUM=23">
    <xsl:text>DIRECTORY "</xsl:text>
    <xsl:value-of select="$objGrant/BASE_OBJ/NAME"/>
    <xsl:text>" </xsl:text>
   </xsl:when>
   <xsl:otherwise>
    <xsl:if test="$objGrant/BASE_OBJ/TYPE_NUM=28">
     <xsl:text>JAVA SOURCE </xsl:text>
    </xsl:if>
    <xsl:if test="$objGrant/BASE_OBJ/TYPE_NUM=30">
     <xsl:text>JAVA RESOURCE </xsl:text>
    </xsl:if>
    <xsl:choose>
     <xsl:when test="$objGrant/LONG_NAME">
      <xsl:text>"</xsl:text>
      <xsl:value-of select="$objGrant/BASE_OBJ/OWNER_NAME"/>
      <xsl:text>"."</xsl:text>
      <xsl:value-of select="$objGrant/LONG_NAME"/>
      <xsl:text>" </xsl:text>
     </xsl:when>
     <xsl:otherwise>
      <xsl:apply-templates select="$objGrant/BASE_OBJ"/>
     </xsl:otherwise>
    </xsl:choose>
   </xsl:otherwise>
  </xsl:choose>
  <xsl:text>TO </xsl:text>
  <xsl:apply-templates select="$objGrant/GRANTEE">
   <xsl:with-param name="gtype">OBJGRANT</xsl:with-param>
   <xsl:with-param name="wgo" select="$objGrant/WGO"/>
  </xsl:apply-templates>
 </xsl:template>
 <xsl:template match="OBJGRANT_T">
  <!-- *******************************************************************
Template: OBJGRANT_T - template for object grants
******************************************************************** -->
  <xsl:call-template name="doObjGrant">
   <xsl:with-param name="objGrant" select="."/>
  </xsl:call-template>
 </xsl:template>
 <xsl:template match="SYSGRANT_T">
  <!-- *******************************************************************
Template: SYSGRANT_T - template for system privilege grants
******************************************************************** -->
  <xsl:call-template name="DoParse">
   <xsl:with-param name="Verb">GRANT</xsl:with-param>
   <xsl:with-param name="ObjectType">OBJECT_GRANT</xsl:with-param>
  </xsl:call-template>
  <xsl:text>GRANT </xsl:text>
  <xsl:value-of select="PRIVNAME"/>
  <xsl:text> TO </xsl:text>
  <xsl:apply-templates select="GRANTEE">
   <xsl:with-param name="gtype">SYSGRANT</xsl:with-param>
   <xsl:with-param name="wgo" select="WGO"/>
  </xsl:apply-templates>
 </xsl:template>
 <xsl:template match="GRANTEE">
  <!-- *******************************************************************
Template: GRANTEE
Parameters:
  gtype = type of grant, either 'OBJGRANT' or 'SYSGRANT'
  wgo = WGO element
******************************************************************** -->
  <xsl:param name="gtype" select="''"/>
  <xsl:param name="wgo" select="''"/>
  <xsl:if test=".!='PUBLIC'">
   <xsl:text>"</xsl:text>
  </xsl:if>
  <xsl:value-of select="."/>
  <xsl:if test=".!='PUBLIC'">
   <xsl:text>"</xsl:text>
  </xsl:if>
  <xsl:if test="$wgo!=0">
   <xsl:choose>
    <xsl:when test="$gtype='SYSGRANT'">
     <xsl:if test="($wgo mod 2)>=1 or ($wgo mod 32)>=16"> WITH ADMIN OPTION</xsl:if>
    </xsl:when>
    <xsl:when test="$gtype='OBJGRANT'">
     <xsl:if test="($wgo mod 4)>=2"> WITH HIERARCHY OPTION</xsl:if>
     <xsl:if test="($wgo mod 2)=1"> WITH GRANT OPTION</xsl:if>
    </xsl:when>
   </xsl:choose>
  </xsl:if>
  <xsl:if test="$SQLTERMINATOR=1">
   <xsl:text>;</xsl:text>
   <!-- Terminate the SQL statement -->
  </xsl:if>
 </xsl:template>
</xsl:stylesheet>

OHA YOOOO