?
Solved

Help me to get this XSL more compact

Posted on 2004-03-29
4
Medium Priority
?
272 Views
Last Modified: 2012-06-27
Coming from this question: http://www.experts-exchange.com/Web/Web_Languages/XML/Q_20933294.html

I have trouble writing compact XSL: the code is still too many kB. I suspect however that using some smart coding my XSL can be compacter.

The site: www.tivoli.nl (look at the "Agenda")
the XML: http://www.terminal.nl/tivoli2004/agenda/xml/nl.xml
the XSL as it was before i started compacting:  http://www.terminal.nl/tivoli2004/agenda/xml/agenda.nl.xsl.asp (35,261 bytes)
the XSL as it was after my first effort:  http://www.terminal.nl/tivoli2004/agenda/xml/agenda.nl.new.xsl.asp (29,649 bytes)

Some reduction achieved, still not satisfied. So everyone who helps me with further reduction gets points. I am only interested in a smart use of XSL functionality.

rules:
- shorter names and removing white space does not count (i can think of that myself)
- i want to reduce bandwidth use, so moving stuff to another file (which requires another HTTP request) is only valid if it reduces the total bandwidth use.
- functionality must be the same (must result in the same HTML in the browser)
- compatible with IE5+ and Mozilla.

As a rule of thumb: 100 points for every kB reduction.

0
Comment
Question by:sybe
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
4 Comments
 
LVL 5

Accepted Solution

by:
conorj earned 400 total points
ID: 10712175
Hi Sybe,

The following should give you a 2/3kB reduction once you strip out all the extraneous whitespace, as it is currently indented for readability.

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="urn:my-namespace" version="1.0">

<xsl:param name="currentdayvalue" select="'20040330'" />
<xsl:param name="spacer" select="'/-/data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEUAAAALAAAAAABAAEAAAICRAEAOw=='" />
<xsl:output method="html"/>

<xsl:template match="/">
    <html>
        <head>
            <title>:: Tivoli :: Agenda</title>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
            <meta http-equiv="imagetoolbar" content="no"/>
            <link href="http://www.terminal.nl/tivoli2004/styles/body.css" rel="stylesheet" type="text/css"/>
            <base target="_blank"/>
            <script>
                var dtNow = new Date(2004, 2, 30);
                var dtLater = new Date(2004, 3, 29);
                var bCanSearch = false;
                var sLastCalledFunction = '';
                var bTopStays = true;

                function ShowProps(oTest) {
                      var element;
                      var oTemp;
                      var sWriteCode = '';
                      for(element in oTest) {
                            oTemp = element;
                            sWriteCode += oTemp.toString() + ' = ' + eval('oTest.' + oTemp.toString()) + '\n';
                      }
                      if(document.writedom) {
                            document.writedom.innerHTML = sWriteCode;
                      } else {
                            document.getElementById('writedom').innerHTML = sWriteCode;
                      }
                }

                function TwoDigit(vIn) {
                      if(vIn.toString().length==0){return '00';}
                      if(vIn.toString().length==1){return '0' + vIn.toString();}
                      if(vIn.toString().length>1){return vIn.toString();}
                }

                function ShowComing30(sLinkText) {
                      if(!bCanSearch) {
                            alert('pagina wordt geladen...');
                            return;
                      }
                      sLastCalledFunction = 'ShowComing30()';
                      var i;
                      var j = 0;
                      var oNodeList = document.getElementById('productiondata').childNodes;
                      var iProductionDateValue = 0;
                      var iToDayValue = parseInt(dtNow.getFullYear().toString() + TwoDigit(dtNow.getMonth()+1) + TwoDigit(dtNow.getDate()));
                      var iLaterValue = parseInt(dtLater.getFullYear().toString() + TwoDigit(dtLater.getMonth()+1) + TwoDigit(dtLater.getDate()));

                      for(i=0;i&lt;oNodeList.length;i++) {
                            oNode = oNodeList.item(i);
                            iProductionDateValue = parseInt(oNode.getAttribute("production_date_value"));
                            sTagName = oNode.getAttribute("id");
                            if((iProductionDateValue &gt;= iToDayValue) &amp;&amp; (iProductionDateValue &lt;= iLaterValue)) {
                                  document.getElementById(sTagName).style.display='block';
                                  j++;
                            } else {
                                  document.getElementById(sTagName).style.display='none';
                            }
                      }
                      if(j == 0) {
                            document.getElementById('noresult').innerHTML = sLinkText + ': geen resultaten gevonden';
                      } else {
                            document.getElementById('noresult').innerHTML = '';
                      }
                      bCanSearch=true;
                      DisplayProduction();
                }

                function ShowMonthSelection(iMonthNr, iYearNr, sCompare, sLinkText) {
                      if(!bCanSearch) {
                            alert('pagina wordt geladen...');
                            return;
                      }
                      sLastCalledFunction = 'ShowMonthSelection()';
                      var oNode;
                      var i;
                      var j = 0;
                      var iMonthValue = 0;
                      var iYearValue = 0;
                      var sTagName = '';
                      var sProductionDateValue;
                      var oNodeList = document.getElementById('productiondata').childNodes;
                      for (i=0;i&lt;oNodeList.length;i++) {
                            oNode = oNodeList.item(i);
                            sTagName = oNode.getAttribute("id");
                            sProductionDateValue = oNode.getAttribute("production_date_value");
                            iMonthValue = parseInt(sProductionDateValue.substr(4,2),10);
                            iYearValue = parseInt(sProductionDateValue.substr(0,4),10);
                            if(sCompare == '=') {
                                  if(iMonthValue == iMonthNr &amp;&amp; iYearValue == iYearNr) {
                                        document.getElementById(sTagName).style.display='block';
                                        j++;
                                  } else {
                                        document.getElementById(sTagName).style.display='none';
                                  }
                            } else {
                                  if((iMonthValue &gt; iMonthNr &amp;&amp; iYearValue == iYearNr) || (iYearValue &gt; iYearNr)) {
                                        document.getElementById(sTagName).style.display='block';
                                        j++;
                                  } else {
                                        document.getElementById(sTagName).style.display='none';
                                  }
                            }
                      }
                      if(j == 0) {
                            document.getElementById('noresult').innerHTML = sLinkText + ': geen resultaten gevonden';
                      } else {
                            document.getElementById('noresult').innerHTML = '';
                      }
                      bCanSearch=true;
                      DisplayProduction();
                }

                function ShowLastAdded() {
                      if(!bCanSearch) {
                            alert('pagina wordt geladen...');
                            return;
                      }
                      sLastCalledFunction = 'ShowLastAdded()';
                      var oLastAdded = document.getElementById('lastadded');
                      if(oLastAdded.innerHTML.length&lt;0) {
                            document.getElementById('productiondata').style.display='none';
                            oLastAdded.style.display='block';
                            return;
                      }
                      var oNode;
                      var i;
                      var j = 0;
                      var sLastAdded = 'no';
                      var sTagName = '';
                      var aLastAdded = new Array();
                      var aOrderLastAdded = new Array();
                      var oCopy;
                      var oNodeList = document.getElementById('productiondata').childNodes;

                      for (i=0;i&lt;oNodeList.length;i++) {
                            oNode = oNodeList.item(i);
                            sLastAdded = oNode.getAttribute("lastadded");
                            sTagName = oNode.getAttribute("id");
                            if(sLastAdded=='yes') {
                                  document.getElementById(sTagName).style.display='block';
                                  //oCopy = oNode.cloneNode(true);
                                  //oCopy.style.display='block';
                                  //oLastAdded.insertBefore(oLastAdded,oLastAdded.childNodes.item(0));
                                  j++;
                            } else {
                                  document.getElementById(sTagName).style.display='none';
                            }
                      }
                      if(j==0) {
                            document.getElementById('noresult').innerHTML = 'geen resultaten gevonden';
                      } else {
                            document.getElementById('noresult').innerHTML = '';
                      }
                      bCanSearch=true;
                }


                function OtherSearch() {
                      var iSearchSoortId = document.othersearch.soort_id.options[document.othersearch.soort_id.selectedIndex].value;
                      var iSearchLocatieId = document.othersearch.locatie_id.options[document.othersearch.locatie_id.selectedIndex].value;
                      var sSearchText = document.othersearch.searchtext.value;
                      PerformOtherSearch(iSearchSoortId,iSearchLocatieId,sSearchText);
                }

                function PerformOtherSearch(iSearchSoortId,iSearchLocatieId,sSearchText) {
                      if(!bCanSearch) {
                            alert('pagina wordt geladen...');
                            return;
                      }
                      if(sSearchText==null) {
                            sLastCalledFunction = 'PerformOtherSearch('+iSearchSoortId.toString()+','+iSearchLocatieId.toString()+')';
                      } else {
                            sLastCalledFunction = 'PerformOtherSearch('+iSearchSoortId.toString()+','+iSearchLocatieId.toString()+','+sSearchText+')';
                      }
                      var sProductieText = '';
                      var i;
                      var j = 0;
                      var oNodeList = document.getElementById('productiondata').childNodes;
                      var bSelect = false;
                      var iSoortId = '0';
                      var iLocatieId = '0';
                      iSearchSoortId = iSearchSoortId.toString();
                      iSearchLocatieId = iSearchLocatieId.toString();

                      for (i=0;i&lt;oNodeList.length;i++) {
                            oNode = oNodeList.item(i);
                            sTagName = oNode.getAttribute("id")
                            bSelect = true;

                            if(iSearchSoortId != '0') {
                                  iSoortId = oNode.getAttribute("soort_id");
                                  if(iSoortId.toString() != iSearchSoortId.toString()) {
                                        bSelect = false;
                                  }
                            }

                            if(iSearchLocatieId != '0') {
                                  iLocatieId = oNode.getAttribute("locatie_id");
                                  if(iLocatieId.toString() != iSearchLocatieId.toString()) {
                                        bSelect = false;
                                  }
                            }

                            if(bSelect &amp;&amp; sSearchText !='' &amp;&amp; sSearchText != null) {
                                  if(oNode.innerText) {
                                        sProductieText = oNode.innerText;
                                  } else {
                                        sProductieText = oNode.innerHTML;
                                  }

                                  sProductieText = sProductieText.toLowerCase();
                                  if(sProductieText.indexOf(sSearchText.toLowerCase()) == -1) {
                                        bSelect = false;
                                  }
                            }

                            if(bSelect) {
                                  document.getElementById(sTagName).style.display='block';
                                  j++;
                            } else {
                                  document.getElementById(sTagName).style.display='none';
                            }
                      }
                      if(j == 0) {
                            document.getElementById('noresult').innerHTML = ' geen resultaten gevonden';
                      } else {
                            document.getElementById('noresult').innerHTML = '';
                      }
                      bCanSearch=true;
                      DisplayProduction();
                }


                function SetFramesetMemory(sCurrentDisplay) {
                      if(top.empty) {top.empty.sCurrentDisplay = sCurrentDisplay;}
                }

                function ShowProductionData() {
                      var sPData = document.documentElement.innerHTML;
                      prompt('productiondata',sPData);
                }

                function ToNonAgenda() {
                      if(top.bTopStays) {
                            top.masterframe.document.getElementById('menuframeset').rows='40, *';
                            top.masterframe.menu.bCanSearch=false;
                            sLastCalledFunction = '';
                      }
                }


                function AfterLoading() {
                      bCanSearch=true;
                      document.getElementById('waitingtext').style.display='none';
                }

                function DisplayProduction() {
                      document.getElementById('productiondata').style.display='inline';
                      document.getElementById('lastadded').style.display='none';
                }

            </script>
        </head>
        <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" onLoad="AfterLoading();">
        <div id="waitingtext">pagina wordt geladen....</div>
        <div id="productiondata">
            <xsl:for-each select="root/production[number(concat(PYear,PMonth,PDay)) &gt;= 20040330]">
                  <div style="display:block" id="production_{ProduktieID}" locatie_id="{locatie_id}" soort_id="{soort_id}" production_date_value="{PYear}{PMonth}{PDay}" lastadded="{bIsLastAdded}">
                            <table width="700" height="185" border="0" cellpadding="0" cellspacing="0">
                        <xsl:choose>
                            <xsl:when test="bIsInHelling = '1'">
                                        <xsl:call-template name="top_row">
                                              <xsl:with-param name="location" select="'helling'"/>
                                        </xsl:call-template>
                                        <tr>
                                              <td width="4" height="175" valign="top" background="http://www.terminal.nl/tivoli2004/images/borders/border_foto_left.gif">
                                                    <img src="http://www.terminal.nl/tivoli2004/images/nav/spacer.gif" width="4" border="0" />
                                              </td>
                                              <td colspan="3" valign="top">
                                                    <table width="692" height="100%" border="0" cellpadding="0" cellspacing="0" id="tableyellow">
                                                          <tr>
                                                                <td width="200" align="center" valign="middle" bgcolor="#333333">
                                                                      <img width="160" hspace="2" vspace="2" id="event1image" alt="{ProduktieNaam}" src="/tivoli/agenda/container/{ProduktiePlaatje}" />
                                                                </td>
                                                                <td width="6" valign="top" background="http://www.terminal.nl/tivoli2004/images/borders/border_foto_right.gif" bgcolor="#FFFF00">
                                                                      <img src="http://www.terminal.nl/tivoli2004/images/nav/spacer.gif" width="6" height="1" />
                                                                </td>
                                                                <xsl:call-template name="production_data">
                                                                      <xsl:with-param name="color" select="'yellow'"/>
                                                                      <xsl:with-param name="cellcolor" select="'#FFFF00'"/>
                                                                </xsl:call-template>
                                                                <td width="6" valign="top" bgcolor="#FFFF00">
                                                                      <img src="http://www.terminal.nl/tivoli2004/images/nav/spacer.gif" width="6" height="1" />
                                                                </td>
                                                                <xsl:call-template name="text_cell">
                                                                      <xsl:with-param name="color" select="'yellow'"/>
                                                                      <xsl:with-param name="cellcolor" select="'#FFFF00'"/>
                                                                      <xsl:with-param name="imagename" select="'helling.gif'"/>
                                                                </xsl:call-template>
                                                          </tr>
                                                          <tr>
                                                                <td height="1" bgcolor="#333333"><img src="http://www.terminal.nl/tivoli2004/images/nav/spacer.gif" alt="" width="200" height="1" /></td>
                                                                <td bgcolor="#660066"><img src="http://www.terminal.nl/tivoli2004/images/nav/spacer.gif" alt="" width="6" height="1" /></td>
                                                                <td bgcolor="#FFFF00"><img src="http://www.terminal.nl/tivoli2004/images/nav/spacer.gif" alt="" width="200" height="1" /></td>
                                                                <td bgcolor="#FFFF00"><img src="http://www.terminal.nl/tivoli2004/images/nav/spacer.gif" alt="" width="6" height="1" /></td>
                                                                <td bgcolor="#FFFF00"><img src="http://www.terminal.nl/tivoli2004/images/nav/spacer.gif" alt="" width="280" height="1" /></td>
                                                          </tr>
                                                    </table>
                                                   </td>
                                              <td width="4" valign="top" background="http://www.terminal.nl/tivoli2004/images/borders/border_right_yellow.gif"><img src="http://www.terminal.nl/tivoli2004/images/nav/spacer.gif" width="4" /></td>
                                        </tr>
                                        <xsl:call-template name="bottom_rows">
                                              <xsl:with-param name="location" select="'helling'"/>
                                        </xsl:call-template>
                            </xsl:when>
                            <xsl:otherwise>
                                        <xsl:call-template name="top_row">
                                              <xsl:with-param name="location" select="'oudegracht'"/>
                                        </xsl:call-template>
                                        <tr>
                                              <td width="4" height="175" valign="top" background="http://www.terminal.nl/tivoli2004/images/borders/border_left_purple.gif">
                                                    <img src="http://www.terminal.nl/tivoli2004/images/nav/spacer.gif" width="4" border="0" />
                                              </td>
                                              <td colspan="3" valign="top">
                                                    <table width="692" height="100%" border="0" cellpadding="0" cellspacing="0" id="tablepurple">
                                                          <tr>
                                                                <xsl:call-template name="production_data">
                                                                      <xsl:with-param name="color" select="'purple'"/>
                                                                      <xsl:with-param name="cellcolor" select="'#660066'"/>
                                                                </xsl:call-template>
                                                                <td width="6" valign="top" background="http://www.terminal.nl/tivoli2004/images/borders/border_foto_left.gif" bgcolor="#660066">
                                                                      <img src="http://www.terminal.nl/tivoli2004/images/nav/spacer.gif" width="6" height="1" />
                                                                </td>
                                                                <td width="200" align="center" valign="middle" bgcolor="#333333">
                                                                      <img width="160" hspace="2" vspace="2" id="event1image" alt="{ProduktieNaam}" src="/tivoli/agenda/container/{ProduktiePlaatje}" />
                                                                </td>
                                                                <td width="6" valign="top" background="http://www.terminal.nl/tivoli2004/images/borders/border_foto_right.gif" bgcolor="#660066">
                                                                      <img src="http://www.terminal.nl/tivoli2004/images/nav/spacer.gif" width="6" height="1" />
                                                                </td>
                                                                <xsl:call-template name="text_cell">
                                                                      <xsl:with-param name="color" select="'purple'"/>
                                                                      <xsl:with-param name="cellcolor" select="'#660066'"/>
                                                                      <xsl:with-param name="imagename" select="'oudegracht.gif'"/>
                                                                </xsl:call-template>
                                                          </tr>
                                                          <tr>
                                                                <td height="1" bgcolor="#660066"><img src="http://www.terminal.nl/tivoli2004/images/nav/spacer.gif" alt="" width="200" height="1" /></td>
                                                                <td bgcolor="#660066"><img src="http://www.terminal.nl/tivoli2004/images/nav/spacer.gif" alt="" width="6" height="1" /></td>
                                                                <td bgcolor="#333333"><img src="http://www.terminal.nl/tivoli2004/images/nav/spacer.gif" alt="" width="200" height="1" /></td>
                                                                <td bgcolor="#333333"><img src="http://www.terminal.nl/tivoli2004/images/nav/spacer.gif" alt="" width="6" height="1" /></td>
                                                                <td bgcolor="#660066"><img src="http://www.terminal.nl/tivoli2004/images/nav/spacer.gif" alt="" width="280" height="1" /></td>
                                                          </tr>
                                                    </table>
                                                     </td>
                                              <td width="4" valign="top" background="http://www.terminal.nl/tivoli2004/images/borders/border_right_purple.gif"><img src="http://www.terminal.nl/tivoli2004/images/nav/spacer.gif" width="4" /></td>
                                        </tr>
                                        <xsl:call-template name="bottom_rows">
                                              <xsl:with-param name="location" select="'oudegracht'"/>
                                        </xsl:call-template>
                            </xsl:otherwise>
                        </xsl:choose>
                    </table>
                  </div>
            </xsl:for-each>
        </div>
        <div id="writedom"/>
        <div id="noresult"/>
        <div id="lastadded" style="background-color:white;display:none"><div id="laststart" style="background-color:white;display:none"><p>&#160;</p></div></div>
    </body>
</html>
</xsl:template>

<xsl:template name="border_cell">
      <xsl:param name="colspan"/>
      <xsl:param name="width"/>
      <xsl:param name="height"/>
      <xsl:param name="bgimage"/>
      <td valign="top" colspan="{$colspan}" height="{$height}" width="{$width}" background="http://www.terminal.nl/tivoli2004/images/borders/{$bgimage}.gif">
            <img width="1" height="4" src="{$spacer}" />
      </td>
</xsl:template>

<xsl:template name="bottom_cell">
      <xsl:param name="width"/>
      <td valign="top" height="1" width="{$width}">
            <img height="4" width="{$width}" src="{$spacer}" />
      </td>
</xsl:template>

<xsl:template name="top_row">
      <xsl:param name="location"/>
      <tr>
      <xsl:if test="$location = 'helling'">
            <xsl:call-template name="border_cell">
                  <xsl:with-param name="colspan" select="'2'"/>
                  <xsl:with-param name="height" select="'4'"/>
                  <xsl:with-param name="bgimage" select="'border_foto_top'"/>
            </xsl:call-template>
            <xsl:call-template name="border_cell">
                  <xsl:with-param name="width" select="'208'"/>
                  <xsl:with-param name="bgimage" select="'border_top_yellow'"/>
            </xsl:call-template>
            <xsl:call-template name="border_cell">
                  <xsl:with-param name="colspan" select="'2'"/>
                  <xsl:with-param name="bgimage" select="'border_top_yellow'"/>
            </xsl:call-template>
      </xsl:if>
      <xsl:if test="$location = 'oudegracht'">
            <xsl:call-template name="border_cell">
                  <xsl:with-param name="colspan" select="'2'"/>
                  <xsl:with-param name="height" select="'4'"/>
                  <xsl:with-param name="bgimage" select="'border_top_purple'"/>
            </xsl:call-template>
            <xsl:call-template name="border_cell">
                  <xsl:with-param name="width" select="'208'"/>
                  <xsl:with-param name="bgimage" select="'border_foto_top'"/>
            </xsl:call-template>
            <xsl:call-template name="border_cell">
                  <xsl:with-param name="colspan" select="'2'"/>
                  <xsl:with-param name="bgimage" select="'border_top_purple'"/>
            </xsl:call-template>
      </xsl:if>
      </tr>
</xsl:template>

<xsl:template name="bottom_rows">
      <xsl:param name="location"/>
    <xsl:variable name="isHelling" select="$location = 'helling'" />
      <tr>
        <xsl:call-template name="border_cell">
            <xsl:with-param name="colspan" select="'2'"/>
            <xsl:with-param name="height" select="'4'"/>
            <xsl:with-param name="bgimage" select="concat('border_', substring('foto_bottom', 1 div($isHelling)), substring('bottom_purple', 1 div not($isHelling)))"/>
        </xsl:call-template>
        <xsl:call-template name="border_cell">
            <xsl:with-param name="bgimage" select="concat('border_', substring('bottom_yellow', 1 div($isHelling)), substring('foto_bottom', 1 div not($isHelling)))"/>
        </xsl:call-template>
        <xsl:call-template name="border_cell">
            <xsl:with-param name="colspan" select="'2'"/>
            <xsl:with-param name="bgimage" select="concat('border_bottom_', substring('yellow', 1 div($isHelling)), substring('purple', 1 div not($isHelling)))"/>
        </xsl:call-template>
      </tr>
      <tr>
            <xsl:call-template name="bottom_cell"><xsl:with-param name="width" select="'4'"/></xsl:call-template>
            <xsl:call-template name="bottom_cell">
            <xsl:with-param name="width" select="concat('20', substring('6', 1 div $isHelling), substring('0', 1 div(not($isHelling))))"/>
        </xsl:call-template>
            <xsl:call-template name="bottom_cell">
            <xsl:with-param name="width" select="concat('20', substring('2', 1 div $isHelling), substring('8', 1 div(not($isHelling))))"/>
        </xsl:call-template>
            <xsl:call-template name="bottom_cell"><xsl:with-param name="width" select="'284'"/></xsl:call-template>
            <xsl:call-template name="bottom_cell"><xsl:with-param name="width" select="'4'"/></xsl:call-template>
      </tr>
</xsl:template>

<xsl:template name="entreedata">
      <xsl:param name="color"/>
      <table width="95%"  border="0" align="center" cellpadding="0" cellspacing="0" id="table{$color}">
            <tr>
                  <td>
                        <br />
                  <xsl:if test="normalize-space(ZaalOpen)">
                        <span class="{$color}actinfo">
                              <xsl:value-of select="'zaal open'"/>
                        </span>
                        &#160;<xsl:value-of select="ZaalOpen"/><br />
                  </xsl:if>
                  <xsl:if test="normalize-space(AanvangProduktie)">
                        <span class="{$color}actinfo">
                              <xsl:value-of select="'aanvang'"/>
                        </span>
                        &#160;<xsl:value-of select="AanvangProduktie"/><br />
                  </xsl:if>
                  <xsl:if test="normalize-space(Entreeprijs1)">
                        <span class="{$color}actinfo">
                              <xsl:value-of select="'entree'"/>
                        </span>
                        &#160;<xsl:value-of select="concat('&#8364;',Entreeprijs1)"/><br />
                  </xsl:if>
                  <xsl:if test="normalize-space(StudUpas1)">
                        <span class="{$color}actinfo">
                              <xsl:value-of select="'studenten'"/>
                        </span>
                        &#160;<xsl:value-of select="concat('&#8364;',StudUpas1)"/><br />
                  </xsl:if>
                  <xsl:if test="normalize-space(Entreeprijs2)">
                        <span class="{$color}actinfo">
                              <xsl:value-of select="'na afloop'"/>
                        </span>
                        &#160;<xsl:value-of select="concat('&#8364;',Entreeprijs2)"/><br />
                  </xsl:if>
                  <xsl:if test="normalize-space(StudUpas2)">
                        <span class="{$color}actinfo">
                              <xsl:value-of select="'studenten'"/>
                        </span>
                        &#160;<xsl:value-of select="concat('&#8364;',StudUpas2)"/><br />
                  </xsl:if>
                        <xsl:if test="number(Voorverkoop) and normalize-space(StartdatumVVK) and number(currentdayvalue)&lt;number(VvkNr)">
                              <span class="{$color}actinfo">start voorverkoop</span><br />
                              <xsl:value-of select="StartdatumVVK"/><br />
                        </xsl:if>
                        <xsl:if test="Uitverkocht = 'True'">
                              <span class="uitverkocht">uitverkocht</span><br />
                        </xsl:if>
                        <xsl:if test="normalize-space(TicketserviceURL) and number(concat(PYear,PMonth,PDay)) &gt; 20040409">
                              <br />
                              <a href="{TicketserviceURL}" target="_blank">
                                    <img src="http://www.terminal.nl/tivoli2004/images/nav/ticketservice.gif" border="0" vspace="2" />
                              </a>
                              <br />
                        </xsl:if>
                        <br />
                  </td>
            </tr>
      </table>
</xsl:template>

<xsl:template name="production_data">
      <xsl:param name="color"/>
      <xsl:param name="cellcolor"/>
      <td width="200" align="left" valign="top" bgcolor="{$cellcolor}">
            <span class="{$color}date">
                  <xsl:value-of select="ProduktieDatum"/>
            </span>
            <br />
            <span class="{$color}act">
                  <xsl:value-of select="ProduktieNaam"/>
            </span>
            <xsl:if test="normalize-space(ProduktieURL)">
                  <a href="{ProduktieURL}">
                        <img border="0" src="http://www.terminal.nl/tivoli2004/images/nav/url_{$color}_right.gif" />
                  </a>
                  <br />
            </xsl:if>
            <xsl:if test="normalize-space(Ondertitel)">
                  <br />
                  <span class="{$color}actsubtxt">
                        <xsl:value-of select="Ondertitel"/>
                  </span><br />
            </xsl:if>
            <xsl:if test="normalize-space(Support1Naam)">
                  <br />
                  <span class="{$color}actsupport">
                        <xsl:value-of select="Support1Naam"/>
                  </span>
                  <xsl:if test="normalize-space(Support1URL)">
                        <a href="{Support1URL}">
                              <img border="0" src="http://www.terminal.nl/tivoli2004/images/nav/url_{$color}_right.gif" />
                        </a>
                        <br />
                  </xsl:if>
            </xsl:if>
            <xsl:if test="normalize-space(Support2Naam)">
                  <br />
                  <span class="{$color}actsupport">
                        <xsl:value-of select="Support2Naam"/>
                  </span>
                  <xsl:if test="normalize-space(Support2URL)">
                        <a href="{Support2URL}">
                              <img border="0" src="http://www.terminal.nl/tivoli2004/images/nav/url_{$color}_right.gif" />
                        </a>
                        <br />
                  </xsl:if>
            </xsl:if>
            <xsl:if test="normalize-space(Support2URL)">
                  <span class="{$color}actsupport"><xsl:value-of select="AfterParty"/></span>
                  <xsl:if test="boolean(AfterPartyURL)">
                        <a href="{AfterPartyURL}">
                              <img border="0" src="http://www.terminal.nl/tivoli2004/images/nav/url_{$color}_right.gif" />
                        </a>
                        <br />
                  </xsl:if>
            </xsl:if>
            <xsl:call-template name="entreedata">
                  <xsl:with-param name="color" select="$color"/>
            </xsl:call-template>
      </td>
</xsl:template>

<xsl:template name="text_cell">
      <xsl:param name="color"/>
      <xsl:param name="cellcolor"/>
      <xsl:param name="imagename"/>
      <td width="280" align="left" valign="bottom" bgcolor="{$cellcolor}">
            <table width="280" height="100%" border="0" id="table{$color}">
                  <tr width="280">
                        <td class="{$color}actdescr">
                              <xsl:copy-of select="ProduktieTekst"/><br /><br />
                              <xsl:if test="normalize-space(Support1Naam) and normalize-space(Support1Tekst)">
                                    <xsl:value-of select="Support1Tekst" disable-output-escaping="yes"/><br /><br />
                              </xsl:if>
                              <xsl:if test="normalize-space(Support2Naam) and normalize-space(Support2Tekst)">
                                    <xsl:value-of select="Support2Tekst" disable-output-escaping="yes"/><br /><br />
                              </xsl:if>
                              <xsl:if test="normalize-space(Afterparty) and normalize-space(AfterPartyTekst)">
                                    <xsl:value-of select="AfterPartyTekst" disable-output-escaping="yes"/><br /><br />
                              </xsl:if>
                        </td>
                  </tr>
                  <tr width="280">
                        <td valign="bottom" width="280">
                              <table width="280" border="0">
                                    <tr>
                                          <td width="210">
                                                <xsl:if test="normalize-space(SoundsLike1) or normalize-space(SoundsLike2)">
                                                      <table width="210">
                                                            <tr>
                                                                  <td width="28" valign="top">
                                                                        <img src="http://www.terminal.nl/tivoli2004/images/nav/klinkt_als.gif" width="28" height="28" />
                                                                  </td>
                                                                  <td class="{$color}info">
                                                                        <xsl:if test="normalize-space(SoundsLike1)">
                                                                              <xsl:value-of select="SoundsLike1"/><br />
                                                                        </xsl:if>
                                                                        <xsl:if test="normalize-space(SoundsLike2)">
                                                                              <xsl:value-of select="SoundsLike2"/><br />
                                                                        </xsl:if>
                                                                  </td>
                                                            </tr>
                                                      </table>
                                                </xsl:if>
                                                <img width="199" height="26" alt="production ({ProduktieID})" src="http://www.terminal.nl/tivoli2004/images/nav/{$imagename}" />
                                          </td>
                                          <td align="right" valign="bottom" width="70">
                                                <a href="http://www.terminal.nl/tivoli2004/agenda/cu.asp?production_id={ProduktieID}" target="_parent">
                                                      <img src="http://www.terminal.nl/tivoli2004/images/nav/cu.gif" width="50" height="28" border="0" />
                                                </a>
                                          </td>
                                    </tr>
                              </table>
                        </td>
                  </tr>
            </table>
      </td>
</xsl:template>

</xsl:stylesheet>

Hope this helps.

rgds,
Conor.
0
 
LVL 6

Expert Comment

by:metalmickey
ID: 10713009
could you remove the javascript and place it in a separate document and link it to your xslt?

<script src="yourscript.js" language="JavaScript" type="text/javascript"></script>

i think at present you'll need to use a CDATA section to encapsulate the script to stop it being parsed.

MM
0
 
LVL 28

Author Comment

by:sybe
ID: 10713149
@conorj
I am currently processing your suggestions. Thanks. Watch out for a "points for" question for you.

@metalmickey
First of all removing of the javascript to outside does not help reducing bandwidth. Secondly, Mozilla browsers don't eat external javascripts in xml/xsl tranformed HTML (stylesheet is not a problem, external javascript is).
The javascript as it is now works fine.
0
 
LVL 28

Author Comment

by:sybe
ID: 10713345
@conorj

You lost me on this code. Can you please explain it?

<xsl:with-param name="bgimage" select="concat('border_', substring('foto_bottom', 1 div($isHelling)), substring('bottom_purple', 1 div not($isHelling)))" />

0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Browsing the questions asked to the Experts of this forum, you will be amazed to see how many times people are headaching about monster regular expressions (regex) to select that specific part of some HTML or XML file they want to extract. The examp…
The Confluence of Individual Knowledge and the Collective Intelligence At this writing (summer 2013) the term API (http://dictionary.reference.com/browse/API?s=t) has made its way into the popular lexicon of the English language.  A few years ago, …
In this brief tutorial Pawel from AdRem Software explains how you can quickly find out which services are running on your network, or what are the IP addresses of servers responsible for each service. Software used is freeware NetCrunch Tools (https…
In this video, Percona Solution Engineer Rick Golba discuss how (and why) you implement high availability in a database environment. To discuss how Percona Consulting can help with your design and architecture needs for your database and infrastr…
Suggested Courses
Course of the Month8 days, 15 hours left to enroll

765 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question