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

<?xml version="1.0"?>
<!--
 Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
NAME
    kustbls.xsl
DESCRIPTION
    Convert mdapi TABLESPACE_T document to TABLESPACE document (SXML)

MODIFIED        MM/DD/YY
    tbhukya     05/26/17 - Bug 26075370:lost write protection in undo tablespace
    jjanosik    05/05/17 - Bug 25239237: handle suspend lost write protection
    jjanosik    03/20/17 - Bug 25238495: fix encryption check
    tbhukya     02/03/17 - Bug 25468408: Double quote tablespace group name
    tbhukya     01/13/17 - Bug 25372491: encryption for tablespace converted
                           from offline to online
    drosash    05/12/16 - Bug 23245222: change RIM for LEAF
    tbhukya    12/24/15 - RTI 18868579: Use CellMemory
    tbhukya    11/10/15 - Bug 21747321: Add element TFSTATUS
    tbhukya    09/22/15 - Bug 21816026: Offline shadow, undo tablespace
    tbhukya    09/08/15 - Bug 21769074: Support encryption with temp,
                          undo tablespaces
    tbhukya    08/04/15 - Rti 17738685: Use FLAGS2 for lost write protection
    rapayne    06/02/15 - Bug 21147617: extended inMemory DISTRIBUTE support
                                       to include FOR SERVICE attribute.
    tbhukya    05/11/15 - Bug 20980538: Add LOST_WRITE_PROTECTION element
    rapayne    02/20/15 - local temporary tblsp support.
    rapayne    02/20/14 - bug 18155007: add INMEMORY support.
    rapayne    06/15/11 - lrg 5665517: fix xmlns violation.
    rapayne    10/24/09 - bug 8714709: add READ_ONLY and ENCRYPT nodes if applicable.
    lbarton    07/10/09 - bug 8494344: archive compression
    lbarton    01/17/08 - Bug 6724820: table compression
    lbarton    11/29/06 - fix IS_OMF test
    lbarton    02/20/06 - bug 4752442: BIGFILE 
    htseng     24/10/05 - fix MINIMUM_EXTENT 
    sdavidso   08/29/05 - handle OMF datafiles in tablespaces
                          remove non-functional REUSE handling
    htseng     25/01/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="kuscommc.xsl"/>
 <!-- Top-level parameters -->
 <xsl:param name="SEGMENT_ATTRIBUTES">1</xsl:param>
 <xsl:param name="STORAGE">1</xsl:param>
 <xsl:param name="VERSION">9999999999</xsl:param>
 <!-- *******************************************************************
Template: TABLESPACE_T - top-level template for TABLESPACE.
  This template puts out
   - the opening TABLESPACE element (with xmlns and version attributes)
   - optional BIGFILE element
   - TYPE element
   - NAME element
   - datafile list
  then calls one of
   - DoUndoTS
   - DoPermanentTS
   - DoTemporaryTS
******************************************************************** -->
 <xsl:template match="TABLESPACE_T">
  <xsl:element name="TABLESPACE" namespace="http://xmlns.oracle.com/ku">
   <xsl:attribute name="version">1.0</xsl:attribute>
   <xsl:if test="(FLAGS mod 512)>=256">
    <xsl:element name="BIGFILE"/>
   </xsl:if>
   <xsl:variable name="BigFile" select="(FLAGS mod 512)>=256"/>
   <xsl:variable name="LWProtect" select="(FLAGS2 mod 2097152) >= 1048576"/>
   <xsl:choose>
    <xsl:when test="CONTENTS = 0">
     <xsl:choose>
      <xsl:when test="(FLAGS mod 32) >= 16">
       <xsl:element name="TYPE">UNDO</xsl:element>
       <xsl:call-template name="TSName"/>
       <xsl:call-template name="DatafileList">
        <xsl:with-param name="BlkSize" select="BLOCKSIZE"/>
       </xsl:call-template>
       <xsl:call-template name="DoUndoTS">
        <xsl:with-param name="BlkSize" select="BLOCKSIZE"/>
       </xsl:call-template>
      </xsl:when>
      <xsl:otherwise>
       <xsl:element name="TYPE">PERMANENT</xsl:element>
       <xsl:call-template name="TSName"/>
       <xsl:call-template name="DatafileList">
        <xsl:with-param name="BlkSize" select="BLOCKSIZE"/>
        <xsl:with-param name="BigFile" select="$BigFile"/>
       </xsl:call-template>
       <xsl:choose>
        <!-- Generate lost write protection for a bigfile tablespace-->
        <xsl:when test="$BigFile=1 and $LWProtect=1">
         <xsl:if test="STATUS = 2">
          <xsl:element name="OFFLINE"/>
         </xsl:if>
         <xsl:element name="LOST_WRITE_PROTECTION"/>
        </xsl:when>
        <xsl:otherwise>
         <xsl:call-template name="DoPermanentTS">
          <xsl:with-param name="BlkSize" select="BLOCKSIZE"/>
         </xsl:call-template>
        </xsl:otherwise>
       </xsl:choose>
      </xsl:otherwise>
     </xsl:choose>
    </xsl:when>
    <xsl:otherwise>
     <xsl:element name="TYPE">TEMPORARY</xsl:element>
     <!-- LOCAL TEMPORARY tablespace flags are defined in ktt3.h -->
     <!-- Define a quick flag to designate Local Temp Tblsp type if
        applicable:
        0 - not a local temp tbsp
        1 - FOR ALL
        2 - FOR LEAF
-->
     <xsl:variable name="LTT_type">
      <xsl:choose>
       <xsl:when test="FLAGS2 and
                              ((FLAGS2 mod (4194304*2))>=4194304)">1</xsl:when>
       <xsl:when test="FLAGS2 and
                               ((FLAGS2 mod (32768*2))>=32768)">2</xsl:when>
       <xsl:otherwise>0</xsl:otherwise>
      </xsl:choose>
     </xsl:variable>
     <xsl:if test="$VERSION>=1202000000 and FLAGS2 and
                 (FLAGS2 mod  65536)>=32768">
      <xsl:element name="LOCAL">
       <xsl:choose>
        <xsl:when test="$LTT_type=1">ALL</xsl:when>
        <xsl:when test="$LTT_type=2">LEAF</xsl:when>
       </xsl:choose>
      </xsl:element>
     </xsl:if>
     <xsl:call-template name="TSName"/>
     <xsl:if test="$LTT_type !=2">
      <xsl:call-template name="DatafileList">
       <xsl:with-param name="BlkSize" select="BLOCKSIZE"/>
       <xsl:with-param name="BigFile" select="$BigFile"/>
      </xsl:call-template>
     </xsl:if>
     <xsl:call-template name="DoTemporaryTS">
      <xsl:with-param name="BlkSize" select="BLOCKSIZE"/>
     </xsl:call-template>
    </xsl:otherwise>
   </xsl:choose>
  </xsl:element>
 </xsl:template>
 <!-- *******************************************************************
Template: TSName - emit tablespace name
Current node: TABLESPACE_T
******************************************************************** -->
 <xsl:template name="TSName">
  <xsl:element name="NAME">
   <xsl:value-of select="NAME"/>
  </xsl:element>
 </xsl:template>
 <!-- *******************************************************************
Template: DatafileList
Current node: TABLESPACE_T
Parameters:
 BlkSize - value of BLOCKSIZE
******************************************************************** -->
 <xsl:template name="DatafileList">
  <xsl:param name="BlkSize">0</xsl:param>
  <xsl:param name="BigFile">0</xsl:param>
  <xsl:element name="DATAFILE_LIST">
   <xsl:for-each select="FILESPEC/FILESPEC_ITEM">
    <xsl:element name="DATAFILE_LIST_ITEM">
     <xsl:call-template name="DoDataFile">
      <xsl:with-param name="BlkSize" select="$BlkSize"/>
      <xsl:with-param name="BigFile" select="$BigFile"/>
     </xsl:call-template>
    </xsl:element>
   </xsl:for-each>
  </xsl:element>
 </xsl:template>
 <!-- *******************************************************************
Template: DoPermanentTS
Current node: 
  This template puts out
  - MINIMUM_EXTENT
  - BLOCKSIZE
  - FORCE_LOGGING
  - DEFAULT table_compression storage
  - OFFLINE
  - extent_management_clause
  - segment_management_clause
  - FLASHBACK_OFF
Parameters:
 BlkSize - value of BLOCKSIZE
******************************************************************** -->
 <xsl:template name="DoPermanentTS">
  <xsl:param name="BlkSize">0</xsl:param>
  <xsl:if test="(FLAGS mod 4) = 0  and DFLMINLEN !=0">
   <xsl:element name="MINIMUM_EXTENT">
    <xsl:value-of select="DFLMINLEN * $BlkSize"/>
   </xsl:element>
  </xsl:if>
  <xsl:element name="BLOCKSIZE">
   <xsl:value-of select="$BlkSize"/>
  </xsl:element>
  <xsl:element name="LOGGING">
   <xsl:choose>
    <xsl:when test="(DFLOGGING mod 2) = 0">
     <xsl:text>N</xsl:text>
    </xsl:when>
    <xsl:otherwise>
     <xsl:text>Y</xsl:text>
    </xsl:otherwise>
   </xsl:choose>
  </xsl:element>
  <xsl:if test="(DFLOGGING mod 4) >= 2">
   <xsl:element name="FORCE_LOGGING"/>
  </xsl:if>
  <xsl:element name="DEFAULT">
   <xsl:call-template name="DoTSCompress">
    <xsl:with-param name="Compress" select="FLAGS"/>
    <xsl:with-param name="Compress2" select="FLAGS2"/>
   </xsl:call-template>
   <xsl:if test="$VERSION>=1202000000">
    <xsl:call-template name="DoCellMemory">
     <xsl:with-param name="CellMemory" select="FLAGS2"/>
    </xsl:call-template>   
   </xsl:if>
   <xsl:if test="(FLAGS mod 4) = 0">
    <!-- STORAGE clause not valid for user-managed tablespace -->
    <xsl:call-template name="StorageClause">
     <xsl:with-param name="StorageNode" select="."/>
     <xsl:with-param name="BlkSize" select="$BlkSize"/>
    </xsl:call-template>
   </xsl:if>
   <!-- inmemory columnar - compress, priority, duplicate, distribute flags
   ts$.flags in rdbms/src/server/space/if/ktt3.h
#define KTT_IMC_ENABLED        ((ub8)0x1 00000000)      /* IMC enabled or not */
#define KTT_IMC_MIRRORMAP      ((ub8)0x2 00000000)       /* IMC mirror or map */
#define KTT_IMC_LEVEL1         ((ub8)0x4 00000000)   /* IMC comp level flag 1 */
#define KTT_IMC_PRELOAD        ((ub8)0x8 00000000) /* IMC ondemand or preload */
#define KTT_IMC_MAPBY1        ((ub8)0x10 00000000)      /* IMC map by flag 1 */
#define KTT_IMC_MAPBY2        ((ub8)0x20 00000000)      /* IMC map by flag 2 */
#define KTT_IMC_LEVEL2        ((ub8)0x40 00000000)  /* IMC comp level flag 2 */
#define KTT_IMC_LEVEL3        ((ub8)0x80 00000000)  /* IMC comp level flag 3 */
#define KTT_IMC_LEVEL4       ((ub8)0x100 00000000)  /* IMC comp level flag 4 */
#define KTT_IMC_NOTENABLED   ((ub8)0x200 00000000) /* IMC explicitly disabled*/
#define KTT_IMC_DUPLICATE1   ((ub8)0x400 00000000)          /* IMC duplicate */
#define KTT_IMC_DUPLICATE2   ((ub8)0x800 00000000)          /* IMC duplicate */
#define KTT_IMC_PL_LOW      ((ub8)0x1000 00000000)         /* PriLevel:LOW */
#define KTT_IMC_PL_MEDIUM   ((ub8)0x2000 00000000)         /* PriLevel:MED */
#define KTT_IMC_PL_HIGH     ((ub8)0x3000 00000000)        /* PriLevel:HIGH */
#define KTT_IMC_PL_CRITICAL ((ub8)0x4000 00000000)    /* PriLevel:CRITICAL */-->
   <xsl:variable name="IMCsegflag">
    <xsl:choose>
     <xsl:when test="$VERSION>=1202000000 and FLAGS2">
      <xsl:value-of select="FLAGS2"/>
     </xsl:when>
     <xsl:otherwise>
      <xsl:value-of select="floor(FLAGS div 4294967296)"/>
     </xsl:otherwise>
    </xsl:choose>
   </xsl:variable>
   <xsl:variable name="Priority" select="floor($IMCsegflag div 4096) mod 8"/>
   <xsl:variable name="Enabled" select="($IMCsegflag) mod 2"/>
   <xsl:variable name="MirrorMap" select="floor($IMCsegflag div 2) mod 2"/>
   <xsl:variable name="Level1" select="floor($IMCsegflag div 4) mod 2"/>
   <xsl:variable name="Preload" select="floor($IMCsegflag div 8) mod 2"/>
   <xsl:variable name="MapBy12" select="floor($IMCsegflag div 16) mod 4"/>
   <xsl:variable name="Level234" select="floor($IMCsegflag div 64) mod 8"/>
   <xsl:variable name="Disabled" select="floor($IMCsegflag div 512) mod 2"/>
   <xsl:call-template name="xDoInMemory">
    <xsl:with-param name="InMemory">
     <xsl:choose>
      <xsl:when test="$Enabled = 1">
       <xsl:text>1</xsl:text>
      </xsl:when>
      <xsl:when test="$Disabled = 1">
       <xsl:text>2</xsl:text>
      </xsl:when>
      <xsl:otherwise>
       <xsl:text>0</xsl:text>
      </xsl:otherwise>
     </xsl:choose>
    </xsl:with-param>
    <xsl:with-param name="Priority">
     <xsl:choose>
      <xsl:when test="$Preload=1">
       <xsl:choose>
        <xsl:when test="$Priority=0">
         <xsl:text>0</xsl:text>
        </xsl:when>
        <xsl:when test="$Priority=1">
         <xsl:text>1</xsl:text>
        </xsl:when>
        <xsl:when test="$Priority=2">
         <xsl:text>2</xsl:text>
        </xsl:when>
        <xsl:when test="$Priority=3">
         <xsl:text>4</xsl:text>
        </xsl:when>
        <xsl:when test="$Priority=4">
         <xsl:text>6</xsl:text>
        </xsl:when>
        <xsl:otherwise>
         <xsl:text>5</xsl:text>
        </xsl:otherwise>
       </xsl:choose>
      </xsl:when>
      <xsl:otherwise>
       <xsl:text>0</xsl:text>
      </xsl:otherwise>
     </xsl:choose>
    </xsl:with-param>
    <xsl:with-param name="Compression" select="($Level234*2)+$Level1"/>
    <xsl:with-param name="Distribute" select="($MapBy12*2)+$MirrorMap"/>
    <xsl:with-param name="Duplicate" select="floor($IMCsegflag div 1024) mod 4"/>
    <xsl:with-param name="ServiceName">
     <xsl:if test="FLAGS2 and (FLAGS2 mod (268435456*2))>=268435456">
      <xsl:choose>
       <xsl:when test="SVCFLAGS=1">
        <xsl:text>DEFAULT</xsl:text>
       </xsl:when>
       <xsl:when test="SVCFLAGS=2">
        <xsl:text>NONE</xsl:text>
       </xsl:when>
       <xsl:when test="SVCFLAGS=3">
        <xsl:text>ALL</xsl:text>
       </xsl:when>
       <xsl:when test="SVCFLAGS=4">
        <xsl:value-of select="SVCNAME"/>
       </xsl:when>
       <xsl:otherwise>DEFAULT</xsl:otherwise>
      </xsl:choose>
     </xsl:if>
    </xsl:with-param>
   </xsl:call-template>
  </xsl:element>
  <xsl:choose>
   <xsl:when test="STATUS = 2">
    <xsl:element name="OFFLINE"/>
   </xsl:when>
   <xsl:when test="STATUS = 4">
    <xsl:element name="READ_ONLY"/>
   </xsl:when>
   <xsl:when test="(FLAGS2 mod 1073741824)>=536870912">
    <xsl:element name="ENABLE_LOST_WRITE_PROTECTION"/>
   </xsl:when>
   <xsl:when test="(FLAGS2 mod 2147483648)>=1073741824">
    <xsl:element name="SUSPEND_LOST_WRITE_PROTECTION"/>
   </xsl:when>
  </xsl:choose>
  <!-- ENCRYPTION -->
  <xsl:if test="(FLAGS mod 32768) >= 16384">
   <xsl:element name="ENCRYPT">
    <xsl:if test="ENCRYPTIONALG">
     <xsl:element name="ENCRYPTIONALG">
      <xsl:value-of select="ENCRYPTIONALG"/>
     </xsl:element>
    </xsl:if>
   </xsl:element>
  </xsl:if>
  <!-- extent_management_clause-->
  <xsl:call-template name="ExtentManagement">
   <xsl:with-param name="BlkSize" select="$BlkSize"/>
  </xsl:call-template>
  <!-- segment_management_clause -->
  <xsl:if test="BITMAPPED != 0">
   <xsl:element name="SEGMENT_SPACE_MANAGEMENT">
    <xsl:choose>
     <xsl:when test="((FLAGS mod 64) >= 32)">
      <xsl:text>AUTO</xsl:text>
     </xsl:when>
     <xsl:otherwise>
      <xsl:text>MANUAL</xsl:text>
     </xsl:otherwise>
    </xsl:choose>
   </xsl:element>
  </xsl:if>
  <!-- How to detect FLASHBACK OFF?  -->
 </xsl:template>
 <!-- *******************************************************************
Template: DoUndoTS
  This template puts out
  - extent_management_clause
  - RETENTION_GUARANTEE
Parameters:
 BlkSize - value of BLOCKSIZE
******************************************************************** -->
 <xsl:template name="DoUndoTS">
  <xsl:param name="BlkSize">0</xsl:param>
  <xsl:if test="STATUS=2">
   <xsl:element name="OFFLINE"/>
  </xsl:if>
  <xsl:element name="BLOCKSIZE">
   <xsl:value-of select="$BlkSize"/>
  </xsl:element>
  <!-- Lost write protection -->
  <xsl:choose>
   <xsl:when test="(FLAGS2 mod 1073741824)>=536870912">
    <xsl:element name="ENABLE_LOST_WRITE_PROTECTION"/>
   </xsl:when>
   <xsl:when test="(FLAGS2 mod 2147483648)>=1073741824">
    <xsl:element name="SUSPEND_LOST_WRITE_PROTECTION"/>
   </xsl:when>
  </xsl:choose>
  <!-- extent_management_clause-->
  <xsl:call-template name="ExtentManagement">
   <xsl:with-param name="BlkSize" select="$BlkSize"/>
  </xsl:call-template>
  <!-- ENCRYPTION -->
  <xsl:if test="((FLAGS mod 32768) >= 16384) and $VERSION>=1202000000">
   <xsl:element name="ENCRYPT">
    <xsl:if test="ENCRYPTIONALG">
     <xsl:element name="ENCRYPTIONALG">
      <xsl:value-of select="ENCRYPTIONALG"/>
     </xsl:element>
    </xsl:if>
   </xsl:element>
  </xsl:if>
  <xsl:if test="(FLAGS mod 1024) >= 512">
   <xsl:element name="RETENTION_GUARANTEE"/>
  </xsl:if>
 </xsl:template>
 <!-- *******************************************************************
Template: DoTemporaryTS
  This template puts out
  - tablespace_group_clause
  - extent_management_clause
Parameters:
 BlkSize - value of BLOCKSIZE
******************************************************************** -->
 <xsl:template name="DoTemporaryTS">
  <xsl:param name="BlkSize">0</xsl:param>
  <xsl:if test="string-length(GROUPNAME)!=0">
   <xsl:element name="TABLESPACE_GROUP">
    <xsl:call-template name="QuotedName">
     <xsl:with-param name="NameNode" select="GROUPNAME"/>
    </xsl:call-template>
   </xsl:element>
  </xsl:if>
  <!-- extent_management_clause-->
  <xsl:element name="EXTENT_MANAGEMENT">
   <xsl:element name="TYPE">
    <xsl:text>LOCAL</xsl:text>
   </xsl:element>
   <xsl:element name="ALLOCATION_TYPE">
    <xsl:text>UNIFORM</xsl:text>
   </xsl:element>
   <xsl:element name="SIZE">
    <xsl:value-of select="DFLINIT * $BlkSize"/>
   </xsl:element>
  </xsl:element>
  <!-- ENCRYPTION -->
  <xsl:if test="((FLAGS mod 32768) >= 16384) and $VERSION>=1202000000">
   <xsl:element name="ENCRYPT">
    <xsl:if test="ENCRYPTIONALG">
     <xsl:element name="ENCRYPTIONALG">
      <xsl:value-of select="ENCRYPTIONALG"/>
     </xsl:element>
    </xsl:if>
   </xsl:element>
  </xsl:if>
 </xsl:template>
 <!-- *******************************************************************
Template: DoDataFile
Current node: FILESPEC_ITEM
  This template puts out
  - NAME
  - SIZE
  - autoextend_clause
Parameters:
 BlkSize - value of BLOCKSIZE
******************************************************************** -->
 <xsl:template name="DoDataFile">
  <xsl:param name="BlkSize">0</xsl:param>
  <xsl:param name="BigFile">0</xsl:param>
  <!-- IS_OMF is not necessarily in the document -->
  <xsl:choose>
   <xsl:when test="IS_OMF!=0"/>
   <xsl:otherwise>
    <xsl:element name="NAME">
     <xsl:value-of select="FNAME"/>
    </xsl:element>
   </xsl:otherwise>
  </xsl:choose>
  <xsl:element name="SIZE">
   <xsl:choose>
    <!-- for BIGFILES pick up RESIZE value -->
    <xsl:when test="$BigFile='1' and RESIZE !=0">
     <xsl:value-of select="RESIZE * $BlkSize"/>
    </xsl:when>
    <xsl:otherwise>
     <xsl:value-of select="FSIZE * $BlkSize"/>
    </xsl:otherwise>
   </xsl:choose>
  </xsl:element>
  <!-- autoextend_clause -->
  <xsl:if test="MAXEXTEND > 0">
   <xsl:element name="AUTOEXTEND">
    <xsl:element name="NEXT">
     <xsl:value-of select="INC * $BlkSize"/>
    </xsl:element>
    <xsl:element name="MAXSIZE">
     <xsl:choose>
      <xsl:when test="(MAXEXTEND * $BlkSize) > 2147483647">
       <xsl:value-of select="floor((MAXEXTEND * $BlkSize) div 1048576)"/>
       <xsl:text>M</xsl:text>
      </xsl:when>
      <xsl:otherwise>
       <xsl:value-of select="MAXEXTEND * $BlkSize"/>
      </xsl:otherwise>
     </xsl:choose>
    </xsl:element>
   </xsl:element>
  </xsl:if>
  <!--Generate temp tablespace file status as OFFLINE -->
  <xsl:if test="../../CONTENTS = 1 and (TFSTATUS mod 4)&lt;2">
   <xsl:element name="TFSTATUS">
    <xsl:text>OFFLINE</xsl:text>
   </xsl:element>
  </xsl:if>
 </xsl:template>
 <!-- *******************************************************************
Template: ExtentManagement - emit EXTENT_MANAGEMENT element
Current node: TABLESPACE_T
Parameters:
 BlkSize - value of BLOCKSIZE
******************************************************************** -->
 <xsl:template name="ExtentManagement">
  <xsl:param name="BlkSize">0</xsl:param>
  <xsl:element name="EXTENT_MANAGEMENT">
   <xsl:element name="TYPE">
    <xsl:choose>
     <xsl:when test="BITMAPPED = 0">
      <xsl:text>DICTIONARY</xsl:text>
     </xsl:when>
     <xsl:otherwise>
      <xsl:text>LOCAL</xsl:text>
     </xsl:otherwise>
    </xsl:choose>
   </xsl:element>
   <xsl:choose>
    <xsl:when test="(FLAGS mod 4) = 2">
     <xsl:element name="ALLOCATION_TYPE">
      <xsl:text>UNIFORM</xsl:text>
     </xsl:element>
     <xsl:element name="SIZE">
      <xsl:value-of select="DFLINIT * $BlkSize"/>
     </xsl:element>
    </xsl:when>
    <xsl:when test="(FLAGS mod 2) = 1">
     <xsl:element name="ALLOCATION_TYPE">
      <xsl:text>AUTOALLOCATE</xsl:text>
     </xsl:element>
    </xsl:when>
   </xsl:choose>
  </xsl:element>
 </xsl:template>
</xsl:stylesheet>

OHA YOOOO