[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re[2]: Shorter, better, nicer XSLT

Subject: Re[2]: Shorter, better, nicer XSLT
From: Antonio Bueno <atnbueno@xxxxxxxxxx>
Date: Sat, 16 Mar 2002 10:37:47 +0100
contains in xsl
Hola, David. :)

MD> I don't think I would recommend this, but you could replace all
MD> the XSLT template complexity with XPATH complexity. [...] I send
MD> it only for amusement.

Well, thank you *very* much for sending it. Your solution is hard to
read but the idea of moving complexity to XPath was new for me...

And this morning I started to play around and came with a simpler (I
think), not so hard to read (I hope) solution. And no, I don't know
about its efficiency either.

At the end of the message you have a stripped down version of another
transformation (this one didn't search text, just select some
"parrillas" and shows them), but the main idea is that to get

    parrilla[@fecha=$fecha]

I use

    parrilla[contains(concat('*',@fecha),$fecha]

The catch is that to use it for channels, I have to avoid channel IDs
contained in other channel ID. I had a few of them (CP and CPA, FOX
and FOXN, ...) in the full version but it's not a problem to change
them because they are just arbitrary ones.

Best,
 Antonio

http://mundoplus.tv
mailto:atnbueno@xxxxxxxxxxxx


----- parrillas0.xsl -------------------------------------------------

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:param name="canal"/>
  <xsl:param name="fecha"/>
  <xsl:output doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" encoding="ISO-8859-1" indent="yes" method="xml"/>

  <xsl:template match="/">
    <html>
      <head>
        <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
        <title>mundoplus.tv - Parrillas de programación</title>
      </head>
      <body>
        <h1 class="titulo">
          <xsl:text>Parrillas de programación</xsl:text>
        </h1>
        <form action="parrillas0.asp" method="get">
          <div>
            <select name="canal">
              <xsl:apply-templates select="programacion/canal"/>
            </select>
            <select name="fecha">
              <xsl:apply-templates select="programacion/fecha"/>
            </select>
            <input class="submit" type="image" src="search.gif"/>
          </div>
        </form>
        <xsl:apply-templates select="programacion"/>
        <xsl:if test="($canal='')or($fecha='')">
          <p>
            <xsl:text>Indique qué parrilla de programación desea ver.</xsl:text>
          </p>
        </xsl:if>
      </body>
    </html>
  </xsl:template>

  <xsl:template match="programacion">
    <xsl:if test="($canal!='*')or($fecha!='*')">
      <xsl:apply-templates select="parrilla[(contains(concat('*',@canal),$canal))and(contains(concat('*',@fecha),$fecha))]"/>
    </xsl:if>
    <xsl:if test="($canal='*')and($fecha='*')">
      <p>Lo siento, pero has de escoger un canal o una fecha.</p>
    </xsl:if>
  </xsl:template>

  <xsl:template match="canal">
    <option value="{@id}">
      <xsl:if test="@id=$canal">
        <xsl:attribute name="selected">selected</xsl:attribute>
      </xsl:if>
      <xsl:value-of select="."/>
    </option>
  </xsl:template>

  <xsl:template match="fecha">
    <option value="{@id}">
      <xsl:if test="@id=$fecha">
        <xsl:attribute name="selected">selected</xsl:attribute>
      </xsl:if>
      <xsl:value-of select="."/>
    </option>
  </xsl:template>

  <xsl:template match="parrilla">
    <div class="parrilla">

      <br/>&#160;<b>'*<xsl:value-of select="@fecha"/>' does
      <xsl:if test="not(contains(concat('*',@fecha),$fecha))">not</xsl:if>
      contain '<xsl:value-of select="$fecha"/>'</b><br/>

      <br/>&#160;<b>'*<xsl:value-of select="@canal"/>' does
      <xsl:if test="not(contains(concat('*',@canal),$canal))">not</xsl:if>
      contain '<xsl:value-of select="$canal"/>'</b><br/>

    </div>
  </xsl:template>

</xsl:transform>


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.