<!-- <options version="1.0"> -->
<!-- 	<object name="Model"> -->
<!-- 		<properties> -->
<!-- 			<property name="Name" /> -->
<!-- 			<property name="Definition" /> -->
<!-- 			<property name="Author" /> -->
<!-- 			<property name="Company" /> -->
<!-- 		</properties> -->
<!-- 		<children> -->
<!-- 			<object name="Model Subset"> -->
<!-- 				<properties> -->
<!-- 					<property name="Name" /> -->
<!-- 					<property name="Attached Tables" /> -->
<!-- 				</properties> -->
<!-- 				<children> -->
<!-- 					<object name="Diagram"> -->
<!-- 						<properties> -->
<!-- 							<property name="Name" /> -->
<!-- 							<property name="As JPEG" /> -->
<!-- 						</properties> -->
<!-- 						<children> -->
<!-- 							<object name="Table Graphics"> -->
<!-- 								<properties> -->
<!-- 									<property name="Model Object" /> -->
<!-- 									<property name="As JPEG" /> -->
<!-- 									<property name="Dimensions" /> -->
<!-- 								</properties> -->
<!-- 							</object> -->
<!-- 							<object name="View Graphics"> -->
<!-- 								<properties> -->
<!-- 									<property name="Model Object" /> -->
<!-- 									<property name="As JPEG" /> -->
<!-- 									<property name="Dimensions" /> -->
<!-- 								</properties> -->
<!-- 							</object> -->
<!-- 						</children> -->
<!-- 					</object> -->
<!-- 				</children> -->
<!-- 			</object> -->
<!-- 			<object name="Table"> -->
<!-- 				<properties> -->
<!-- 					<property name="Name" /> -->
<!-- 					<property name="Definition" /> -->
<!-- 					<property name="Comment" /> -->
<!-- 					<property name="Owner" /> -->
<!-- 					<property name="Generate" /> -->
<!-- 					<property name="Is Nested" /> -->
<!-- 					<property name="PARALLEL" /> -->
<!-- 					<property name="Datatype Length" /> -->
<!-- 					<property name="Datatype Precision" /> -->
<!-- 					<property name="ORGANIZATION" /> -->
<!-- 					<property name="Evaluated Create Script" /> -->
<!-- 				</properties> -->
<!-- 				<children> -->
<!-- 					<object name="Column"> -->
<!-- 						<properties> -->
<!-- 							<property name="Name" /> -->
<!-- 							<property name="Not Null" /> -->
<!-- 							<property name="Datatype" /> -->
<!-- 							<property name="Relations" /> -->
<!-- 							<property name="Column is PK" /> -->
<!-- 							<property name="Column is FK" /> -->
<!-- 							<property name="Column is AK" /> -->
<!-- 						</properties> -->
<!-- 					</object> -->
<!-- 					<object name="Index"> -->
<!-- 						<properties> -->
<!-- 							<property name="Name" /> -->
<!-- 							<property name="Unique" /> -->
<!-- 							<property name="Key" /> -->
<!-- 						</properties> -->
<!-- 						<children> -->
<!-- 							<object name="Index Member"> -->
<!-- 								<properties> -->
<!-- 									<property name="Name" /> -->
<!-- 									<property name="Column" /> -->
<!-- 								</properties> -->
<!-- 							</object> -->
<!-- 							<object name="Segment Attributes"> -->
<!-- 								<properties> -->
<!-- 									<property name="TABLESPACE" /> -->
<!-- 								</properties> -->
<!-- 							</object> -->
<!-- 						</children> -->
<!-- 					</object> -->
<!-- 					<object name="Relation"> -->
<!-- 						<properties> -->
<!-- 							<property name="Name" /> -->
<!-- 							<property name="Parent Table" /> -->
<!-- 							<property name="Delete Rule" /> -->
<!-- 							<property name="Evaluated Create Script" /> -->
<!-- 							<property name="Parent to Child Sentence" /> -->
<!-- 							<property name="Child to Parent Sentence" /> -->
<!-- 						</properties> -->
<!-- 						<children> -->
<!-- 							<object name="FK Member"> -->
<!-- 								<properties> -->
<!-- 									<property name="Parent Column" /> -->
<!-- 									<property name="Child Column" /> -->
<!-- 								</properties> -->
<!-- 							</object> -->
<!-- 						</children> -->
<!-- 					</object> -->
<!-- 					<object name="Key Constraint"> -->
<!-- 						<properties> -->
<!-- 							<property name="Name" /> -->
<!-- 							<property name="Index" /> -->
<!-- 							<property name="Type" /> -->
<!-- 							<property name="Columns" /> -->
<!-- 							<property name="Evaluated Create Script" /> -->
<!-- 						</properties> -->
<!-- 					</object> -->
<!-- 					<object name="Segment Attributes"> -->
<!-- 						<properties> -->
<!-- 							<property name="TABLESPACE" /> -->
<!-- 						</properties> -->
<!-- 						<children> -->
<!-- 							<object name="Physical Attributes"> -->
<!-- 								<properties> -->
<!-- 									<property name="PCTFREE" /> -->
<!-- 									<property name="MAXTRANS" /> -->
<!-- 								</properties> -->
<!-- 								<children> -->
<!-- 									<object name="Storage"> -->
<!-- 										<properties> -->
<!-- 											<property name="MINEXTENTS" /> -->
<!-- 											<property name="MAXEXTENTS" /> -->
<!-- 										</properties> -->
<!-- 									</object> -->
<!-- 								</children> -->
<!-- 							</object> -->
<!-- 						</children> -->
<!-- 					</object> -->
<!-- 				</children> -->
<!-- 			</object> -->
<!-- 			<object name="User"> -->
<!-- 				<properties> -->
<!-- 					<property name="Name" /> -->
<!-- 				</properties> -->
<!-- 			</object> -->
<!-- 			<object name="View"> -->
<!-- 				<properties> -->
<!-- 					<property name="Name" /> -->
<!-- 					<property name="Evaluated Create Script" /> -->
<!-- 				</properties> -->
<!-- 				<children> -->
<!-- 					<object name="Select"> -->
<!-- 						<properties> -->
<!-- 							<property name="Name" /> -->
<!-- 							<property name="Select Statement" /> -->
<!-- 							<property name="Evaluated Create Script" /> -->
<!-- 						</properties> -->
<!-- 						<children> -->
<!-- 							<object name="Expression Column"> -->
<!-- 								<properties> -->
<!-- 									<property name="Name" /> -->
<!-- 									<property name="SQL DDL" /> -->
<!-- 									<property name="Referenced Objects" /> -->
<!-- 								</properties> -->
<!-- 							</object> -->
<!-- 							<object name="From Relation"> -->
<!-- 								<properties> -->
<!-- 									<property name="Name" /> -->
<!-- 									<property name="Parent Table" /> -->
<!-- 								</properties> -->
<!-- 							</object> -->
<!-- 							<object name="Where"> -->
<!-- 								<properties> -->
<!-- 									<property name="Name" /> -->
<!-- 									<property name="SQL DDL" /> -->
<!-- 								</properties> -->
<!-- 							</object> -->
<!-- 							<object name="Having"> -->
<!-- 								<properties> -->
<!-- 									<property name="Name" /> -->
<!-- 									<property name="SQL DDL" /> -->
<!-- 								</properties> -->
<!-- 							</object> -->
<!-- 							<object name="Group By"> -->
<!-- 								<properties> -->
<!-- 									<property name="Name" /> -->
<!-- 									<property name="SQL DDL" /> -->
<!-- 								</properties> -->
<!-- 							</object> -->
<!-- 							<object name="Order By"> -->
<!-- 								<properties> -->
<!-- 									<property name="Name" /> -->
<!-- 									<property name="SQL DDL" /> -->
<!-- 								</properties> -->
<!-- 							</object> -->
<!-- 						</children> -->
<!-- 					</object> -->
<!-- 					<object name="View Column"> -->
<!-- 						<properties> -->
<!-- 							<property name="Name" /> -->
<!-- 						</properties> -->
<!-- 					</object> -->
<!-- 				</children> -->
<!-- 			</object> -->
<!-- 			<object name="Column Domain"> -->
<!-- 				<properties> -->
<!-- 					<property name="Name" /> -->
<!-- 					<property name="Datatype" /> -->
<!-- 					<property name="Built In" /> -->
<!-- 				</properties> -->
<!-- 			</object> -->
<!-- 			<object name="Tablespace"> -->
<!-- 				<properties> -->
<!-- 					<property name="Name" /> -->
<!-- 					<property name="Definition" /> -->
<!-- 					<property name="Enabled" /> -->
<!-- 					<property name="Generate" /> -->
<!-- 					<property name="BLOCKSIZE" /> -->
<!-- 					<property name="MAXEXTENTS" /> -->
<!-- 					<property name="PCTINCREASE" /> -->
<!-- 					<property name="MINIMUM EXTENT" /> -->
<!-- 					<property name="Type" /> -->
<!-- 					<property name="LOGGING" /> -->
<!-- 					<property name="EXTENT MANAGEMENT" /> -->
<!-- 					<property name="ALLOCATION TYPE" /> -->
<!-- 					<property name="SEGMENT SPACE MANAGEMENT" /> -->
<!-- 					<property name="COMPRESS" /> -->
<!-- 					<property name="OFFLINE" /> -->
<!-- 					<property name="BLOCKSIZE MODIFIER" /> -->
<!-- 					<property name="MINIMUM EXTENT MODIFIER" /> -->
<!-- 					<property name="FORCE LOGGING" /> -->
<!-- 					<property name="File Size" /> -->
<!-- 					<property name="UNIFORM SIZE" /> -->
<!-- 					<property name="UNIFORM SIZE MODIFIER" /> -->
<!-- 					<property name="FLASHBACK" /> -->
<!-- 					<property name="STATUS" /> -->
<!-- 					<property name="RETENTION" /> -->
<!-- 					<property name="Evaluated Create Script" /> -->
<!-- 					<property name="GROUP NAME" /> -->
<!-- 					<property name="Built In" /> -->
<!-- 					<property name="Pre Script" /> -->
<!-- 					<property name="Post Script" /> -->
<!-- 				</properties> -->
<!-- 				<children> -->
<!-- 					<object name="Datafile"> -->
<!-- 						<properties> -->
<!-- 							<property name="Name" /> -->
<!-- 							<property name="Definition" /> -->
<!-- 							<property name="Enabled" /> -->
<!-- 							<property name="Generate" /> -->
<!-- 							<property name="Generate Name" /> -->
<!-- 							<property name="SIZE" /> -->
<!-- 							<property name="SIZE MODIFIER" /> -->
<!-- 							<property name="REUSE" /> -->
<!-- 							<property name="AUTOEXTEND" /> -->
<!-- 							<property name="NEXT SIZE" /> -->
<!-- 							<property name="NEXT SIZE MODIFIER" /> -->
<!-- 							<property name="MAX SIZE" /> -->
<!-- 							<property name="MAX SIZE MODIFIER" /> -->
<!-- 							<property name="Built In" /> -->
<!-- 							<property name="Pre Script" /> -->
<!-- 							<property name="Post Script" /> -->
<!-- 						</properties> -->
<!-- 					</object> -->
<!-- 				</children> -->
<!-- 			</object> -->
<!-- 			<object name="Type"> -->
<!-- 				<properties> -->
<!-- 					<property name="Name" /> -->
<!-- 					<property name="Type" /> -->
<!-- 					<property name="Builtin" /> -->
<!-- 				</properties> -->
<!-- 			</object> -->
<!-- 		</children> -->
<!-- 	</object> -->
<!-- </options> -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:key name="IDs" match="*" use="@id"/>
<xsl:template match="/">
  <html  xmlns="http://www.w3.org/1999/xhtml">
		<head>
			<title>Table/Columns Report</title>
      <script type="text/javascript">
        // <![CDATA[
        function toggle(element, togimg) {
          if (element.style.display == 'none') {
            element.style.display = 'block';
            togimg.src="images/collapse.gif";
          }
          else {
            element.style.display = 'none';
            togimg.src="images/expand.gif";
          }
        }
        // ]]>
      </script>
		</head>
      <STYLE>
        BODY
        {
        font-family:Arial;
        background-image: url(images/background.gif);
        }
        TD
        {
        font-size: 80%;
        background-color: #EEEEEE;
        vertical-align: top;
        }
        H1   { border-bottom: #000099 thick solid; }
        img { border-width: 0px; }
        .sqlcode
        {
        font-family: system;
        font-size: 70%;
        }
        .CommonHeader
        {
        color: #666666;
        font-size: 130%;
        font-weight: bold;
        font-family: Tahoma, Arial, Helvetica;
        padding: 0px;
        margin: 0px;
        margin-top: 8px;
        }
        a:link, a:visited
        {
        color: #4444BF;
        text-decoration: none;
        }
        .header-table, .header-table TD, .header-table TH
        {
        background-color: #92B2F2;
        color: black;
        border-width: 0px;
        font-family:sans-serif;
        font-weight:600;
        vertical-align:middle;
        }
        .TablesHeader
        {
        color: white;
        background-color: #000099;
        }
        .TableHeading
        {
        border-bottom: #000099 solid;
        }
        pre
        {
        border: solid 1px #666666;
        background-color: #f2f2f2;
        }
        .pre
        {
        border: solid 1px #666666;
        background-color: #f2f2f2;
        }
        pre2
        {
        border: solid 1px #666666;
        background-color: #f2f2f2;
        }

      </STYLE>
      <body>
        <table cellpadding="10px" class="header-table" style="border-width: 5; border-color: #000099; border-style:solid;">
          <tr>
            <td width="100px">
            </td>
            <td style="font-size:110%">
              This reporting template displays information about numerous types of model objects and illustrates many
              ways to navigate the XML data using XSLT to produce an HTML report.
            </td>
            <td width="200px">
              <img src="images/ModelRight.gif" align="right" height="100px"/>
            </td>
          </tr>
        </table>
        <br/>

      <xsl:text>&#xA;</xsl:text>
      <h1 class="TableHeading">
        <img src="images/model.gif" height="25"/>
        <xsl:text>  </xsl:text>
        <a name="{model/@id}">
          <xsl:value-of select="model/model-properties/model.name" />
        </a>
      </h1>
        <xsl:if test="model/model-properties/model.author">
          <span class="CommonHeader">Author: </span>
              <xsl:value-of select="model/model-properties/model.author" />
        </xsl:if>
        <xsl:if test="model/model-properties/model.company">
          <br/>
          <br/>
          <span class="CommonHeader">Company: </span>
              <xsl:value-of select="model/model-properties/model.company" />
        </xsl:if>
        <xsl:if test="model/@timestamp">
          <br/>
          <br/>
          <span class="CommonHeader">Generated: </span>
          <xsl:value-of select="model/@timestamp" />
        </xsl:if>
        <xsl:if test="model/model-properties/model.definition">
          <br/>
          <br/>
          <span class="CommonHeader">Definition</span>
          <div class="pre">
            <xsl:value-of select="model/model-properties/model.definition" />
          </div>
        </xsl:if>
        <br/>
        <br/>
        <span class="CommonHeader">Table of Contents</span>
        <xsl:if test ="/model/model-children/table">
        <h2>
          <span onclick="toggle(TablesList,TableEC);">
            <img src="images/expand.gif" height="13" id="TableEC"/>
          </span>
          <xsl:text>  </xsl:text>
          <a href="#Tables">
            <img src="images/table.gif" />
            Tables
          </a>
        </h2>
        <div id="TablesList" style="display: none;">
          <ul>
            <xsl:for-each select="/model/model-children/table">
              <xsl:sort select="table-properties/table.name"/>
              <li>
                <a href="#{@id}">
                  <xsl:value-of select="table-properties/table.name"/>
                </a>
              </li>
            </xsl:for-each>
          </ul>
        </div>
      </xsl:if>
      <xsl:if test ="/model/model-children/view">
        <h2>
          <span onclick="toggle(ViewsList,ViewEC);">
            <img src="images/expand.gif" height="13" id="ViewEC"/>
          </span>
          <xsl:text>  </xsl:text>
          <a href="#Views">
            <img src="images/view.gif" />
            Views
          </a>
        </h2>
        <div id="ViewsList" style="display: none;">
          <ul>
            <xsl:for-each select="/model/model-children/view">
              <xsl:sort select="view-properties/view.name"/>
              <li>
                <a href="#{@id}">
                  <xsl:value-of select="view-properties/view.name"/>
                </a>
              </li>
            </xsl:for-each>
          </ul>
        </div>
      </xsl:if>
      <!--User-Defined Types-->
      <xsl:if test ="/model/model-children/type[not(type-properties/type.builtin)]">
        <h2>
          <span onclick="toggle(UDTypesList,UDTypeEC);">
            <img src="images/expand.gif" height="13" id="UDTypeEC"/>
          </span>
          <xsl:text>  </xsl:text>
          <a href="#UDTypes">
            <img src="images/type.gif" />
            User-Defined Types
          </a>
        </h2>
        <div id="UDTypesList" style="display: none;">
          <ul>
            <xsl:for-each select="/model/model-children/type[not(type-properties/type.builtin)]">
              <xsl:sort select="type-properties/type.name"/>
              <li>
                <a href="#{@id}">
                  <xsl:value-of select="type-properties/type.name"/>
                </a>
              </li>
            </xsl:for-each>
          </ul>
        </div>
      </xsl:if>

      <xsl:if test ="/model/model-children/tablespace">
        <h2>
          <span onclick="toggle(TablespacesList,TablespacesEC);">
            <img src="images/expand.gif" height="13" id="TablespacesEC"/>
          </span>
          <xsl:text>  </xsl:text>
          <a href="#Tablespaces">
            <img src="images/tablespace.gif" />
            Tablespaces
          </a>
        </h2>
        <div id="TablespacesList" style="display: none;">
          <ul>
            <xsl:for-each select="/model/model-children/tablespace">
              <xsl:sort select="tablespace-properties/tablespace.name"/>
              <li>
                <a href="#{@id}">
                  <xsl:value-of select="tablespace-properties/tablespace.name"/>
                </a>
              </li>
            </xsl:for-each>
          </ul>
        </div>
      </xsl:if>

      <xsl:if test ="/model/model-children/column-domain">
        <h2>
          <span onclick="toggle(ColumnDomainsList,ColumnDomainsEC);">
            <img src="images/expand.gif" height="13" id="ColumnDomainsEC"/>
          </span>
          <xsl:text>  </xsl:text>
          <a href="#ColumnDomains">
            <img src="images/column-domain.gif" />
            Column Domains
          </a>
        </h2>
        <div id="ColumnDomainsList" style="display: none;">
          <ul>
            <xsl:for-each select="/model/model-children/column-domain">
              <xsl:sort select="column-domain-properties/column-domain.name"/>
              <li>
                <a href="#{@id}">
                  <xsl:value-of select="column-domain-properties/column-domain.name"/>
                </a>
              </li>
            </xsl:for-each>
          </ul>
        </div>
      </xsl:if>

      <xsl:if test ="/model/model-children/model-subset/model-subset-children/diagram">
        <h2>
          <span onclick="toggle(DiagramsList,DiagramsEC);">
            <img src="images/expand.gif" height="13" id="DiagramsEC"/>
          </span>
          <xsl:text>  </xsl:text>
          <a href="#Diagrams">
            <img src="images/diagram.gif" />
            Diagrams
          </a>
        </h2>
        <div id="DiagramsList" style="display: none;">
          <ul>
            <xsl:for-each select="/model/model-children/model-subset/model-subset-children/diagram">
              <li>
                <a href="#{@id}">
                  <xsl:value-of select="../../model-subset-properties/model-subset.name" />.<xsl:value-of select="diagram-properties/diagram.name" />
                </a>
              </li>
            </xsl:for-each>
          </ul>
        </div>
      </xsl:if>

      <xsl:if test ="/model/model-children/table">
        <h1>
          <a id="Tables" name="Tables">
            <img src="images/table.gif" />
            <xsl:text>  </xsl:text>
            <xsl:text>Tables</xsl:text>
          </a>
        </h1>
        <xsl:apply-templates select="/model/model-children/table">
          <xsl:sort select="table-properties/table.name"/>
        </xsl:apply-templates>
      </xsl:if>
      <xsl:if test ="/model/model-children/view">
        <h1>
          <a id="Views" name="Views">
            <img src="images/view.gif" />
            <xsl:text>  </xsl:text>
            <xsl:text>Views</xsl:text>
          </a>
        </h1>
        <xsl:apply-templates select="/model/model-children/view">
          <xsl:sort select="view-properties/view.name"/>
        </xsl:apply-templates>
      </xsl:if>
      <xsl:if test ="/model/model-children/type[not(type-properties/type.builtin)]">
        <h1>
          <a id="UDTypes" name="UDTypes">
            <img src="images/type.gif" width="20"/>
            <xsl:text>  </xsl:text>
            <xsl:text>User-Defined Types</xsl:text>
          </a>
        </h1>
        <xsl:call-template name="type-details"/>
      </xsl:if>
      <xsl:if test ="/model/model-children/tablespace">
        <h1>
          <a id="Tablespaces" name="Tablespaces">
            <img src="images/tablespace.gif" width="20"/>
            <xsl:text>  </xsl:text>
            <xsl:text>Tablespaces</xsl:text>
          </a>
        </h1>
        <xsl:call-template name="tablespace-details"/>
      </xsl:if>
      <xsl:if test ="/model/model-children/column-domain">
        <h1>
          <a id="ColumnDomains" name="ColumnDomains">
            <img src="images/column-domain.gif" width="20"/>
            <xsl:text>  </xsl:text>
            <xsl:text>Column Domains</xsl:text>
          </a>
        </h1>
        <xsl:call-template name="column-domain-details"/>
      </xsl:if>
      <xsl:if test ="/model/model-children/model-subset/model-subset-children/diagram">
        <h1>
          <a id="Diagrams" name="Diagrams">
            <img src="images/diagram.gif" width="20"/>
            <xsl:text>  </xsl:text>
            <xsl:text>Diagrams</xsl:text>
          </a>
        </h1>
        <xsl:apply-templates select="/model/model-children/model-subset/model-subset-children/diagram" />
      </xsl:if>
    </body>
  </html>
</xsl:template>

<xsl:template match="model-children/*" mode="toc">
    <xsl:value-of select="@display-name"/>
</xsl:template>

<xsl:template match="table">
  <xsl:text>&#xA;</xsl:text>
  <xsl:variable name="tableId" select="@id" />
  <xsl:text>&#xA;</xsl:text>
  <h4 class="TableHeading">
    <img src="images/table.gif" />
    <xsl:text>  </xsl:text>
      <a name="{@id}">
      <xsl:value-of select="table-properties/table.name" />
    </a>
  </h4>
  <xsl:if test="table-properties/table.comment">
    <p width="80%">
      <pre>
        <h5>
          <xsl:value-of select="table-properties/table.comment" />
        </h5>
      </pre>
    </p>
  </xsl:if>
  <table>
    <xsl:apply-templates select="table-properties/*" />
    <xsl:apply-templates select="table-children/segment-attributes/segment-attributes-properties/*" />
    <xsl:apply-templates select="table-children/segment-attributes/segment-attributes-children/physical-attributes/physical-attributes-properties/*" />
    <xsl:apply-templates select="table-children/segment-attributes/segment-attributes-children/physical-attributes/physical-attributes-children/storage/storage-properties/*" />
  </table>
  <br/>
  <xsl:if test="table-children/column">
    <img src="images/column.gif" />
    <xsl:text>  </xsl:text>
    <span class="CommonHeader">Columns</span>
    <table border="2">
      <xsl:call-template name="column-header"/>
      <xsl:apply-templates select="table-children/column"/>
    </table>
  </xsl:if>
  <xsl:if test="table-children/index">
    <br />
    <img src="images/index.gif" />
    <xsl:text>  </xsl:text>
    <span class="CommonHeader">Indexes</span>
    <table border="2">
      <xsl:call-template name="index-header"/>
      <xsl:apply-templates select="table-children/index"/>
    </table>
  </xsl:if>
  <xsl:if test="table-children/key-constraint">
    <br />
    <img src="images/key-constraint.gif" />
    <xsl:text>  </xsl:text>
    <span class="CommonHeader">Keys</span>
    <table border="2">
      <xsl:call-template name="key-header"/>
      <xsl:apply-templates select="table-children/key-constraint"/>
    </table>
  </xsl:if>
  <xsl:if test="table-children/relation">
    <br />
    <img src="images/relation.gif" />
    <xsl:text>  </xsl:text>
    <span class="CommonHeader">Relations</span>
    <table border="2">
      <xsl:call-template name="relation-header"/>
      <xsl:apply-templates select="table-children/relation"/>
    </table>
  </xsl:if>
  <xsl:variable name="table-diagrams" select="/model/model-children/model-subset/model-subset-children/diagram/diagram-children/table-graphics[table-graphics-properties/table-graphics.model-object/@reference-id = $tableId]"/>
  <xsl:if test="$table-diagrams">
    <br />
    <img src="images/diagram.gif" height="15" />
    <xsl:text>  </xsl:text>
    <span class="CommonHeader">Appears in Diagrams</span>
    <table border="2">
      <xsl:text>&#xA;</xsl:text>
      <tr>
        <xsl:text>&#xA;</xsl:text>
        <th class="TablesHeader">
          Diagram
        </th>
      </tr>
        <xsl:for-each select="$table-diagrams">
          <xsl:text>&#xA;</xsl:text>
          <tr>
            <xsl:text>&#xA;</xsl:text>
            <td align="center">
             <xsl:variable name="imageName" select="table-graphics-properties/table-graphics.as-jpeg/text()" />
              <a href="#{../../@id}">
                <img src="{$imageName}" border="0"/>
                <br />
                <xsl:value-of select="../../../../model-subset-properties/model-subset.name" />.<xsl:value-of select="../../diagram-properties/diagram.name"></xsl:value-of>
              </a>
            </td>
          </tr>
        </xsl:for-each>
      </table>
  </xsl:if>
  <xsl:if test="table-properties/table.evaluated-create-script">
    <br />
    <span class="CommonHeader">Create Script</span>
    <TABLE BORDER="0" width="100%">
      <TD class="sqlcode" width="*">
        <pre>
          <xsl:value-of select="table-properties/table.evaluated-create-script" />
        </pre>
      </TD>
    </TABLE>
  </xsl:if>
</xsl:template>

  <xsl:template name="column-header">
    <xsl:text>&#xA;&#x9;</xsl:text>
    <tr>
      <xsl:text>&#xA;&#x9;&#x9;</xsl:text>
      <th class="TablesHeader" align="center">
        <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
        Is PK
      </th>
      <xsl:text>&#xA;&#x9;&#x9;</xsl:text>
      <th class="TablesHeader" align="center">
        <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
        Name
      </th>
      <th class="TablesHeader">
        <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
        Datatype
      </th>
      <th class="TablesHeader" align="center">
        <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
        Not Null
      </th>
      <th class="TablesHeader" align="center">
        <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
        FK Relations
      </th>
      <th class="TablesHeader" align="center">
        <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
        Parent Columns
      </th>
      <th class="TablesHeader" align="center">
        <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
        Child Columns
      </th>
      <th class="TablesHeader" align="center">
        <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
        In Keys
      </th>
      <th class="TablesHeader" align="center">
        <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
        Domain
      </th>
    </tr>
  </xsl:template>

<xsl:template match="table-children/column">
  <xsl:variable name="col-id" select="@id"/>
  <xsl:text>&#xA;&#x9;</xsl:text>
  <tr>
    <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
    <td>
      <xsl:if test="column-properties/column.column-is-pk = 'True'">
        <img src="images/key-constraint.gif" height="15" />
      </xsl:if>
      &#160;
    </td>
      <td valign="top">
      <a id="{@id}" name="{@id}">
        <xsl:value-of select="column-properties/column.name" />
      </a>
    </td>
    <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
    <td>
      <xsl:variable name="type-elem" select="key('IDs', column-properties/column.datatype/@reference-id)"/>
      <xsl:choose>
        <xsl:when test="column-properties/column.datatype/@property-as-string">
          <xsl:value-of select="column-properties/column.datatype/@property-as-string" />
        </xsl:when>
        <xsl:when test="$type-elem and not($type-elem/type-properties/type.builtin)">
          <a href="#{$type-elem/@id}">
            <xsl:call-template name="add-icon">
              <xsl:with-param name="obj-id" select="$type-elem/@id" />
            </xsl:call-template>
            <xsl:value-of select="column-properties/column.datatype" />
          </a>
        </xsl:when>
        <xsl:otherwise>
          <xsl:value-of select="column-properties/column.datatype" />
        </xsl:otherwise>
      </xsl:choose>
    </td>
    <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
    <td align="center">
      <xsl:text>&#x9;</xsl:text>
      <xsl:if test="column-properties/column.not-null/text() = 'True'">
        <img src="images/check.gif" height="15" />
      </xsl:if>
      &#160;
    </td>
    <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
    <td>
      <xsl:choose>
        <xsl:when test="column-properties/column.relations">
          <xsl:call-template name="parse-name">
            <xsl:with-param name="ids" select="substring(column-properties/column.relations/@reference-id, 2, string-length(column-properties/column.relations/@reference-id) - 2)" />
            <xsl:with-param name="names" select="column-properties/column.relations" />
          </xsl:call-template>
        </xsl:when>
        <xsl:otherwise>
          &#160;
        </xsl:otherwise>
      </xsl:choose>
    </td>
    <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
    <td>
      <xsl:choose>
        <xsl:when test="column-properties/column.relations">
          <xsl:call-template name="parse-fk-name">
            <xsl:with-param name="ids" select="substring(column-properties/column.relations/@reference-id, 2, string-length(column-properties/column.relations/@reference-id) - 2)" />
            <xsl:with-param name="child-col-id" select="@id" />
          </xsl:call-template>
        </xsl:when>
        <xsl:otherwise>
          &#160;
        </xsl:otherwise>
      </xsl:choose>
    </td>
    <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
    <td>
      <xsl:variable name="child-cols" select ="/model/model-children/table/table-children/relation/relation-children/fk-member/fk-member-properties/fk-member.parent-column[@reference-id=$col-id]"/>
      <xsl:choose>
        <xsl:when test="$child-cols">
          <xsl:for-each select="$child-cols">
            <xsl:variable name="child-column" select="key('IDs', ../fk-member.child-column/@reference-id)"/>
            <xsl:if test="position() != 1">
              <br />
            </xsl:if>
            <a href="#{../fk-member.child-column/@reference-id}">
              <xsl:call-template name="add-icon">
                <xsl:with-param name="obj-id" select="../fk-member.child-column/@reference-id" />
              </xsl:call-template>
              <xsl:if test="$child-column">
                <xsl:value-of select="$child-column/../../table-properties/table.name"></xsl:value-of>
              </xsl:if>
              .
              <xsl:value-of select="../fk-member.child-column"></xsl:value-of>
            </a>
          </xsl:for-each>
        </xsl:when>
        <xsl:otherwise>
          &#160;
        </xsl:otherwise>
      </xsl:choose>
    </td>
    <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
    <td>
      <xsl:variable name="col-keys">
        <xsl:for-each select="../key-constraint">
          <xsl:call-template name="column-keys">
            <xsl:with-param name="ids" select="substring(key-constraint-properties/key-constraint.columns/@reference-id, 2, string-length(key-constraint-properties/key-constraint.columns/@reference-id) - 2)" />
            <xsl:with-param name="col-id" select="$col-id" />
          </xsl:call-template>
        </xsl:for-each>
      </xsl:variable>
      <xsl:choose>
        <xsl:when test="string($col-keys)=''">
          &#160;
        </xsl:when>
        <xsl:otherwise>
          <xsl:copy-of select="$col-keys"/>
        </xsl:otherwise>
      </xsl:choose>
    </td>
    <td>
      <xsl:variable name="inh-id" select="key('IDs', @inherits-from)"/>
      <xsl:choose>
        <xsl:when test="$inh-id/column-domain-properties">
          <a href="#{$inh-id/@id}">
            <xsl:call-template name="add-icon">
              <xsl:with-param name="obj-id" select="$inh-id/@id" />
            </xsl:call-template>
            <xsl:value-of select="$inh-id/column-domain-properties/column-domain.name"></xsl:value-of>
          </a>
        </xsl:when>
        <xsl:when test="$inh-id/column-properties">
          <a href="#{$inh-id/@id}">
            <xsl:call-template name="add-icon">
              <xsl:with-param name="obj-id" select="$inh-id/@id" />
            </xsl:call-template>
            <xsl:value-of select="$inh-id/column-properties/column.name"></xsl:value-of>
          </a>
        </xsl:when>
        <xsl:otherwise>&#160;</xsl:otherwise>
      </xsl:choose>
    </td>
  </tr>
</xsl:template>

  <xsl:template name="index-header">
    <xsl:text>&#xA;&#x9;</xsl:text>
    <tr>
      <xsl:text>&#xA;&#x9;&#x9;</xsl:text>
      <th class="TablesHeader" width="150px" align="center">
        <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
        Name
      </th>
      <th class="TablesHeader" width="150px" align="center">
        <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
        Tablespace
      </th>
      <th class="TablesHeader" width="150px" align="center">
        <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
        Associated Key
      </th>
      <th class="TablesHeader" width="150px" align="center">
        <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
        Members
      </th>
    </tr>
  </xsl:template>

  <xsl:template match="table-children/index">
    <xsl:text>&#xA;&#x9;</xsl:text>
    <tr>
      <xsl:text>&#xA;&#x9;&#x9;</xsl:text>
      <td>
        <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
        <a name="{@id}" id="{@id}">
          <xsl:value-of select="index-properties/index.name" />
        </a>
      </td>
      <td>
        <xsl:variable name="index-tablespace" select="index-children/segment-attributes/segment-attributes-properties/segment-attributes.tablespace"/>
        <xsl:if test="$index-tablespace">
          <a href="#{$index-tablespace/@reference-id}">
            <xsl:call-template name="add-icon">
              <xsl:with-param name="obj-id" select="$index-tablespace/@reference-id" />
            </xsl:call-template>
            <xsl:value-of select="$index-tablespace" />
          </a>
        </xsl:if>
      </td>
      <td>
        <xsl:if test="index-properties/index.key">
          <a href="#{index-properties/index.key/@reference-id}">
            <xsl:call-template name="add-icon">
              <xsl:with-param name="obj-id" select="index-properties/index.key/@reference-id" />
            </xsl:call-template>
            <xsl:value-of select="index-properties/index.key" />
          </a>
        </xsl:if>
      </td>
      <td>
        <xsl:for-each select="index-children/index-member">
          <xsl:if test="position() != 1">
            <br />
          </xsl:if>
          <a href="#{index-member-properties/index-member.column/@reference-id}">
            <xsl:call-template name="add-icon">
              <xsl:with-param name="obj-id" select="index-member-properties/index-member.column/@reference-id" />
            </xsl:call-template>
            <xsl:value-of select="index-member-properties/index-member.column"></xsl:value-of>
            <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
            <xsl:value-of select="index-properties/index.name/text()" />
          </a>
        </xsl:for-each>
      </td>
    </tr>
  </xsl:template>

  <xsl:template name="key-header">
    <xsl:text>&#xA;&#x9;</xsl:text>
    <tr>
      <xsl:text>&#xA;&#x9;&#x9;</xsl:text>
      <th class="TablesHeader" width="50px" align="center">
        <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
        Type
      </th>
      <th class="TablesHeader" width="150px" align="center">
        <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
        Name
      </th>
      <th class="TablesHeader" width="150px" align="center">
        <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
        Associated Index
      </th>
      <th class="TablesHeader" width="150px" align="center">
        <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
        Members
      </th>
    </tr>
  </xsl:template>

  <xsl:template match="table-children/key-constraint">
    <xsl:text>&#xA;&#x9;</xsl:text>
    <tr>
      <xsl:text>&#xA;&#x9;&#x9;</xsl:text>
      <td>
        <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
        <xsl:call-template name="add-icon">
          <xsl:with-param name="obj-id" select="@id" />
        </xsl:call-template>
        <xsl:value-of select="key-constraint-properties/key-constraint.type/@property-as-string" />
      </td>
      <xsl:text>&#xA;&#x9;&#x9;</xsl:text>
      <td valign="top">
        <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
        <a id="{@id}" name="{@id}">
          <xsl:value-of select="key-constraint-properties/key-constraint.name" />
        </a>
      </td>
      <td>
        <xsl:if test="key-constraint-properties/key-constraint.index">
          <a href="#{key-constraint-properties/key-constraint.index/@reference-id}">
            <xsl:call-template name="add-icon">
              <xsl:with-param name="obj-id" select="key-constraint-properties/key-constraint.index/@reference-id" />
            </xsl:call-template>
            <xsl:value-of select="key-constraint-properties/key-constraint.index" />
          </a>
        </xsl:if>
      </td>
      <td>
        <xsl:if test="key-constraint-properties/key-constraint.columns">
          <xsl:call-template name="parse-name">
            <xsl:with-param name="ids" select="substring(key-constraint-properties/key-constraint.columns/@reference-id, 2, string-length(key-constraint-properties/key-constraint.columns/@reference-id) - 2)" />
            <xsl:with-param name="names" select="key-constraint-properties/key-constraint.columns" />
          </xsl:call-template>
        </xsl:if>
      </td>
    </tr>
  </xsl:template>

  <xsl:template name="relation-header">
    <xsl:text>&#xA;&#x9;</xsl:text>
    <tr>
      <xsl:text>&#xA;&#x9;&#x9;</xsl:text>
      <th class="TablesHeader" width="150px" align="center">
        <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
        Name
      </th>
      <th class="TablesHeader" width="150px" align="center">
        <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
        Delete Rule
      </th>
      <th class="TablesHeader" width="150px" align="center">
        <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
        Parent Table
      </th>
      <th class="TablesHeader" width="150px" align="center">
        <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
        Parent Columns
      </th>
      <th class="TablesHeader" width="150px" align="center">
        <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
        Child Columns
      </th>
    </tr>
  </xsl:template>

  <xsl:template match="table-children/relation">
    <xsl:text>&#xA;&#x9;</xsl:text>
    <tr>
      <xsl:text>&#xA;&#x9;&#x9;</xsl:text>
      <td>
        <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
        <a name="{@id}" id="{@id}">
          <xsl:value-of select="relation-properties/relation.name" />
        </a>
      </td>
      <td>
        <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
        <xsl:value-of select="relation-properties/relation.delete-rule/@property-as-string" />
      </td>
      <td>
        <a href="#{relation-properties/relation.parent-table/@reference-id}">
          <xsl:call-template name="add-icon">
            <xsl:with-param name="obj-id" select="relation-properties/relation.parent-table/@reference-id" />
          </xsl:call-template>
          <xsl:value-of select="relation-properties/relation.parent-table"></xsl:value-of>
        </a>
      </td>
      <td>
        <xsl:for-each select="relation-children/fk-member">
          <xsl:variable name="parent-column" select="key('IDs', fk-member-properties/fk-member.parent-column/@reference-id)"/>
          <a href="#{$parent-column/@id}">
            <xsl:call-template name="add-icon">
              <xsl:with-param name="obj-id" select="$parent-column/@id" />
            </xsl:call-template>
            <xsl:value-of select="$parent-column/../../table-properties/table.name" />.<xsl:value-of select="fk-member-properties/fk-member.parent-column"></xsl:value-of>
          </a>
          <br />
        </xsl:for-each>
      </td>
      <td>
        <xsl:for-each select="relation-children/fk-member">
          <xsl:variable name="child-column" select="key('IDs', fk-member-properties/fk-member.child-column/@reference-id)"/>
          <a href="#{$child-column/@id}">
            <xsl:call-template name="add-icon">
              <xsl:with-param name="obj-id" select="$child-column/@id" />
            </xsl:call-template>
            <xsl:value-of select="fk-member-properties/fk-member.child-column"></xsl:value-of>
          </a>
          <br />
        </xsl:for-each>
      </td>
    </tr>
  </xsl:template>

  <xsl:template match="view">
    <xsl:text>&#xA;</xsl:text>
    <xsl:variable name="viewId" select="@id" />
    <xsl:text>&#xA;</xsl:text>
    <h4 class="TableHeading">
      <img src="images/view.gif" />
      <xsl:text>  </xsl:text>
      <a name="{@id}">
        <xsl:value-of select="view-properties/view.name" />
      </a>
    </h4>
    <xsl:if test="view-properties/view.comment">
      <span class="CommonHeader">Comment</span>
      <p width="80%">
        <pre>
          <h5>
            <xsl:value-of select="view-properties/view.comment" />
          </h5>
        </pre>
      </p>
    </xsl:if>
    <xsl:if test="view-children/select">
      <img src="images/select.gif" />
      <xsl:text>  </xsl:text>
      <span class="CommonHeader">Selects</span>
      <br />
      <xsl:apply-templates select="view-children/select"/>
    </xsl:if>
    <xsl:variable name="view-diagrams" select="/model/model-children/model-subset/model-subset-children/diagram[diagram-children/view-graphics/view-graphics-properties/view-graphics.model-object/@reference-id = $viewId]"/>
    <xsl:if test="$view-diagrams">
      <br />
      <img src="images/diagram.gif" height="15" />
      <xsl:text>  </xsl:text>
      <span class="CommonHeader">Appears in Diagrams</span>
      <table border="2">
        <xsl:text>&#xA;</xsl:text>
        <tr>
          <xsl:text>&#xA;</xsl:text>
          <th class="TablesHeader">
            Diagram
          </th>
        </tr>
        <xsl:for-each select="$view-diagrams">
          <xsl:text>&#xA;</xsl:text>
          <tr>
            <xsl:text>&#xA;</xsl:text>
            <td align="center">
              <a href="#{@id}">
                <xsl:call-template name="add-icon">
                  <xsl:with-param name="obj-id" select="@id" />
                </xsl:call-template>
                <xsl:variable name="imageName" select="diagram-children/view-graphics/view-graphics-properties/view-graphics.as-jpeg/text()" />
                <img src="{$imageName}" border="0"/>
                <br />
                <xsl:value-of select="../../model-subset-properties/model-subset.name" />.<xsl:value-of select="diagram-properties/diagram.name"></xsl:value-of>
              </a>
            </td>
            <xsl:text>&#xA;</xsl:text>
          </tr>
        </xsl:for-each>
      </table>
    </xsl:if>
    <xsl:if test="view-properties/view.evaluated-create-script">
      <br />
      <span class="CommonHeader">Create Script</span>
      <p class="sqlcode">
           <pre>
            <xsl:value-of select="view-properties/view.evaluated-create-script" />
          </pre>
      </p>
    </xsl:if>
  </xsl:template>

  <xsl:template match="view-children/select">
    <xsl:if test="select-properties/select.name">
      <span class="CommonHeader">Name</span>
      <p width="80%">
        <pre>
          <h5>
            <xsl:value-of select="select-properties/select.name" />
          </h5>
        </pre>
      </p>
      <xsl:text>&#xA;&#x9;</xsl:text>
    </xsl:if>
    <xsl:if test="select-children/expression-column">
      <br />
      <img src="images/column.gif" />
      <xsl:text>  </xsl:text>
      <span class="CommonHeader">Select Columns</span>
      <table border="2">
        <xsl:call-template name="expression-column-header"/>
        <xsl:apply-templates select="select-children/expression-column"/>
      </table>
    </xsl:if>
    <xsl:if test="select-children/from-relation">
      <br />
      <img src="images/from-relation.gif" />
      <xsl:text>  </xsl:text>
      <span class="CommonHeader">From</span>
      <table border="2">
        <xsl:call-template name="from-relation-header"/>
        <xsl:apply-templates select="select-children/from-relation"/>
      </table>
    </xsl:if>
    <xsl:if test="select-children/where">
      <br />
      <span class="CommonHeader">Where</span>
      <p width="80%">
        <pre>
          <h5>
            <xsl:value-of select="select-children/where/where-properties/where.sql-ddl" />
          </h5>
        </pre>
      </p>
    </xsl:if>
  </xsl:template>

  <xsl:template name="expression-column-header">
    <xsl:text>&#xA;&#x9;</xsl:text>
    <tr>
      <xsl:text>&#xA;&#x9;&#x9;</xsl:text>
      <th class="TablesHeader" width="150px" align="center">
        <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
        Name
      </th>
      <th class="TablesHeader">
        <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
        Expression
      </th>
      <th class="TablesHeader">
        <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
        Referenced Objects
      </th>
    </tr>
  </xsl:template>

  <xsl:template match="select-children/expression-column">
    <xsl:text>&#xA;&#x9;</xsl:text>
    <tr>
      <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
      <td valign="top">
        <a id="{@id}" name="{@id}">
          <xsl:value-of select="expression-column-properties/expression-column.name" />
        </a>
      </td>
      <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
      <td>
        <xsl:value-of select="expression-column-properties/expression-column.sql-ddl" />
      </td>
      <td>
        <xsl:call-template name="parse-name">
          <xsl:with-param name="ids" select="substring(expression-column-properties/expression-column.referenced-objects/@reference-id, 2, string-length(expression-column-properties/expression-column.referenced-objects/@reference-id) - 2)" />
          <xsl:with-param name="names" select="expression-column-properties/expression-column.referenced-objects" />
        </xsl:call-template>
      </td>
    </tr>
  </xsl:template>

  <xsl:template name="from-relation-header">
    <xsl:text>&#xA;&#x9;</xsl:text>
    <tr>
      <xsl:text>&#xA;&#x9;&#x9;</xsl:text>
      <th class="TablesHeader" width="150px" align="center">
        <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
        Name
      </th>
      <th class="TablesHeader" width="150px">
        <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
        Parent Table
      </th>
    </tr>
  </xsl:template>

  <xsl:template match="select-children/from-relation">
    <xsl:text>&#xA;&#x9;</xsl:text>
    <tr>
      <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
      <td valign="top">
        <a id="{@id}" name="{@id}">
          <xsl:value-of select="from-relation-properties/from-relation.name" />
        </a>
      </td>
      <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
      <td>
        <a href="#{from-relation-properties/from-relation.parent-table/@reference-id}">
          <xsl:call-template name="add-icon">
            <xsl:with-param name="obj-id" select="from-relation-properties/from-relation.parent-table/@reference-id" />
          </xsl:call-template>
          <xsl:value-of select="from-relation-properties/from-relation.parent-table" />
        </a>
      </td>
    </tr>
  </xsl:template>

  <xsl:template name="column-keys">
    <xsl:param name="ids" select="''" />
    <xsl:param name="col-id" select="''" />
    <xsl:param name="pos" select="0" />
    <!--ck ids = <xsl:value-of select="$ids"/><br />
    col id = <xsl:value-of select="$col-id"/><br />
    this = <xsl:value-of select="."/><br />-->
    <xsl:variable name="id-before-comma" select="substring-before($ids, ',')"/>
    <xsl:variable name="id-after-comma" select="substring-after($ids, ',')"/>
    <xsl:variable name="id">
      <xsl:choose>
        <xsl:when test="string-length($id-before-comma)=0">
          <xsl:value-of select="$ids"/>
        </xsl:when>
        <xsl:otherwise>
          <xsl:value-of select="$id-before-comma"/>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:variable>
    <xsl:choose>
      <xsl:when test="$id = $col-id">
        <a href="#{@id}">
          <xsl:call-template name="add-icon">
            <xsl:with-param name="obj-id" select="@id" />
          </xsl:call-template>
          <xsl:value-of select="key-constraint-properties/key-constraint.name"/>
        </a>
        <br />
      </xsl:when>
      <xsl:otherwise>
        <xsl:if test="string-length($id-after-comma) > 0">
          <xsl:call-template name="column-keys">
            <xsl:with-param name="ids" select="$id-after-comma" />
            <xsl:with-param name="col-id" select="$col-id" />
          </xsl:call-template>
        </xsl:if>
      </xsl:otherwise>
    </xsl:choose>
   </xsl:template>

  <xsl:template match="diagram">
    <xsl:text>&#xA;</xsl:text>
    <xsl:variable name="diagramId" select="@id" />
    <xsl:text>&#xA;</xsl:text>
    <xsl:text>&#xA;</xsl:text>
    <h4 class="TableHeading">
      <!--<img src="images/diagram.gif" />-->
      <xsl:text>  </xsl:text>
      <a name="{@id}">
        <xsl:value-of select="../../model-subset-properties/model-subset.name" />.<xsl:value-of select="diagram-properties/diagram.name" />
      </a>
      <xsl:text>&#xA;</xsl:text>
    </h4>

    <xsl:variable name="image-width" select="number(900)"/>
    <xsl:variable name="imageName" select="diagram-properties/diagram.as-jpeg/text()" />

    <xsl:if test="diagram-children/table-graphics/table-graphics-properties/table-graphics.dimensions | diagram-children/view-graphics/view-graphics-properties/view-graphics.dimensions">
      <xsl:variable name="min-left">
        <xsl:for-each select="diagram-children/table-graphics/table-graphics-properties/table-graphics.dimensions | diagram-children/view-graphics/view-graphics-properties/view-graphics.dimensions">
          <xsl:sort data-type="number" select="number(substring-before(., ','))"/>
          <xsl:if test="position()=1">
            <xsl:value-of select="number(substring-before(., ','))"/>
          </xsl:if>
        </xsl:for-each>
      </xsl:variable>
      <xsl:variable name="max-right">
        <xsl:for-each select="diagram-children/table-graphics/table-graphics-properties/table-graphics.dimensions | diagram-children/view-graphics/view-graphics-properties/view-graphics.dimensions">
          <xsl:sort order="descending" data-type="number" select="number(substring-before(substring-after(substring-after(., ','), ','), ','))"/>
          <xsl:if test="position()=1">
            <xsl:value-of select="number(substring-before(substring-after(substring-after(., ','), ','), ','))"/>
          </xsl:if>
        </xsl:for-each>
      </xsl:variable>
      <xsl:variable name="width-scale-factor" select="($max-right - $min-left) div $image-width" />
      <xsl:variable name="min-top">
        <xsl:for-each select="diagram-children/table-graphics/table-graphics-properties/table-graphics.dimensions | diagram-children/view-graphics/view-graphics-properties/view-graphics.dimensions">
          <xsl:sort data-type="number" select="number(substring-before(substring-after(., ','), ','))"/>
          <xsl:if test="position()=1">
            <xsl:value-of select="number(substring-before(substring-after(., ','), ','))"/>
          </xsl:if>
        </xsl:for-each>
      </xsl:variable>

      <xsl:text>&#xA;</xsl:text>
      <map name="{concat('map-', $imageName)}">

      <xsl:for-each select="diagram-children/table-graphics | diagram-children/view-graphics">
        <xsl:text>&#xA;</xsl:text>
        <xsl:variable name="dimens">
          <xsl:choose>
            <xsl:when test="view-graphics-properties/view-graphics.dimensions">
              <xsl:value-of select="view-graphics-properties/view-graphics.dimensions"/>
            </xsl:when>
            <xsl:otherwise>
              <xsl:value-of select="table-graphics-properties/table-graphics.dimensions"/>
            </xsl:otherwise>
          </xsl:choose>
        </xsl:variable>
        <xsl:variable name="ref">
          <xsl:choose>
            <xsl:when test="view-graphics-properties/view-graphics.model-object">
              <xsl:value-of select="view-graphics-properties/view-graphics.model-object/@reference-id"/>
            </xsl:when>
            <xsl:otherwise>
              <xsl:value-of select="table-graphics-properties/table-graphics.model-object/@reference-id"/>
            </xsl:otherwise>
          </xsl:choose>
        </xsl:variable>
        <xsl:variable name="left" select="round((number(substring-before($dimens, ',')) - $min-left) div $width-scale-factor)"/>
        <xsl:variable name="top" select="round((number(substring-before(substring-after($dimens, ','), ',')) - $min-top) div $width-scale-factor)"/>
        <xsl:variable name="right" select="round((number(substring-before(substring-after(substring-after($dimens, ','), ','), ',')) - $min-left) div $width-scale-factor)"/>
        <xsl:variable name="bottom" select="round((number(substring-after(substring-after(substring-after($dimens, ','), ','), ',')) - $min-top) div $width-scale-factor)"/>
        <area shape="rect" coords="{$left},{$top},{$right},{$bottom}" href="#{$ref}">
        </area>
      </xsl:for-each>
      </map>
    </xsl:if>    
    <img src="{$imageName}" width="{$image-width}" usemap="#{concat('map-', $imageName)}"/>
    <br />
  </xsl:template>

  <xsl:template name="tablespace-details">
      <xsl:apply-templates select="/model/model-children/tablespace">
        <xsl:sort select="tablespace-properties/tablespace.name"/>
      </xsl:apply-templates>
  </xsl:template>
 
  <xsl:template match="tablespace">
    <h2 class="TableHeading">
      <img src="images/tablespace.gif" />
      <xsl:text>  </xsl:text>
      <a name="{@id}">
        <xsl:value-of select="tablespace-properties/tablespace.name" />
      </a>
    </h2>
    <xsl:variable name="tablespaceId" select="@id" />
    <table>
      <xsl:if test="tablespace-properties/tablespace.type">
        <tr>
          <td>
            <span class="CommonHeader">Type: </span>
          </td>
          <td>
            <xsl:value-of select="tablespace-properties/tablespace.type/@property-as-string" />
          </td>
        </tr>
      </xsl:if>
      <xsl:apply-templates select="tablespace-properties/*" />
    </table>
    <br/>
    <xsl:if test="tablespace-children/datafile">
      <h2 style="color: #3344CC">
        <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
        Datafiles
      </h2>
      <xsl:for-each select="tablespace-children/datafile">
        <h3 style="color: #3344CC">
          <xsl:value-of select="datafile-properties/datafile.name"/>
        </h3>
        <table>
          <xsl:apply-templates select="datafile-properties/*" />
        </table>
      </xsl:for-each>
    </xsl:if>
    <br/>
    <table border="2">
      <tr>
        <xsl:text>&#xA;&#x9;&#x9;</xsl:text>
        <th class="TablesHeader" width="150px" align="center">
          <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
          Used By
        </th>
      </tr>
      <tr>
        <td>
          <xsl:variable name="used-by">
            <xsl:for-each select="/model/model-children/table[table-children/segment-attributes/segment-attributes-properties/segment-attributes.tablespace/@reference-id=$tablespaceId] |
                      /model/model-children/table/table-children/index[index-children/segment-attributes/segment-attributes-properties/segment-attributes.tablespace/@reference-id=$tablespaceId]">
              <xsl:text>&#xA;&#x9;&#x9;</xsl:text>
              <a href="#{@id}">
                <xsl:call-template name="add-icon">
                  <xsl:with-param name="obj-id" select="@id" />
                  <xsl:with-param name="width" select="15" />
                </xsl:call-template>
                <xsl:choose>
                  <xsl:when test="table-properties/table.name">
                    <xsl:value-of select="table-properties/table.name"/>
                  </xsl:when>
                  <xsl:when test="index-properties/index.name">
                    <xsl:value-of select="../../table-properties/table.name"/>.<xsl:value-of select="index-properties/index.name"/>
                  </xsl:when>
                </xsl:choose>
              </a>
              <br />
            </xsl:for-each>
          </xsl:variable>
          <xsl:choose>
            <xsl:when test="string($used-by)!=''">
              <xsl:copy-of select="$used-by"/>
            </xsl:when>
            <xsl:otherwise>
              &lt;Not Used&gt;
            </xsl:otherwise>
          </xsl:choose>
        </td>
      </tr>
    </table>
    <xsl:if test="string(tablespace-properties/tablespace.evaluated-create-script) != ''">
      <br/>
      <span class="CommonHeader">Create Script</span>
      <p class="sqlcode">
        <pre>
          <xsl:value-of select="tablespace-properties/tablespace.evaluated-create-script" />
        </pre>
      </p>
    </xsl:if>
    <xsl:if test="string(tablespace-properties/tablespace.evaluated-drop-script) != ''">
      <br/>
      <span class="CommonHeader">Drop Script</span>
      <p class="sqlcode">
        <pre>
          <xsl:value-of select="tablespace-properties/tablespace.evaluated-drop-script" />
        </pre>
      </p>
    </xsl:if>

  </xsl:template>

  <xsl:template match="user">
    <h2 class="TableHeading">
      <img src="images/user.gif" />
      <xsl:text>  </xsl:text>
      <a name="{@id}">
        <xsl:value-of select="user-properties/user.name" />
      </a>
    </h2>
    <xsl:variable name="tablespaceId" select="@id" />
    <table>
      <xsl:apply-templates select="user-properties/*" />
    </table>
  </xsl:template>

  <xsl:template name="column-domain-details">
    <table border="2">
      <tr>
        <xsl:text>&#xA;&#x9;&#x9;</xsl:text>
        <th class="TablesHeader" width="150px" align="center">
          <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
          Name
        </th>
        <xsl:text>&#xA;&#x9;&#x9;</xsl:text>
        <th class="TablesHeader" width="150px" align="center">
          <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
          Datatype
        </th>
        <xsl:text>&#xA;&#x9;&#x9;</xsl:text>
        <th class="TablesHeader" width="150px" align="center">
          <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
          Used By
        </th>
      </tr>
      <xsl:apply-templates select="/model/model-children/column-domain">
        <xsl:sort select="column-domain-properties/column-domain.name"/>
      </xsl:apply-templates>
    </table>
  </xsl:template>

  <xsl:template match="column-domain">
    <xsl:variable name="column-domainId" select="@id" />
    <tr>
      <td>
        <img src="images/column-domain.gif" />
        <xsl:text>  </xsl:text>
        <a name="{@id}" id="{@id}">
          <xsl:value-of select="column-domain-properties/column-domain.name" />
        </a>
      </td>
      <td>
        <xsl:variable name="type-elem" select="key('IDs', column-domain-properties/column-domain.datatype/@reference-id)"/>
        <xsl:choose>
          <xsl:when test="column-domain-properties/column-domain.datatype/@property-as-string">
            <xsl:value-of select="column-domain-properties/column-domain.datatype/@property-as-string" />
          </xsl:when>
          <xsl:when test="$type-elem and not($type-elem/type-properties/type.builtin)">
            <a href="#{$type-elem/@id}">
              <xsl:call-template name="add-icon">
                <xsl:with-param name="obj-id" select="$type-elem/@id" />
              </xsl:call-template>
              <xsl:value-of select="column-domain-properties/column-domain.datatype" />
            </a>
          </xsl:when>
          <xsl:otherwise>
            <xsl:value-of select="column-domain-properties/column-domain.datatype" />
          </xsl:otherwise>
        </xsl:choose>
      </td>
      <td>
        <xsl:for-each select="/model/model-children/table/table-children/column[@inherits-from=$column-domainId] |
                  /model/model-children/column-domain[@inherits-from=$column-domainId]">
          <xsl:text>&#xA;&#x9;&#x9;</xsl:text>
          <a href="#{@id}">
            <xsl:call-template name="add-icon">
              <xsl:with-param name="obj-id" select="@id" />
              <xsl:with-param name="width" select="15" />
            </xsl:call-template>
            <xsl:choose>
              <xsl:when test="column-properties/column.name">
                <xsl:value-of select="../../table-properties/table.name"/>.<xsl:value-of select="column-properties/column.name"/>
              </xsl:when>
              <xsl:when test="column-domain-properties/column-domain.name">
                <xsl:value-of select="column-domain-properties/column-domain.name"/>
              </xsl:when>
            </xsl:choose>
          </a>
          <br />
        </xsl:for-each>
      </td>
    </tr>
  </xsl:template>

  <xsl:template name="type-details">
    <table border="2">
      <tr>
        <xsl:text>&#xA;&#x9;&#x9;</xsl:text>
        <th class="TablesHeader" width="150px" align="center">
          <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
          Name
        </th>
        <xsl:text>&#xA;&#x9;&#x9;</xsl:text>
        <th class="TablesHeader" width="150px" align="center">
          <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
          Type
        </th>
        <xsl:text>&#xA;&#x9;&#x9;</xsl:text>
        <th class="TablesHeader" width="150px" align="center">
          <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
          Used By
        </th>
      </tr>
      <xsl:apply-templates select="/model/model-children/type[not(type-properties/type.builtin)]">
        <xsl:sort select="type-properties/type.name"/>
      </xsl:apply-templates>
    </table>
  </xsl:template>

  <xsl:template match="type">
    <xsl:variable name="typeId" select="@id" />
    <tr>
      <td>
        <img src="images/type.gif" />
        <xsl:text>  </xsl:text>
        <a name="{@id}" id="{@id}">
          <xsl:value-of select="type-properties/type.name" />
        </a>
      </td>
      <td>
        <xsl:value-of select="type-properties/type.type/@property-as-string" />
      </td>
      <td>
        <xsl:for-each select="/model/model-children/table/table-children/column[column-properties/column.datatype/@reference-id=$typeId] |
                  /model/model-children/column-domain[column-domain-properties/column-domain.datatype/@reference-id=$typeId]">
          <xsl:text>&#xA;&#x9;&#x9;</xsl:text>
          <a href="#{@id}">
            <xsl:call-template name="add-icon">
              <xsl:with-param name="obj-id" select="@id" />
              <xsl:with-param name="width" select="15" />
            </xsl:call-template>
            <xsl:choose>
              <xsl:when test="column-properties/column.name">
                <xsl:value-of select="../../table-properties/table.name"/>.<xsl:value-of select="column-properties/column.name"/>
              </xsl:when>
              <xsl:when test="column-domain-properties/column-domain.name">
                <xsl:value-of select="column-domain-properties/column-domain.name"/>
              </xsl:when>
            </xsl:choose>
          </a>
          <br />
        </xsl:for-each>
      </td>
    </tr>
  </xsl:template>

  <xsl:template match="tablespace-properties/* | datafile-properties/* | table-properties/* | segment-attributes-properties/* | physical-attributes-properties/* | storage-properties/* | user-properties/*">
    <xsl:if test="@display-name != 'Name' and @display-name != 'Comment' and @display-name != 'Type' and substring(@display-name, 1, 10)!='Evaluated '">
      <tr>
        <td width="200px">
          <span class="CommonHeader">
            <xsl:value-of select="@display-name" />:
          </span>
        </td>
        <td>
          <xsl:choose>
            <xsl:when test="@property-as-string">
              <xsl:value-of select="@property-as-string"/>
            </xsl:when>
            <xsl:when test="@reference-id and key('IDs', @reference-id)">
              <a href="#{@reference-id}">
                <xsl:call-template name="add-icon">
                  <xsl:with-param name="obj-id" select="@reference-id" />
                </xsl:call-template>
                <xsl:value-of select="." />
              </a>
            </xsl:when>
            <xsl:when test="@reference-id">
              <xsl:call-template name="add-icon">
                <xsl:with-param name="obj-id" select="@reference-id" />
              </xsl:call-template>
              <xsl:value-of select="." />
            </xsl:when>
            <xsl:otherwise>
              <xsl:value-of select="." />
            </xsl:otherwise>
          </xsl:choose>
        </td>
      </tr>
    </xsl:if>
  </xsl:template>

  <xsl:template name="add-icon">
    <xsl:param name="obj-id" select="''" />
    <xsl:if test="$obj-id != ''">
      <xsl:for-each select="key('IDs', $obj-id)">
        <xsl:variable name="filename">
          <xsl:choose>
            <xsl:when test="name()='key-constraint'">
              <xsl:choose>
                <xsl:when test="key-constraint-properties/key-constraint.type/@property-as-string='Unique'">
                  <xsl:value-of select="'unique-key-constraint'"/>
                </xsl:when>
                <xsl:otherwise>
                  <xsl:value-of select="name()"/>
                </xsl:otherwise>
              </xsl:choose>
            </xsl:when>
            <xsl:otherwise>
              <xsl:value-of select="name()"/>
            </xsl:otherwise>
          </xsl:choose>
        </xsl:variable>
        <img src="images/{$filename}.gif"/>
        <xsl:text>  </xsl:text>
      </xsl:for-each>
    </xsl:if>
  </xsl:template>

  <xsl:template name="parse-name">
    <xsl:param name="ids" select="''" />
    <xsl:param name="names" select="''" />

    <xsl:variable name="id-before-comma" select="substring-before($ids, ',')"/>
    <xsl:variable name="id-after-comma" select="substring-after($ids, ',')"/>
    <xsl:variable name="name-before-comma" select="substring-before($names, ',')"/>
    <xsl:variable name="name-after-comma" select="substring-after($names, ',')"/>
    <xsl:variable name="id">
      <xsl:choose>
        <xsl:when test="string-length($id-before-comma)=0">
          <xsl:value-of select="$ids"/>
        </xsl:when>
        <xsl:otherwise>
          <xsl:value-of select="$id-before-comma"/>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:variable>
    <xsl:variable name="name">
      <xsl:choose>
        <xsl:when test="string-length($name-before-comma)=0">
          <xsl:value-of select="$names"/>
        </xsl:when>
        <xsl:otherwise>
          <xsl:value-of select="$name-before-comma"/>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:variable>
    <a href="#{$id}">
      <xsl:call-template name="add-icon">
        <xsl:with-param name="obj-id" select="$id" />
      </xsl:call-template>
      <xsl:variable name="ref-obj" select="key('IDs', $id)"/>
      <xsl:for-each select="$ref-obj">
        <xsl:choose>
          <xsl:when test="name()='column'">
            <xsl:value-of select="$ref-obj/../../table-properties/table.name"/>.
          </xsl:when>
        </xsl:choose>
      </xsl:for-each>
      <xsl:value-of select="$name"></xsl:value-of>
    </a>
    <xsl:if test="string-length($id-after-comma) > 0">
      <br />
      <xsl:call-template name="parse-name">
        <xsl:with-param name="ids" select="$id-after-comma" />
        <xsl:with-param name="names" select="$name-after-comma" />
      </xsl:call-template>
    </xsl:if>
  </xsl:template>

  <xsl:template name="parse-fk-name">
    <xsl:param name="ids" select="''" />
    <xsl:param name="child-col-id" select="''" />

    <xsl:variable name="id-before-comma" select="substring-before($ids, ',')"/>
    <xsl:variable name="id-after-comma" select="substring-after($ids, ',')"/>
    <xsl:variable name="id">
      <xsl:choose>
        <xsl:when test="string-length($id-before-comma)=0">
          <xsl:value-of select="$ids"/>
        </xsl:when>
        <xsl:otherwise>
          <xsl:value-of select="$id-before-comma"/>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:variable>
    <xsl:variable name="rel-id" select="key('IDs', $id)"/>
    <xsl:for-each select="$rel-id/relation-children/fk-member/fk-member-properties/fk-member.child-column[@reference-id=$child-col-id]">
      <xsl:variable name="parent-column" select="key('IDs', ../fk-member.parent-column/@reference-id)"/>
      <a href="#{$parent-column/@id}">
        <xsl:call-template name="add-icon">
          <xsl:with-param name="obj-id" select="$parent-column/@id" />
        </xsl:call-template>
        <xsl:value-of select="$parent-column/../../table-properties/table.name" />.<xsl:value-of select="../fk-member.parent-column"></xsl:value-of>
      </a>
    </xsl:for-each>
    <xsl:if test="string-length($id-after-comma) > 0">
      <br />
      <xsl:call-template name="parse-fk-name">
        <xsl:with-param name="ids" select="$id-after-comma" />
        <xsl:with-param name="child-col-id" select="$child-col-id" />
      </xsl:call-template>
    </xsl:if>
  </xsl:template>

</xsl:stylesheet>
