Changeset 4872


Ignore:
Timestamp:
2003-07-03T15:26:58+12:00 (21 years ago)
Author:
kjdon
Message:

a much simpler (but less flexible) classifier stylesheet

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gsdl3/web/interfaces/default/transform/classifier.xsl

    r4866 r4872  
    1010
    1111  <xsl:output method="html"/> 
    12  
    13  
     12
    1413  <xsl:template name="pageHead">
    1514    <head>
     
    5453    <xsl:call-template name="greenBar"/>
    5554  </xsl:template>
    56  
    57 <!--
    58   <xsl:template match="classifier|classifierNode" mode="process-children">
    59     <xsl:param name="collName"/>
    60     <xsl:param name="serviceName"/>
    61     <xsl:if test="classifierNode|documentNode">
    62       <table width='100%'>
    63     <xsl:for-each select="classifierNode|documentNode">
    64       <tr><xsl:apply-templates select="."/>
    65         <xsl:if test="name()='classifierNode' and @interleave='true'">
    66           <p />
    67           <xsl:apply-templates select="." mode="process-children"/>
    68       </tr>
    69     </xsl:for-each>
    70       </table>
    71       <xsl:if test="@interleave='false' and classifierNode">
    72     <table width='100%'>
    73       <xsl:for-each select="classifierNode">
    74         <tr><xsl:apply-templates select="." mode="process-children"/></tr>
    75       </xsl:for-each>
    76     </table>
    77       </xsl:if>
    78     </xsl:if>
    79   </xsl:template>
    80   -->
    81  
    82   <!-- default doc node template: icon and title -->
    83   <xsl:template match="documentNode">
    84     <xsl:param name="collName"/>
    85     <td><a href="{$library_name}?a=d&amp;c={$collName}&amp;d={@nodeID}&amp;dt={@documentType}"><xsl:apply-templates select="." mode="displayNodeIcon"/></a></td><td align='left'><xsl:value-of select="metadataList/metadata[@name='Title']"/></td>
    86   </xsl:template>
    87  
    88   <!-- default classifier node template: icon + title -->
    89   <xsl:template match="classifierNode">
    90     <xsl:param name="collName"/>
    91     <xsl:param name="serviceName"/>
    92     <td><a><xsl:attribute name='href'><xsl:value-of select='$library_name'/>?a=b&amp;rt=r&amp;s=<xsl:value-of select='$serviceName'/>&amp;c=<xsl:value-of select='$collName'/>&amp;cl=<xsl:value-of select='@nodeID'/><xsl:if test="classifierNode|documentNode">.pr</xsl:if></xsl:attribute><img src='interfaces/default/images/bshelf.gif' border='0' width='20' height='16' /></a></td><td align='left'><xsl:value-of select="metadataList/metadata[@name='Title']"/></td>
    93   </xsl:template>
    94  
    95   <!-- recursively process all nodes and documents -->
    96  
     55
    9756  <xsl:template match="classifier">
    9857    <xsl:param name="collName"/>
    9958    <xsl:param name="serviceName"/>
    10059    <xsl:variable name="cl_name"><xsl:value-of select="@name"/></xsl:variable>
    101     <xsl:variable name="interleave"><xsl:value-of select="/page/pageResponse/service/classifierList/classifier[@name=$cl_name]/@documentInterleave"/></xsl:variable>
    102     <xsl:variable name="orientation"><xsl:value-of select="/page/pageResponse/service/classifierList/classifier[@name=$cl_name]/@orientation"/></xsl:variable>
    103     <xsl:variable name='mode'><xsl:value-of select='$orientation'/>-<xsl:value-of select='$interleave'/></xsl:variable>
    104     <!-- cant seem to do this any other way, ie mode='{$mode}' doesn't work -->
    10560    <xsl:choose>
    106       <xsl:when test="$mode='horizontal-true'">
    107     <xsl:apply-templates select="." mode='horizontal-true'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates>
     61      <xsl:when test="/page/pageResponse/service/classifierList/classifier[@name=$cl_name]/@horizontalAtTop">
     62    <xsl:apply-templates select="." mode="horizontal-at-top">
     63      <xsl:with-param name="collName" select="$collName"/>
     64      <xsl:with-param name="serviceName" select="$serviceName"/>
     65    </xsl:apply-templates>
    10866      </xsl:when>
    109       <xsl:when test="$mode='horizontal-false'">
    110     <xsl:apply-templates select="." mode='horizontal-false'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates>
    111       </xsl:when>
    112       <xsl:when test="$mode='vertical-true'">
    113     <xsl:apply-templates select="." mode='vertical-true'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates>
    114       </xsl:when>
    115       <xsl:when test="$mode='vertical-false'">
    116     <xsl:apply-templates select="." mode='vertical-false'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates>
    117       </xsl:when>
     67      <xsl:otherwise>
     68    <xsl:apply-templates select="." mode="default">
     69      <xsl:with-param name="collName" select="$collName"/>
     70      <xsl:with-param name="serviceName" select="$serviceName"/>
     71    </xsl:apply-templates>
     72      </xsl:otherwise>
    11873    </xsl:choose>
    11974  </xsl:template>
    12075 
    121   <!-- vertical and interleave = true: process all document and classifier children together, recursively -->
    122   <xsl:template match="classifier" mode="vertical-true">
     76
     77  <xsl:template match="classifier" mode="horizontal-at-top">
     78    <xsl:param name="collName"/>
     79    <xsl:param name="serviceName"/>
     80    <table width='537'>
     81      <tr valign='top'>
     82    <xsl:for-each select='classifierNode'>
     83      <xsl:apply-templates select='.' mode="horizontal"><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates>
     84    </xsl:for-each>
     85      </tr>
     86    </table>
     87    <table width='537'>
     88      <tr valign='top'>
     89    <xsl:for-each select='classifierNode'>
     90      <xsl:apply-templates select='.' mode='process-all-children'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates>
     91    </xsl:for-each>
     92      </tr>
     93    </table>
     94    <xsl:call-template name="greenBar"/>
     95  </xsl:template>
     96
     97  <xsl:template match="classifier" mode="default"> <!-- the default -->
    12398    <xsl:param name="collName"/>
    12499    <xsl:param name="serviceName"/>
     
    134109    <xsl:call-template name="greenBar"/>
    135110  </xsl:template>
     111  <!-- recursively process all nodes and documents -->
    136112 
    137   <!--vertical and interleave = false: process all classifier nodes, recursively, then do the document ones separately -->
    138   <xsl:template match="classifier" mode="vertical-false">
     113  <xsl:template match="documentNode">
     114    <xsl:param name="collName"/>
     115    <td><a href="{$library_name}?a=d&amp;c={$collName}&amp;d={@nodeID}&amp;dt={@documentType}"><xsl:apply-templates select="." mode="displayNodeIcon"/></a></td><td align='left'><xsl:value-of disable-output-escaping="yes"  select="metadataList/metadata[@name='Title']"/></td>
     116  </xsl:template>
     117 
     118  <!-- icon + title template-->
     119  <xsl:template match="classifierNode">
    139120    <xsl:param name="collName"/>
    140121    <xsl:param name="serviceName"/>
    141     <!-- process the nodes and documents separately-->
    142     <table width='537'>
    143       <xsl:for-each select='classifierNode'>
    144     <tr valign='top'><xsl:apply-templates select='.'><xsl:with-param name='collName' select='$collName'/></xsl:apply-templates></tr>
    145     <tr valign='top'><td><xsl:text> </xsl:text></td><xsl:apply-templates select='.' mode='process-node-children'><xsl:with-param name='collName' select='$collName'/></xsl:apply-templates></tr></xsl:for-each>
    146     </table>
    147     <xsl:if test="descendant::documentNode"><!--netscape doesn't like empty tables-->
    148       <table width='537'>
    149     <xsl:for-each select='descendant::documentNode'>
    150       <tr valign='top'><xsl:apply-templates select='.'><xsl:with-param name='collName' select='$collName'/></xsl:apply-templates></tr>
    151     </xsl:for-each>
    152       </table>
    153     </xsl:if>
    154     <xsl:call-template name="greenBar"/>
     122    <td><a><xsl:attribute name='href'><xsl:value-of select='$library_name'/>?a=b&amp;rt=r&amp;s=<xsl:value-of select='$serviceName'/>&amp;c=<xsl:value-of select='$collName'/>&amp;cl=<xsl:value-of select='@nodeID'/><xsl:if test="classifierNode|documentNode">.pr</xsl:if></xsl:attribute><img src='interfaces/default/images/bshelf.gif' border='0' width='20' height='16' /></a></td><td align='left'><xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name='Title']"/></td>
    155123  </xsl:template>
    156 
    157 
    158   <xsl:template match="classifier" mode="horizontal-true">
     124 
     125  <!-- the title is a link: an alternative template -->
     126  <xsl:template match="classifierNode" mode="horizontal">
    159127    <xsl:param name="collName"/>
    160128    <xsl:param name="serviceName"/>
    161     <!-- process the nodes and documents together -->
    162    
    163     <table>
    164       <tr valign='top'>
    165     <xsl:for-each select='classifierNode|documentNode'>
    166       <xsl:apply-templates select='.'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates>
    167     </xsl:for-each>
    168       </tr>
    169       <tr valign='top'>
    170     <xsl:for-each select='classifierNode|documentNode'>
    171       <td><xsl:text> </xsl:text></td> <!-- the empty cell for the icon -->
    172       <xsl:choose><xsl:when test='name()="classifierNode" and classifierNode|documentNode'>
    173           <xsl:apply-templates select='.' mode='process-all-children'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates>
    174         </xsl:when>
    175         <xsl:otherwise>
    176           <td><xsl:text> </xsl:text></td>
    177         </xsl:otherwise>
    178       </xsl:choose>
    179     </xsl:for-each>
    180       </tr>
    181     </table>
    182     <xsl:call-template name="greenBar"/>
     129    <xsl:choose>
     130      <xsl:when test="classifierNode|documentNode"><!-- the opened one -->
     131    <td><xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name='Title']"/></td>
     132      </xsl:when>
     133      <xsl:otherwise>
     134    <td><a><xsl:attribute name='href'><xsl:value-of select='$library_name'/>?a=b&amp;rt=r&amp;s=<xsl:value-of select='$serviceName'/>&amp;c=<xsl:value-of select='$collName'/>&amp;cl=<xsl:value-of select='@nodeID'/></xsl:attribute><xsl:value-of disable-output-escaping="yes" select="metadataList/metadata[@name='Title']"/></a></td>
     135      </xsl:otherwise>
     136    </xsl:choose>
    183137  </xsl:template>
    184 
    185   <xsl:template match="classifier" mode="horizontal-false">
    186     <xsl:param name="collName"/>
    187     <xsl:param name="serviceName"/>
    188     <!-- process the nodes and documents separately-->
    189    
    190     <table width='537'><tr valign='top'>
    191     <xsl:for-each select='classifierNode'>
    192       <xsl:apply-templates select='.'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates>
    193     </xsl:for-each></tr>
    194       <tr valign='top'>
    195     <xsl:for-each select='classifierNode'>
    196       <xsl:apply-templates select='.' mode='process-node-children'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates></xsl:for-each></tr>
    197     </table>
    198     <xsl:if test="descendant::documentNode"> <!-- netscape complains about an empty table-->
    199       <table width='537'>
    200     <xsl:for-each select='descendant::documentNode'>
    201       <tr valign='top'><xsl:apply-templates select='.'><xsl:with-param name='collName' select='$collName'/></xsl:apply-templates></tr>
    202     </xsl:for-each>
    203       </table>
    204     </xsl:if>
    205     <xsl:call-template name="greenBar"/>
    206   </xsl:template>
    207 
    208   <!-- default doc node template: icon and title -->
    209 <!--  <xsl:template match="documentNode">
    210     <xsl:param name="collName"/>
    211     <td><a href="{$library_name}?a=d&amp;c={$collName}&amp;d={@nodeID}&amp;dt={@documentType}"><xsl:apply-templates select="." mode="displayNodeIcon"/></a></td><td><xsl:value-of select="metadataList/metadata[@name='Title']"/></td>
    212   </xsl:template>-->
    213138 
    214   <!-- default classifier node template: icon + title -->
    215  <!-- <xsl:template match="classifierNode">
    216     <xsl:param name="collName"/>
    217     <xsl:param name="serviceName"/>
    218     <td><a><xsl:attribute name='href'><xsl:value-of select='$library_name'/>?a=b&amp;rt=r&amp;s=<xsl:value-of select='$serviceName'/>&amp;c=<xsl:value-of select='$collName'/>&amp;cl=<xsl:value-of select='@nodeID'/><xsl:if test="classifierNode|documentNode">.pr</xsl:if></xsl:attribute><img src='interfaces/default/images/bshelf.gif' border='0' width='20' height='16' /></a></td><td align='left'><xsl:value-of select="metadataList/metadata[@name='Title']"/></td>
    219   </xsl:template>-->
    220  
    221   <!-- an alternative classifier node template: the title is a link -->
    222   <!--
    223   <xsl:template match="classifierNode">
    224   <xsl:param name="collName"/>
    225   <xsl:param name="serviceName"/>
    226   <td><a><xsl:attribute name='href'><xsl:value-of select='$library_name'/>?a=b&amp;rt=r&amp;s=<xsl:value-of select='$serviceName'/>&amp;c=<xsl:value-of select='$collName'/>&amp;cl=<xsl:value-of select='@nodeID'/><xsl:if test="classifierNode|documentNode">.pr</xsl:if></xsl:attribute><xsl:value-of select="metadataList/metadata[@name='Title']"/></a></td>
    227   </xsl:template>
    228   -->
    229139
    230140<!-- processing for the recursive bit -->
    231141<!-- if interleave=true, process all child nodes and documents, else just do nodes -->
    232142
     143
    233144  <xsl:template match="classifierNode" mode="process-all-children">
    234145    <xsl:param name="collName"/>
    235146    <xsl:param name="serviceName"/>
    236     <td><p/>
    237       <!-- only do this if there are children -->
    238       <xsl:if test="classifierNode|documentNode">
    239     <xsl:choose>
    240       <xsl:when test='@orientation="vertical"'>
    241         <table> 
    242           <xsl:for-each select='classifierNode|documentNode'>
    243         <tr valign='top'><xsl:apply-templates select='.'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates></tr>
    244         <xsl:if test='name()="classifierNode"'>
    245           <tr valign='top'><td><xsl:text> </xsl:text></td><xsl:apply-templates select='.' mode='process-all-children'><xsl:with-param name='collName' select='$collName'/></xsl:apply-templates></tr>
    246         </xsl:if>         
    247           </xsl:for-each>
    248         </table>
    249       </xsl:when>
    250       <xsl:otherwise> <!-- horizontal -->
    251         <table>
    252           <tr valign='top'>
    253         <xsl:for-each select='classifierNode|documentNode'>
    254           <xsl:apply-templates select='.'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates>
    255           <xsl:if test='name()="classifierNode"'>
    256             <xsl:apply-templates select='.' mode='process-all-children'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates>
    257           </xsl:if>
    258         </xsl:for-each>
    259           </tr>
    260         </table>
    261       </xsl:otherwise>
    262     </xsl:choose>
    263       </xsl:if>
    264     </td>
     147    <!-- only do this if there are children -->
     148    <xsl:if test="classifierNode|documentNode">
     149      <td>
     150      <table> 
     151    <xsl:for-each select='classifierNode|documentNode'>
     152      <tr valign='top'><xsl:apply-templates select='.'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates></tr>
     153      <xsl:if test='name()="classifierNode"'>
     154        <tr valign='top'><td><xsl:text> </xsl:text></td><xsl:apply-templates select='.' mode='process-all-children'><xsl:with-param name='collName' select='$collName'/></xsl:apply-templates></tr>
     155      </xsl:if>       
     156    </xsl:for-each>
     157      </table>
     158      </td>
     159    </xsl:if>
    265160  </xsl:template>
    266 
    267   <xsl:template match="classifierNode" mode="process-node-children">
    268     <xsl:param name="collName"/>
    269     <xsl:param name="serviceName"/>
    270     <td><p/>
    271       <xsl:if test='classifierNode'><!-- only do this if there are child nodes - netscape craps out at an empty table like <table  /> -->
    272     <xsl:choose>
    273       <xsl:when test='@orientation="vertical"'>
    274         <table>
    275           <xsl:for-each select='classifierNode'>
    276         <tr valign='top'><xsl:apply-templates select='.'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates></tr>
    277         <tr valign='top'><td><xsl:text> </xsl:text></td><xsl:apply-templates select='.' mode='process-node-children'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates></tr>
    278           </xsl:for-each>
    279         </table>
    280       </xsl:when>
    281       <xsl:otherwise>
    282         <table>
    283           <tr valign='top'><xsl:apply-templates select='classifierNode'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates>
    284         <xsl:apply-templates select='classifierNode' mode='process-node-children'><xsl:with-param name='collName' select='$collName'/></xsl:apply-templates></tr>
    285         </table>
    286       </xsl:otherwise>
    287     </xsl:choose>
    288       </xsl:if>
    289     </td>
    290   </xsl:template>
    291 
     161 
    292162</xsl:stylesheet>
    293163
Note: See TracChangeset for help on using the changeset viewer.