I am using Cocoon to create an application which uses stylesheets and
resources to present the content to users. The content is managed by a
database and the content to be returned is determined by part of the
request uri.

The application has a default set of stylesheets and resources (images)
to display content initially. I would like to be able to change the
style for different content based on different stylesheets but to use
the default stylesheets when another stylesheet is not available.

I am finding this very difficult to explain so I will try to go into
detail in this email with examples of the syntax I'd like to use. I need
to know if Cocoon is able to do the following in some other way or if
some changes need to be made?

To simplify the application I'll use the following example. 
This example is trivial and is purely to try to explain the concept, my
application currently has many matchers with many transformations in
which only some may be customised.

The application displays the results of database tables. The application
will generate an xml file of the database table in the same manner for
each table.

<table>
    <row>
        <column_name>value</column_name>
    </row>
</table>

The default set of stylesheets will display the table data in an HTML
table with a default set of colours, images etc.

The pipeline would be as follows

<map:match pattern="/db/*/x.html">
    <map:generate type="serverpages" src="content/tables.xsp">
        <map:parameter name="table" value="{1}"/>
    </map:generate>
    <map:transform src="stylesheets/default/table.xsl"/>
    <map:serialize type="html"/>
</map:match>

I would like to create table specific stylesheets when needed, this
would then become

<map:match pattern="/db/*/x.html">
    <map:generate type="serverpages" src="content/tables.xsp">
        <map:parameter name="table" value="{1}"/>
    </map:generate>
    <map:transform src="stylesheets/{1}/table.xsl"/>
    <map:serialize type="html"/>
</map:match>

But, I would like to fall back on the default stylesheet when a specific
stylesheet does not exist. For this the syntax might be as follows

<map:match pattern="/db/*/x.html">
    <map:generate type="serverpages" src="content/tables.xsp">
        <map:parameter name="table" value="{1}"/>
    </map:generate>
    <map:transform src="stylesheets/{1}/table.xsl"
default="stylesheets/default/table.xsl"/>
    <map:serialize type="html"/>
</map:match>

where default="" would be a fall-back stylesheet that is used should the
src file not be available.

I would also need this for resources such as images such as

<map:read src="images/{1}/header.gif"
default="images/default/header.gif" mime-type="image/gif"/>

I can see uses of this in generators as well.

To repeat the question at the beginning, is there a way to do this with
Cocoon as it currently stands or is this something that would need to be
added?
Does anyone else see this as a useful addition to Cocoon?
Which would be the best way to get this functionality into Cocoon?
        is the default attribute right or should it be something else?
I would be more than prepared to implement such functionality if others
would like it as well.

-- 
Andrew Timberlake <[EMAIL PROTECTED]>


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

Reply via email to