MINI MINI MANI MO
<?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