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

<?xml version="1.0"?>
<!-- 
 Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. 
NAME
    kusclzm.xsl
DESCRIPTION
    XSLT stylesheet for XML => SXML conversion of CLustering and ZoneMap
    clauses of tables
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
     lbarton     03/01/12 - 36954_dpump_tabcluster_zonemap
 -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <!-- Top level imports -->
 <xsl:import href="kuscomm.xsl"/>
 <!-- Templates -->
 <xsl:template match="CLST">
  <!-- *******************************************************************
Template: CLST - clustering info
******************************************************************** -->
  <xsl:element name="CLUSTERING">
   <xsl:if test="CLSTJOIN/CLSTJOIN_ITEM">
    <xsl:apply-templates select="CLSTJOIN"/>
   </xsl:if>
   <xsl:call-template name="ClusteringOrder"/>
   <xsl:if test="(FLAGS mod 2)>=1">
    <xsl:element name="ON_LOAD"/>
   </xsl:if>
   <xsl:if test="(FLAGS mod 4)>=2">
    <xsl:element name="ON_DATA_MOVEMENT"/>
   </xsl:if>
   <xsl:call-template name="DoZonemap"/>
  </xsl:element>
 </xsl:template>
 <xsl:template match="CLSTJOIN">
  <!-- *******************************************************************
Template: CLSTJOIN - clustering on hierarchies
******************************************************************** -->
  <xsl:element name="JOIN_CLAUSE_LIST">
   <xsl:for-each select="CLSTJOIN_ITEM">
    <xsl:element name="JOIN_CLAUSE">
     <xsl:element name="SCHEMA">
      <xsl:value-of select="TAB2/OWNER_NAME"/>
     </xsl:element>
     <xsl:element name="NAME">
      <xsl:value-of select="TAB2/NAME"/>
     </xsl:element>
     <xsl:element name="JOIN_LIST">
      <xsl:element name="JOIN_LIST_ITEM">
       <xsl:element name="SCHEMA">
        <xsl:value-of select="TAB1/OWNER_NAME"/>
       </xsl:element>
       <xsl:element name="NAME">
        <xsl:value-of select="TAB1/NAME"/>
       </xsl:element>
       <xsl:element name="COL">
        <xsl:value-of select="TAB1COL/NAME"/>
       </xsl:element>
      </xsl:element>
      <xsl:element name="JOIN_LIST_ITEM">
       <xsl:element name="SCHEMA">
        <xsl:value-of select="TAB2/OWNER_NAME"/>
       </xsl:element>
       <xsl:element name="NAME">
        <xsl:value-of select="TAB2/NAME"/>
       </xsl:element>
       <xsl:element name="COL">
        <xsl:value-of select="TAB2COL/NAME"/>
       </xsl:element>
      </xsl:element>
     </xsl:element>
    </xsl:element>
   </xsl:for-each>
  </xsl:element>
 </xsl:template>
 <xsl:template name="ClusteringOrder">
  <!-- *******************************************************************
Template: ClusteringOrder
******************************************************************** -->
  <xsl:element name="ORDER">
   <xsl:if test="CLSTFUNC=1">
    <xsl:element name="INTERLEAVED"/>
   </xsl:if>
   <xsl:element name="COLUMN_GROUPS">
    <xsl:apply-templates select="CLSTCOLS"/>
   </xsl:element>
  </xsl:element>
 </xsl:template>
 <xsl:template match="CLSTCOLS">
  <!-- *******************************************************************
Template: CLSTCOLS - clustering columns
******************************************************************** -->
  <xsl:variable name="MaxGroupid" select="CLSTCOLS_ITEM[position()=last()]/GROUPID"/>
  <xsl:variable name="ThereAreGroups" select="$MaxGroupid != 0 and count(CLSTCOLS_ITEM)!=$MaxGroupid"/>
  <xsl:choose>
   <xsl:when test="$ThereAreGroups">
    <xsl:call-template name="DoGroup">
     <xsl:with-param name="Groupid" select="CLSTCOLS_ITEM[position()=1]/GROUPID"/>
     <xsl:with-param name="MaxGroupid" select="$MaxGroupid"/>
    </xsl:call-template>
   </xsl:when>
   <xsl:otherwise>
    <xsl:element name="COLUMN_GROUP">
     <xsl:element name="COL_LIST">
      <xsl:for-each select="CLSTCOLS_ITEM">
       <xsl:element name="COL_LIST_ITEM">
        <xsl:apply-templates select="SCHEMA_OBJ"/>
        <xsl:element name="COL">
         <xsl:value-of select="NAME"/>
        </xsl:element>
       </xsl:element>
      </xsl:for-each>
     </xsl:element>
    </xsl:element>
   </xsl:otherwise>
  </xsl:choose>
 </xsl:template>
 <xsl:template name="DoGroup">
  <xsl:param name="Groupid">1</xsl:param>
  <xsl:param name="MaxGroupid">0</xsl:param>
  <!-- *******************************************************************
Template: DoGroup: recursive template to output a column group
******************************************************************** -->
  <xsl:if test="$MaxGroupid >= $Groupid">
   <xsl:element name="COLUMN_GROUP">
    <xsl:element name="COL_LIST">
     <xsl:for-each select="CLSTCOLS_ITEM[GROUPID=$Groupid]">
      <xsl:element name="COL_LIST_ITEM">
       <xsl:apply-templates select="SCHEMA_OBJ"/>
       <xsl:element name="COL">
        <xsl:value-of select="NAME"/>
       </xsl:element>
      </xsl:element>
     </xsl:for-each>
    </xsl:element>
   </xsl:element>
   <xsl:call-template name="DoGroup">
    <xsl:with-param name="Groupid" select="$Groupid+1"/>
    <xsl:with-param name="MaxGroupid" select="$MaxGroupid"/>
   </xsl:call-template>
  </xsl:if>
 </xsl:template>
 <xsl:template name="DoZonemap">
  <!-- *******************************************************************
Template: DoZonemap 
******************************************************************** -->
  <xsl:if test="ZONEMAP and ZONEMAP/ZMNAME">
   <xsl:element name="ZONEMAP">
    <xsl:value-of select="ZONEMAP/ZMNAME"/>
   </xsl:element>
  </xsl:if>
 </xsl:template>
</xsl:stylesheet>

OHA YOOOO