Stefano Mazzocchi wrote:

> Hmmm, after restating that I hate actions and I hate nested actions 
> even more because of {../../../1} let me state that I would hate them 
> *even* more if we go the Torsend's {///1} way.
>
> Sylvain proposed the {[1]1} path and don't know about you, but that 
> made me puking all over the floor.


Beeeark ! Honestly, I'm not really happy with this, and this was mainly 
to show that we must find alternatives to "/" for navigating forward in 
this list.

> (Sorry, Sylvain, nice try and your logic about tree vs. list is right, 
> but look at the result: that would make Perl look readable!)


Interesting side-effect ! I should be rewarded for this ;-)

> Ilya proposed a form of namespacing, but Carsten noted that would 
> collide with sitemap variable expansion of InputModules since 
> {foo:bar} might end up colliding with an input module "foo" expanding 
> variable "bar".
>
> If you think about it, Sylvain is proposing the exact same thing, but 
> only inferring the namespace prefix from nested positioning. So, we 
> might be doing
>
>  {1.1}
>
> where the first position is inferred from the component nesting and 
> the second one is inferred from the position of the expansion token. Yuck!
>
> Ilya is proposing to namespace them a little more explicitly and I see 
> value in this approach even if it ads a little verbosity (which, many 
> times, is a good thing)
>
> So, we could be doing implicit
>
>  {type.attribute}
>
> namespaceing like in
>
>  <matcher type="M1">
>   <matcher type="M2">
>    <act type="A1">
>     <act type="A2">
>      <read src="{A2.a}/{A1.b}/{M1.c}/{M2.d}/{request:param}"/>
>     </act>
>    </act>
>   </matcher>
>  </matcher>
>
> where the only problem is the nesting of two components of the same 
> type (but I don't really see a need for this and I would think it's a 
> design mistake of the component if you need to do it!)


This can often happen with matchers when e.g. an area of the application 
is protected :

<map:match type="wildcard" pattern="admin/*">
  <map:act type="auth">
    <map:match type="wildcard" pattern="admin/adduser">
      ...
    </map:match>
  </map:act>
</map:match>

So explicit naming as proposed by Ilya finally seems the best approach 
to me, as it removes all possible ambiguities at the price of a little 
added verbosity. Since this added verbosity only happens when this 
feature is used, this actually does no harm.

Let's see now how we can write that...

> Anyway, I agree that
>
>  {type.attribute}
>
> and
>
>  {request:param}
>
> are a little too similar to be really evident.
>
> Hmmm, let's see other potential syntaxes:
>
>  {type[attribute]}
>
> which recalls vector indexing
>
>  {attribute@type}
>
> which recalls email addressing (but uses inverted notation and could 
> be even worse)
>
>  {(type)attribute}
>
> which recalls lisp-like functional syntaxes
>
>  {type?attribute)
>
> which recalls URL-encoding
>
>  {type^attribute}
>
> which might recall a higher link between the two (or a pow() equivalent)
>
> Anyway, let's see what you think about this.


Puke, puke, puke ;-))

You're trying to find an alternative to the ':' which is used to 
separate the prefix from the attribute name, because you make the 
assumption that what's before the ':' *is* an inputmodule name.

But isn't it precisely this prefix (i.e. the namespace) that should be 
used to distinguish between inputmodules and sitemap variables ? If yes 
(and I think so), this means we have to find a naming convention for the 
prefix, and not for the separator.

You may puke (if you still can ;-), but what about considering 
sitemap-defined namespaces as internal to the sitemap, and thus prefix 
them with a "#", that we all know as being used for internal links in 
web pages ?

This would lead to (adapted from Ilya's proposal) :

<map:match pattern="*-*" name="mtch1">
  <map:act type="my-action" name="act1">
    <map:generate type="serverpages" src="{#mtch:1}.xsp">
      <map:parameter name="display" value="{#mtch:2}"/>
      <map:parameter name="param1" value="{#act1:1}"/>
      <map:parameter name="param2" value="{#act1:2}"/>
      <map:parameter name="param3" value="{request:1}"/>
      <map:parameter name="param4" value="{1}"/>
    </map:generate>
  </map:act>
</map:match>

Explanation :
- {#mtch1:xxx} come from statement named "mtch1"
- {#act1:xxx} come from statement named "act1"
- {request:xxx} come from input-module "request"
- {xxx} works as usual and gets its value from the enclosing statement.

I changed "param-prefix" proposed by Ilya to "name" since this is 
actually what it is : a name given to a sitemap statement.

Thoughts ?

Sylvain

-- 
Sylvain Wallez
  Anyware Technologies                  Apache Cocoon
  http://www.anyware-tech.com           mailto:[EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to