forrest-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Crossley <cross...@apache.org>
Subject Re: MOTD template match query
Date Fri, 06 Jul 2007 01:58:26 GMT
Ross Gardler wrote:
> David Crossley wrote:
> >Gav.... wrote:
> >>
> >> In site-to-xhtml.xsl we have tests which to me say :-
> >>
> >> when:
> >> if test = x then do z
> >> otherwise:
> >> if test = y then do z
> >>
> >> In other words, the below code snippet confuses me
> >> Why not combine it to say
> >>
> >> if test = x or test = y then do z
> >>
> >> Or is there more to it than I have glimpsed at so far?
> >
> >Would you please give me more clues as to which parts
> >that you cannot understand.
> 
> :-) It took me a while to figure out what Gavin meant...
> 
> In Gavins psuedo code above
> 
> "when" represents <xsl:when test="@starts-with='true'">
> 
> "otherwise" represents the following <xsl:otherwise>
> 
> "if test = x" represents <xsl:if test="starts-with($path, @pattern)">
> 
> "if test = y" represents <xsl:if test="contains($path, @pattern)">
> 
> "z" represents everything inside the above <xsl:if> statements
> 
> The bit of XSL this refers to is copied below.

Remember that we are allowing the pattern to be
either anchored at beginning of the URI or contained
anywhere within the URI. We also need to match the
pattern for the URI being processed. We also need
to only place the message if it is configured to be
on the face of the page.

Other similar sections of code deal with placing it
in the left-hand panel, and with placing a message
in the title.

Here is the pseudo-code ...

-------------
If MOTD is configured
 For each option

  If @starts-with is true
   Then If URI has the pattern anchored at beginning
    Then If location is face-of-page
     Place the motd message
     If there is a link
      Then create a link from "More"

  If @starts-with is not true
   Then If URI contains the pattern
    Then do the same as above

 End of foreach option
-------------

I don't see anything wrong with that, nor can i see
how to do it better.

-David
 
> >> <xsl:if test="$config/motd">
> >>       <xsl:for-each select="$config/motd/motd-option">
> >>         <xsl:choose>
> >>           <xsl:when test="@starts-with='true'">
> >>             <xsl:if test="starts-with($path, @pattern)">
> >>               <xsl:if test="motd-page/@location='page' or
> >> motd-page/@location='both'">
> >>                 <div id="motd-area">
> >>                   <xsl:value-of select="motd-page"/>
> >>                   <xsl:if test="motd-page-url">
> >> <xsl:text> (</xsl:text><a>
> >>                     <xsl:attribute name="href">
> >>                       <xsl:value-of select="motd-page-url"/>
> >>                     </xsl:attribute>
> >> <xsl:text>More</xsl:text></a>
> >> <xsl:text>)</xsl:text>
> >>                   </xsl:if>
> >>                 </div>
> >>               </xsl:if>
> >>             </xsl:if>
> >>           </xsl:when>
> >>           <xsl:otherwise>
> >>             <xsl:if test="contains($path, @pattern)">
> >>               <xsl:if test="motd-page/@location='page' or
> >> motd-page/@location='both'">
> >>                 <div id="motd-area">
> >>                   <xsl:value-of select="motd-page"/>
> >>                   <xsl:if test="motd-page-url">
> >> <xsl:text> (</xsl:text><a>
> >>                     <xsl:attribute name="href">
> >>                       <xsl:value-of select="motd-page-url"/>
> >>                     </xsl:attribute>
> >> <xsl:text>More</xsl:text></a>
> >> <xsl:text>)</xsl:text>
> >>                   </xsl:if>
> >>                 </div>
> >>               </xsl:if>
> >>             </xsl:if>
> >>           </xsl:otherwise>
> >>         </xsl:choose>
> >>       </xsl:for-each>
> >>     </xsl:if>
> >>
> >
> >
> 
> 
> -- 
> --
> Ross Gardler
> 
> OSS Watch - awareness and understanding of open source software
> development and use in education
> http://www.oss-watch.ac.uk

Mime
View raw message