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

<?xml version="1.0"?>
<!--
NAME
    kusmvl.xsl
DESCRIPTION
    Convert mdapi M_VIEW_LOG_T document to MATERIALIZED_VIEW_LOG document (SXML)

MODIFIED        MM/DD/YY
    tbhukya     02/16/17 - Bug 25421533: Fast refresh for MVL
    tbhukya     02/13/17 - Bug 25414028: Partitioned MV log
    rapayne     06/15/11 - lrg 5665517: fix xmlns violation.
    rapayne     11/03/10 - bug 10263288: fix SEQUENCE collist.
    lbarton     11/28/06 - missing import
    lbarton     11/09/05 - bug 4724986: fix handling of xmlns 
    rapayne     11/03/05 - Bug 4715313: Reformat with XMLSpy
    htseng      07/15/05 - Initial version
 -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://xmlns.oracle.com/ku">
 <!-- Top level imports -->
 <xsl:import href="kusstorg.xsl"/>
 <xsl:import href="kuspar.xsl"/>
 <xsl:import href="kustbphy.xsl"/>
 <!-- Top-level parameters -->
 <xsl:param name="PHYSICAL_PROPERTIES">1</xsl:param>
 <xsl:param name="SEGMENT_ATTRIBUTES">1</xsl:param>
 <xsl:param name="STORAGE">1</xsl:param>
 <xsl:param name="TABLESPACE">1</xsl:param>
 <!-- Parameters for DDL generation -->
 <xsl:param name="PRETTY">1</xsl:param>
 <xsl:param name="SQLTERMINATOR">0</xsl:param>
 <!-- *******************************************************************
Template:  M_VIEW_LOG_T - top-level template for MATERIALIZED_VIEW_LOG.
  This template puts out
   - the opening MATERIALIZED_VIEW_LOG element
     (with xmlns and version attributes)
   - NAME elements
******************************************************************** -->
 <xsl:template match="M_VIEW_LOG_T">
  <xsl:element name="MATERIALIZED_VIEW_LOG" namespace="http://xmlns.oracle.com/ku">
   <xsl:attribute name="version">1.0</xsl:attribute>
   <xsl:element name="ON_TABLE">
    <xsl:element name="SCHEMA">
     <xsl:value-of select="MVIEWLOG/MOWNER"/>
    </xsl:element>
    <xsl:element name="NAME">
     <xsl:value-of select="MVIEWLOG/MASTER"/>
    </xsl:element>
   </xsl:element>
   <!-- segment_attributes_clause if non-partitioned -->
   <xsl:choose>
    <xsl:when test="MVIEWLOG_TAB/PART_OBJ">
     <xsl:call-template name="SegmentAttributes">
      <xsl:with-param name="ParentNode" select="MVIEWLOG_TAB/PART_OBJ/PARTOBJ"/>
      <xsl:with-param name="Partitioned">1</xsl:with-param>
      <xsl:with-param name="ObjType">TABLE</xsl:with-param>
      <xsl:with-param name="TableNode" select="MVIEWLOG_TAB"/>
     </xsl:call-template>
    </xsl:when>
    <xsl:otherwise>
     <xsl:call-template name="SegmentAttributes">
      <xsl:with-param name="ParentNode" select="MVIEWLOG_TAB"/>
      <xsl:with-param name="Partitioned">0</xsl:with-param>
      <xsl:with-param name="ObjType">TABLE</xsl:with-param>
      <xsl:with-param name="TableNode" select="MVIEWLOG_TAB"/>
     </xsl:call-template>
    </xsl:otherwise>
   </xsl:choose>
   <xsl:if test="(MVIEWLOG_TAB/FLAGS mod 16)>=8">
    <xsl:element name="CACHE"/>
   </xsl:if>
   <!-- Parallel -->
   <xsl:call-template name="ParallelClause">
    <xsl:with-param name="ParentNode" select="MVIEWLOG_TAB"/>
   </xsl:call-template>
   <!-- table partitioning -->
   <xsl:if test="MVIEWLOG_TAB/PART_OBJ">
    <xsl:call-template name="TablePartitioning">
     <xsl:with-param name="PartobjNode" select="MVIEWLOG_TAB/PART_OBJ"/>
     <xsl:with-param name="PropertyNode" select="MVIEWLOG_TAB/PROPERTY"/>
     <xsl:with-param name="ColListNode" select="MVIEWLOG_TAB/PART_OBJ/PARTCOLS"/>
     <xsl:with-param name="TabBlocksize" select="MVIEWLOG_TAB/BLOCKSIZE"/>
     <xsl:with-param name="TableNode" select="MVIEWLOG_TAB"/>
    </xsl:call-template>
   </xsl:if>
   <xsl:if test="((MVIEWLOG/FLAG mod 1024) >= 512) or
               ((MVIEWLOG/FLAG mod 4) >= 2) or
               ((MVIEWLOG/FLAG mod 2) >= 1) or
               ((MVIEWLOG/FLAG mod 8) >= 4) or
               ((MVIEWLOG/FLAG mod 2048) >= 1024)">
    <xsl:element name="RECORDS">
     <xsl:if test="(MVIEWLOG/FLAG mod 1024) >= 512">
      <xsl:element name="OBJECT_ID"/>
     </xsl:if>
     <xsl:if test="(MVIEWLOG/FLAG mod 4) >= 2">
      <xsl:element name="PRIMARY_KEY"/>
     </xsl:if>
     <xsl:if test="(MVIEWLOG/FLAG mod 2) = 1">
      <xsl:element name="ROWID"/>
     </xsl:if>
     <xsl:if test="(MVIEWLOG/FLAG mod 2048) >= 1024">
      <xsl:element name="SEQUENCE"/>
     </xsl:if>
     <!-- column_list -->
     <xsl:if test="(MVIEWLOG/FLAG mod 8) >= 4">
      <xsl:element name="COL_LIST">
       <xsl:for-each select="MVIEWLOG/FC_LIST/FC_LIST_ITEM[FLAG!=2]">
        <xsl:element name="COL_LIST_ITEM">
         <xsl:element name="NAME">
          <xsl:value-of select="COLNAME"/>
         </xsl:element>
        </xsl:element>
       </xsl:for-each>
      </xsl:element>
     </xsl:if>
    </xsl:element>
   </xsl:if>
   <xsl:if test="(MVIEWLOG/FLAG mod 32) >= 16">
    <xsl:element name="INCLUDING_NEW_VALUES"/>
   </xsl:if>
   <xsl:if test="(MVIEWLOG/FLAG mod 8388608)>=4194304">
    <xsl:element name="FAST_REFRESH"/>
   </xsl:if>
  </xsl:element>
 </xsl:template>
</xsl:stylesheet>

OHA YOOOO