<!-- <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> -->
<!-- 			</object> -->
<!-- 			<object name="Table"> -->
<!-- 				<properties> -->
<!-- 					<property name="Name" /> -->
<!-- 				</properties> -->
<!-- 			</object> -->
<!-- 			<object name="View"> -->
<!-- 				<properties> -->
<!-- 					<property name="Name" /> -->
<!-- 				</properties> -->
<!-- 				<children> -->
<!-- 					<object name="Select"> -->
<!-- 						<properties> -->
<!-- 							<property name="Name" /> -->
<!-- 						</properties> -->
<!-- 					</object> -->
<!-- 				</children> -->
<!-- 			</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 Model Subsets.  It first display the Model Subsets - showing which Tables and Views they contain.
            It also shows a list of Tables and Views that aren't in any Model Subset.  It then displays a list of tables and view - indicating which Model Subsets
            they are in.
            </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>
        <!--Model Subsets-->
        <xsl:if test ="/model/model-children/model-subset">
          <h2>
            <span onclick="toggle(UDSubsetsList,UDSubsetsEC);">
              <img src="images/expand.gif" height="13" id="UDSubsetsEC"/>
            </span>
            <xsl:text>  </xsl:text>
            <a href="#ModelSubsets">
              <img src="images/model-subset.gif" />
              Model Subset
            </a>
          </h2>
          <div id="UDSubsetsList" style="display: none;">
            <ul>
              <xsl:for-each select="/model/model-children/model-subset">
                <xsl:sort select="model-subset-properties/model-subset.name"/>
                <li>
                  <a href="#{@id}">
                    <xsl:value-of select="model-subset-properties/model-subset.name"/>
                  </a>
                </li>
              </xsl:for-each>
            </ul>
          </div>
        </xsl:if>
        <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>

        <xsl:if test ="/model/model-children/model-subset">
          <h1>
            <a id="ModelSubsets" name="ModelSubsets">
              <img src="images/model-subset.gif" width="20"/>
              <xsl:text>  </xsl:text>
              <xsl:text>Model Subsets</xsl:text>
            </a>
          </h1>
          <xsl:call-template name="model-subset-details"/>
        </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>
    </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>
  <br />
  <table border="2">
    <th class="TablesHeader" align="center">
      In Model Subsets
    </th>
    <xsl:variable name="in-ms">
      <xsl:for-each select="/model/model-children/model-subset/model-subset-properties/model-subset.attached-tables">
        <xsl:if test="contains(@reference-id, $tableId)">
          <tr>
            <td>
              <a href="#{../../@id}">
                <img src="images/model-subset.gif" />
                <xsl:text>  </xsl:text>
                <xsl:value-of select="../model-subset.name"/>
              </a>
            </td>
          </tr>
        </xsl:if>
      </xsl:for-each>
    </xsl:variable>
    <xsl:choose>
      <xsl:when test="string($in-ms)!=''">
        <xsl:copy-of select="$in-ms"/>
      </xsl:when>
      <xsl:otherwise>
        <tr><td>None</td></tr>
      </xsl:otherwise>
    </xsl:choose>
  </table>
  </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>
    <br />
    <table border="2">
      <th class="TablesHeader" align="center">
        In Model Subsets
      </th>
      <xsl:variable name="in-ms">
        <xsl:for-each select="/model/model-children/model-subset/model-subset-properties/model-subset.attached-tables">
          <xsl:if test="contains(@reference-id, $viewId)">
            <tr>
              <td>
                <a href="#{../../@id}">
                  <img src="images/model-subset.gif" />
                  <xsl:text>  </xsl:text>
                  <xsl:value-of select="../model-subset.name"/>
                </a>
              </td>
            </tr>
          </xsl:if>
        </xsl:for-each>
      </xsl:variable>
      <xsl:choose>
        <xsl:when test="string($in-ms)!=''">
          <xsl:copy-of select="$in-ms"/>
        </xsl:when>
        <xsl:otherwise>
          <tr>
            <td>None</td>
          </tr>
        </xsl:otherwise>
      </xsl:choose>
    </table>
  </xsl:template>


  <xsl:template name="model-subset-details">
    <table border="2">
      <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>
        Tables/Views
      </th>
      <xsl:apply-templates select="/model/model-children/model-subset">
        <xsl:sort select="model-subset-properties/model-subset.name"/>
      </xsl:apply-templates>
    </table>
    <br />
    <table border="2">
      <th class="TablesHeader" width="150px" align="center">
        <xsl:text>&#xA;&#x9;&#x9;&#x9;</xsl:text>
        Tables/Views not in any Model Subset
      </th>
      <xsl:for-each select="/model/model-children/table">
        <xsl:sort select="table-properties/table.name"/>
        <xsl:variable name="tableId" select="@id" />
        <xsl:variable name="model_sub_names">
          <xsl:for-each select="/model/model-children/model-subset/model-subset-properties/model-subset.attached-tables">
            <xsl:if test="contains(@reference-id, $tableId)">
              <xsl:text> </xsl:text>
            </xsl:if>
          </xsl:for-each>
        </xsl:variable>
        <xsl:if test="string($model_sub_names)=''">
          <tr>
            <td>
              <a href="#{$tableId}">
                <img src="images/table.gif" />
                <xsl:text>  </xsl:text>
                <xsl:value-of select="table-properties/table.name"/>
              </a>
            </td>
          </tr>
        </xsl:if>
      </xsl:for-each>
      <xsl:for-each select="/model/model-children/view">
        <xsl:sort select="view-properties/view.name"/>
        <xsl:variable name="viewId" select="@id" />
        <xsl:variable name="model_sub_names">
          <xsl:for-each select="/model/model-children/model-subset/model-subset-properties/model-subset.attached-tables">
            <xsl:if test="contains(@reference-id, $viewId)">
              <xsl:text>x</xsl:text>
            </xsl:if>
          </xsl:for-each>
        </xsl:variable>
        <xsl:if test="string($model_sub_names)=''">
          <tr>
            <td>
              <a href="#{$viewId}">
                <img src="images/view.gif" />
                <xsl:text>  </xsl:text>
                <xsl:value-of select="view-properties/view.name"/>
              </a>
            </td>
          </tr>
        </xsl:if>
      </xsl:for-each>
    </table>
  </xsl:template>

  <xsl:template match="model-subset">
    <xsl:variable name="model-subsetId" select="@id" />
    <tr>
      <td>
        <img src="images/model-subset.gif" />
        <xsl:text>  </xsl:text>
        <a name="{@id}" id="{@id}">
          <xsl:value-of select="model-subset-properties/model-subset.name" />
        </a>
      </td>
      <td>
        <xsl:call-template name="parse-name">
          <xsl:with-param name="ids" select="substring(model-subset-properties/model-subset.attached-tables/@reference-id, 2, string-length(model-subset-properties/model-subset.attached-tables/@reference-id) - 2)" />
          <xsl:with-param name="names" select="model-subset-properties/model-subset.attached-tables" />
        </xsl:call-template>
      </td>
    </tr>
  </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:stylesheet>
