Drop Down MenusCSS Drop Down MenuPure CSS Dropdown Menu

Default XSL Stylesheet

For reference, and as a starting point for your own stylesheets, the builtin stylesheet that pgadmin uses to render XHTML report output from XML report data is included below. This stylesheet includes the default HTML stylesheet that will be embedded into a report to give it the pgadmin look and feel.
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" indent="yes" encoding="utf-8" />
<xsl:template match="/report">

<html>
  <head>
    <xsl:if test="header/title != ''">
      <title><xsl:value-of select="header/title" /></title>
    </xsl:if>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <style type="text/css">
      body {  font-family: verdana, helvetica, sans-serif; margin: 0px; padding: 0; }
      h1 { font-weight: bold; font-size: 150%; border-bottom-style: solid; border-bottom-width: 2px; margin-top: 0px; padding-bottom: 0.5ex; color: #EBA525; overflow: hidden; text-overflow: ellipsis; }
      h2 { font-size: 130%; padding-bottom: 0.5ex; color: #47678E; border-bottom-style: solid; border-bottom-width: 2px; }
      h3 { font-size: 110%; padding-bottom: 0.5ex; color: #000000; }
      th { text-align: left; background-color: #47678E; color: #EBA525; }
      #ReportHeader { padding: 10px; background-color: #47678E; color: #EEEEEE; border-bottom-style: solid; border-bottom-width: 2px; border-color: #EBA525; }
      #ReportHeader th { width: 25%; white-space: nowrap; vertical-align: top; }
      #ReportHeader td { vertical-align: top; color: #EEEEEE; }
      #ReportNotes { padding: 10px; background-color: #EEEEEE; font-size: 80%; border-bottom-style: solid; border-bottom-width: 2px; border-color: #EBA525; }
      .ReportSQL { margin-bottom: 10px; padding: 10px; display: block; background-color: #eeeeee; font-family: monospace; }
      #ReportDetails { margin-left: 10px; margin-right: 10px; margin-bottom: 10px; }
      #ReportDetails td, th { font-size: 80%; margin-left: 2px; margin-right: 2px; }
      #ReportDetails th { border-bottom-color: #777777; border-bottom-style: solid; border-bottom-width: 2px; }
      .ReportDetailsOddDataRow { background-color: #dddddd; }
      .ReportDetailsEvenDataRow { background-color: #eeeeee; }
      .ReportTableHeaderCell { background-color: #dddddd; color: #47678E; vertical-align: top; font-size: 80%; white-space: nowrap; }
      .ReportTableValueCell { vertical-align: top; font-size: 80%; white-space: nowrap; }
      .ReportTableInfo { font-size: 80%; font-style: italic; }
      #ReportFooter { font-weight: bold; font-size: 80%; text-align: right; background-color: #47678E; color: #eeeeee; margin-top: 10px; padding: 2px; border-bottom-style: solid; border-bottom-width: 2px; border-top-style: solid; border-top-width: 2px; border-color: #EBA525; }
      #ReportFooter a { color: #EBA525; text-decoration: none; }
    </style>
  </head>

  <body>
    <div id="ReportHeader">

    <xsl:if test="header/title != ''">
      <h1><xsl:value-of select="header/title" /></h1>
    </xsl:if>

    <xsl:if test="header/generated != ''">
      <b>Generated: </b><xsl:value-of select="header/generated" /><br />
    </xsl:if>

    <xsl:if test="header/server != ''">
      <b>Server: </b><xsl:value-of select="header/server" /><br />
    </xsl:if>

    <xsl:if test="header/database != ''">
      <b>Database: </b><xsl:value-of select="header/database" /><br />
    </xsl:if>

    <xsl:if test="header/catalog != ''">
      <b>Catalog: </b><xsl:value-of select="header/catalog" /><br />
    </xsl:if>

    <xsl:if test="header/schema != ''">
      <b>Schema: </b><xsl:value-of select="header/schema" /><br />
    </xsl:if>

    <xsl:if test="header/table != ''">
      <b>Table: </b><xsl:value-of select="header/table" /><br />
    </xsl:if>

    <xsl:if test="header/job != ''">
      <b>Job: </b><xsl:value-of select="header/job" /><br />
    </xsl:if>

    </div>

    <xsl:if test="header/notes != ''">
      <div id="ReportNotes">
      <b>Notes: </b><br /><br />
      <xsl:call-template name="substitute">
         <xsl:with-param name="string" select="header/notes" />
      </xsl:call-template>
      </div>
    </xsl:if>

    <div id="ReportDetails">
      <xsl:apply-templates select="section" >
        <xsl:sort select="@number" data-type="number" order="ascending" />
      </xsl:apply-templates>
    </div>

    <div id="ReportFooter">
Report generated by <a href="http://www.enterprisedb.com/">Postgres Enterprise Manager&#8482;</a>
    </div>

    <br />
  </body>
</html>

</xsl:template>

<xsl:template match="section">
  <xsl:if test="../section[@id = current()/@id]/@name != ''">
    <h2><xsl:value-of select="../section[@id = current()/@id]/@name" /></h2>
  </xsl:if>

  <xsl:if test="count(../section[@id = current()/@id]/table/columns/column) > 0">
    <div style=overflow:auto>
      <table>
        <tr>
          <xsl:apply-templates select="../section[@id = current()/@id]/table/columns/column">
            <xsl:sort select="@number" data-type="number" order="ascending" />
            <xsl:with-param name="count" select="count(../section[@id = current()/@id]/table/columns/column)" />
          </xsl:apply-templates>
        </tr>
        <xsl:apply-templates select="../section[@id = current()/@id]/table/rows/*" mode="rows">
          <xsl:sort select="@number" data-type="number" order="ascending" />
          <xsl:with-param name="column-meta" select="../section[@id = current()/@id]/table/columns/column" />
        </xsl:apply-templates>
      </table>
    </div>
    <br />
    <xsl:if test="../section[@id = current()/@id]/table/info != ''">
      <p class="ReportTableInfo"><xsl:value-of select="../section[@id = current()/@id]/table/info" /></p>
    </xsl:if>
  </xsl:if>

  <xsl:if test="../section[@id = current()/@id]/sql != ''">
    <pre class="ReportSQL">
      <xsl:call-template name="substitute">
         <xsl:with-param name="string" select="../section[@id = current()/@id]/sql" />
      </xsl:call-template>
    </pre>
  </xsl:if>
</xsl:template>

<xsl:template match="column">
  <xsl:param name="count" />
  <th class="ReportTableHeaderCell">
  <xsl:attribute name="width"><xsl:value-of select="100 div $count" />%</xsl:attribute>
    <xsl:call-template name="substitute">
       <xsl:with-param name="string" select="@name" />
    </xsl:call-template>
  </th>
</xsl:template>

<xsl:template match="*" mode="rows">
  <xsl:param name="column-meta" />
  <tr>
  <xsl:choose>
  <xsl:when test="position() mod 2 != 1">
    <xsl:attribute name="class">ReportDetailsOddDataRow</xsl:attribute>
  </xsl:when>
  <xsl:otherwise>
    <xsl:attribute name="class">ReportDetailsEvenDataRow</xsl:attribute>
  </xsl:otherwise>
  </xsl:choose>
    <xsl:apply-templates select="$column-meta" mode="cells">
      <xsl:with-param name="row" select="." />
    </xsl:apply-templates>
  </tr>
</xsl:template>

<xsl:template match="*" mode="cells">
  <xsl:param name="row" />
    <td class="ReportTableValueCell">
    <xsl:choose>
      <xsl:when test="$row/@*[name() = current()/@id]|$row/*[name() = current()/@id] != ''">
        <xsl:call-template name="substitute">
          <xsl:with-param name="string" select="$row/@*[name() = current()/@id]|$row/*[name() = current()/@id]" />
        </xsl:call-template>
      </xsl:when>
      <xsl:otherwise>
        <xsl:text> </xsl:text>
      </xsl:otherwise>
    </xsl:choose>
  </td>
</xsl:template>

<xsl:template name="substitute">
   <xsl:param name="string" />
   <xsl:param name="from" select="'
'" />
   <xsl:param name="to">
      <br />
   </xsl:param>
   <xsl:choose>
      <xsl:when test="contains($string, $from)">
         <xsl:value-of select="substring-before($string, $from)" />
         <xsl:copy-of select="$to" />
         <xsl:call-template name="substitute">
            <xsl:with-param name="string" select="substring-after($string, $from)" />
            <xsl:with-param name="from" select="$from" />
            <xsl:with-param name="to" select="$to" />
         </xsl:call-template>
      </xsl:when>
      <xsl:otherwise>
         <xsl:value-of select="$string" />
      </xsl:otherwise>
   </xsl:choose>
</xsl:template>

</xsl:stylesheet>

Comments

Popular posts from this blog

How to find the server is whether standby (slave) or primary(master) in Postgresql replication ?

7 Steps to configure BDR replication in postgresql

How to Get Table Size, Database Size, Indexes Size, schema Size, Tablespace Size, column Size in PostgreSQL Database

Ora2PG - Oracle/MySQL to Postgres DB migration Version 20.0

PostgreSQL Introduction