Et site med kursusmaterialer, der bruges i forbindelse med undervisning i forskellige it relaterede emnerEn skøn grafik du kan nyde mens der undervises.
   

Send spørgsmål eller kommentar til Thor - klik her: Send en kommentar til Thor - omkring undervisning eller kursus  Søg i kursusmaterialerne. Kan bruges i forbindelse med undervisningen eller efter kurset  Til forsiden af kursusmaterialer.dk 

 

XML formatering og transformation / XSLT elementer / xsl if og xsl choose


XSL fjernundervisningskursus

- Vil du gerne på kursus NU?

- Vil du gerne lære i dit eget tempo?

- Har du ikke tid til at tage på kursus ude i byen?

Så køb et kursus i XSL som fjernundervisning på www.it-fjernundervisning.dk


xsl:if og xsl:choose

Begge elementer bruges til at styre flow'et i et style sheet. Syntaksen for de to elementer er:

<xsl:if test="udtryk der kan evalueres til sand eller falsk">
<xsl:choose>
<xsl:when test="udtryk der kan evalueres til sand eller falsk">
<!-- Skriv det output du vil have hvis testen er sand -->
</xsl:when>
<xsl:when test="udtryk der kan evalueres til sand eller falsk">
<!-- Skriv det output du vil have hvis testen er sand -->
</xsl:when>
<xsl:otherwise>
<!-- Skriv det output du vil have hvis ingen af dine tests var sande -->
</xsl:otherwise>
</xsl:choose>

Vær opmærksom på, at der er lidt specielle regler for, hvornår noget er sandt eller falsk

  • Hvis en værdi er numerisk regnes den for falsk, hvis den er nul ellers er den sand
  • Hvis en værdi er en tekststreng regnes den for sand, hvis den har en længde der er forskellig fra nul (dvs. hvis der står noget i tekststrengen)
  • Hvis en værdi er et XML element (eller flere) regnes det for sandt, hvis det ikke er tomt - ellers falsk

Eksempel:

<xsl:if test="Navn">
<!-- Her skriver du så det output du vil have hvis testen er sand -->
</xsl:if>

regnes for sandt, hvis der er et <Navn> element der er underelement til det aktuelle element .


Øvelse

Vi har denne lille medlemsliste og dette stylesheet. Tilsammen giver det et layout, der ser sådan her ud.

I stedet for true skal vi have indsat et billede. Der ligger et billede her: som I kan bruge.

 

Et lille trix til sørge for at de tomme celler ser fornuftige ud:

<xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>

Et lille eksempel på, hvordan man kan få skiftende farver på rækkerne i sådan en tabel:

<?xml version="1.0"?>
<xsl:stylesheet
   version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="html"indent="no"/>
   
<xsl:template match="/products">
   <html>
      <head>
         <title>Cascading Style Sheet</title>
         <link rel="stylesheet" type="text/css" href="table.css" 
              title="Style"/>
      </head>
      <body>
        <table>
          <tr class="header">
             <td>Name</td>
             <td>Price</td>
             <td>Description</td>
          </tr>
          <xsl:apply-templates/>
        </table>
      </body>
   </html>
</xsl:template>

<xsl:template match="product[position() mod 2 = 1]">
   <tr class="odd">
      <td><xsl:value-of select="name"/></td>
      <td><xsl:value-of select="price"/></td>
      <td><xsl:value-of select="description"/></td>
   </tr>
</xsl:template>

<xsl:template match="product">
   <tr class="even">
      <td><xsl:value-of select="name"/></td>
      <td><xsl:value-of select="price"/></td>
      <td><xsl:value-of select="description"/></td>
   </tr>
</xsl:template>

</xsl:stylesheet>

Dette css skal også med for at det virker

.header { background-color: #999999; font-weight: bold; }
.odd { background-color: normal; }
.even { background-color: #dfdfdf; }

Øvelse

Sørg for at tabellen fra foregående øvelse bliver formateret med skiftende farver.

   
Spacer Spacer Spacer Spacer