more stylesheet fun

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Try running the stylesheet below for an all-in-one look at
install-time (or yum-time) package groups.

Sample output: http://www.cse.ogi.edu/~heinlein/comps.html

If you save the stylesheet as, say, comps2html.xsl, then invocation is
simple:

  xsltproc -o comps.html --novalid comps2html.xsl comps.xml

-- Paul Heinlein <heinlein@xxxxxxxxxxx>

<?xml version='1.0'?>
<!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp "&#160;"> ]>
<xsl:stylesheet version="1.0"
                   mlns="http://www.w3.org/1999/xhtml";
              xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

  <xsl:output method="xml"
              indent="yes"
            encoding="iso-8859-1"
      doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
      doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>

  <!-- the main event -->
  <xsl:template match="comps">
    <html lang="en-US">
      <head>
        <title>comps.xml</title>
        <xsl:call-template name="default.css"/>
      </head>
      <body>
    <xsl:call-template name="intro.text"/>
    <table width="95%">
      <tr>
        <th>Name</th>
        <th>Default</th>
        <th>Visible</th>
        <th>Description</th>
      </tr>
      <xsl:apply-templates select="group" mode="group.chart"/>
    </table>
    <p>&nbsp;</p>
    <table width="95%">
      <tr>
        <th>Name</th>
        <th>Groups Req.</th>
        <th>Packages Req.</th>
      </tr>
    <xsl:apply-templates select="group" mode="package.chart"/>
    </table>
      </body>
    </html>
  </xsl:template>


  <!-- for listing descriptions, whether group is default, ... -->
  <xsl:template match="group" mode="group.chart">
    <xsl:variable name="id" select="id"/>
    <tr>
      <td id="{$id}-info">
        <a href="#{$id}-detail"><xsl:value-of select="name"/></a>
      </td>
      <td><xsl:value-of select="default"/>&nbsp;</td>
      <td><xsl:value-of select="uservisible"/>&nbsp;</td>
      <td><xsl:value-of select="description"/>&nbsp;</td>
    </tr>
  </xsl:template>

  <!-- for listing groups and packages req. by this group -->
  <xsl:template match="group" mode="package.chart">
    <xsl:variable name="id" select="id"/>
    <tr>
      <td id="{$id}-detail">
        <a href="#{$id}-info"><xsl:value-of select="name"/></a>
      </td>
      <td><xsl:apply-templates select="grouplist"/></td>
      <td><xsl:apply-templates select="packagelist"/></td>
    </tr>
  </xsl:template>

  <!-- templates for grouplist and children -->
  <xsl:template match="grouplist">
    <table width="100%">
      <xsl:apply-templates select="*" mode="html.table"/>
    </table>
  </xsl:template>

  <xsl:template match="groupreq" mode="html.table">
    <tr>
      <xsl:call-template name="sub.table.row">
        <xsl:with-param name="leftcol" select="."/>
        <xsl:with-param name="rightcol" select="'&nbsp;'"/>
      </xsl:call-template>
    </tr>
  </xsl:template>

  <xsl:template match="metapkg" mode="html.table">
    <tr>
      <xsl:call-template name="sub.table.row">
        <xsl:with-param name="leftcol" select="."/>
        <xsl:with-param name="rightcol" select="@type"/>
      </xsl:call-template>
    </tr>
  </xsl:template>

  <!-- templates for packagelist and children -->
  <xsl:template match="packagelist">
    <table width="100%">
      <xsl:apply-templates select="*" mode="html.table"/>
    </table>
  </xsl:template>

  <xsl:template match="packagereq" mode="html.table">
    <tr>
      <xsl:call-template name="sub.table.row">
        <xsl:with-param name="leftcol" select="."/>
        <xsl:with-param name="rightcol" select="@type"/>
      </xsl:call-template>
    </tr>
  </xsl:template>


  <!-- named templates -->
  <xsl:template name="sub.table.row">
    <xsl:param name="leftcol"/>
    <xsl:param name="rightcol"/>
    <xsl:variable name="last">
      <xsl:choose>
        <xsl:when test="position() = last()">1</xsl:when>
        <xsl:otherwise>0</xsl:otherwise>
      </xsl:choose>
    </xsl:variable>
    <xsl:choose>
      <xsl:when test="$last = '1'">
        <td style="border-style: none;"><xsl:value-of select="$leftcol"/></td>
        <td style="border-style: none; text-align: right;">
            <xsl:value-of select="$rightcol"/>
        </td>
      </xsl:when>
      <xsl:otherwise>
        <td><xsl:value-of select="$leftcol"/></td>
        <td style="text-align: right;"><xsl:value-of select="$rightcol"/></td>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>

  <xsl:template name="default.css">
    <xsl:variable name="color" select="'#990000'"/>
    <style type="text/css">
      a, a:link, a:active, a:visited {
        color: <xsl:value-of select="$color"/>;
        }
      body {
        font-size: small;
        background-color: white;
        color: black;
        width: 700px;
        }
      td {
        border-bottom: 1px solid #999;
        font-size: small;
        vertical-align: top;
        }
      th {
        color: white;
        background-color: <xsl:value-of select="$color"/>;
        font-weight: bold;
        text-align: left;
        padding-right: 15px;
        }
    </style>
  </xsl:template>

  <xsl:template name="intro.text">
    <p>
      Below is an outline of the package groups available at installation
      and, later, via yum and other package-management tools. The top
      table contains descriptions of each group. To see a detailed view
      of the packages that get installed with each group, click on the
      group name.
    </p>
  </xsl:template>

</xsl:stylesheet>


_______________________________________________
Rpm-list mailing list
Rpm-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/rpm-list

[Index of Archives]     [RPM Ecosystem]     [Linux Kernel]     [Red Hat Install]     [PAM]     [Red Hat Watch]     [Red Hat Development]     [Red Hat]     [Gimp]     [Yosemite News]     [IETF Discussion]

  Powered by Linux