2017-12-14 5 views
0

Ich muss alle Zeilen, die über 2 Jahre alt sind von heute in Fettdruck zeigen.
Wie mache ich es, ohne Code zu duplizieren?
Ich kann die Bedingung herausfinden, aber kann nicht herausfinden, wie man den ganzen Code mit einem anderen Stil für Fett nicht kopiert.Bedingte Zeile Stil xsl und Vermeidung von doppelten Code

Hier ist mein Code:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" 
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:key name="albums-by-country" match="Album" use="Country" /> 
<xsl:template match="Albums"> 
<html> 
<head> 
<style> 
h4 { 
    text-decoration: underline; 
    font-weight: bold; 

} 
</style> 
</head> 
    <body> 
    <xsl:for-each select="Album[count(. | key('albums-by-country', Country)[1]) = 1]"> 
     <xsl:sort select="Country" /> 
     <h4 style="color:green;"><xsl:value-of select="Country" style="color:red;" /><br /></h4> 


        <table border="1"> 
    <tr bgcolor="#979994"> 
     <th style="text-align:left">Price</th> 
     <th style="text-align:left">Link</th> 
     <th style="text-align:left">Company</th> 
     <th style="text-align:left">Name</th> 
     <th style="text-align:left">Date</th> 
     <th style="text-align:left">Artist</th> 
    </tr> 
    <xsl:for-each select="key('albums-by-country', Country)"> 
<xsl:sort select="Date" /> 
    <tr> 
     <td><xsl:value-of select="Price"/></td> 
     <td><xsl:value-of select="Link"/></td> 
     <td><xsl:value-of select="Company"/></td> 
     <td><xsl:value-of select="Name"/></td> 

    <xsl:choose> 
     <xsl:when test="string-length(Date)>4"> 
     <td><xsl:value-of select="concat(substring(Date,5,2),'/',substring(Date,7,8),'/',substring(Date,1,4))"/></td> 
</xsl:when> 
<xsl:otherwise> 
<td><xsl:value-of select="concat('01/01/',substring(Date,1,4))"/></td> 
</xsl:otherwise> 
</xsl:choose> 
     <td style="color:red;"><xsl:value-of select="Artist"/></td> 
    </tr> 
    </xsl:for-each> 
     <tr> 
       <td colspan="2">Total Amount</td> 
       <td bgcolor="#ffff00"><xsl:value-of select="sum(key('albums-by-country', Country)/Price)"/></td> 
      </tr> 
    </table> 
    <html> 
    <body> 
</xsl:template>  
</xsl:stylesheet> 

Antwort

0

Es sieht aus wie Sie bolding sind durch Hinzufügen von Stil zu tr oder td. Verwenden Sie einfach die Attributfunktion in der if-Bedingung.

<tr> <!-- or td --> 
    <xsl:if test="{Older the 2 years}"> 
     <xsl:attribute name="style">bold whatever</attribute> 
    </if> 
Verwandte Themen