Hi Grzegorz and Reinhard,

Reinhard Pötz schrieb:

[…]

There is an "abstract" block called "document-type" (think of a
document type for a CMS, actually it's about Lenya). This block
declares (in the sense of a convention) particular services,
without actually implementing them, e.g.

[…]

In my opinion SSF does not suit your job. I see blocks + SSF as a
powerful way to structure your application. SSF's capabilities allow
you to extend application's logic.

[…]

I agree with Grzegorz, this use case shouldn't be covered by the SSF.

I thought a bit more about this, and I'd like to know your opinion about another aspect of the document types.

Basically, a document type defines a schema and a set of "formats", i.e. options to render the documents belonging to this type. E.g., the "docbook" document type could be rendered in the formats "xhtml", "xsl-fo", "pdf", "txt", "xhtml-summary", "xhtml-toc", etc.

At a first glance this aspect could be handled very well by the servlet-service framework (assuming there is a document:/ protocol to fetch the document source from the repository, and a document input module to retrieve information about a document):

<map:match pattern="*.pdf">
  <map:generate src="document:/{1}"/>
  <map:serialize type="servletService">
<map:parameter name="service" value="servlet:{document:{1}:type}:/service/formats/pdf"/>
  </map:serialize>
</map:match>

We can't use generic service blocks (e.g. for PDF rendering), because the processing stages (stylesheets, link rewriting, i18n, …) depend very much on the actual document type. Up to now Lenya uses its own module mechanism for this purpose, but it doesn't provide the nice encapsulation like the block concept, and it can only be called via the cocoon:/ protocol, i.e. only from a generation step (nothing like <map:serialize type="servletService"/> is possible).

Is there a clean and elegant way to do this with Cocoon 2.2?

TIA for any hints!

-- Andreas



--
Andreas Hartmann, CTO
BeCompany GmbH
http://www.becompany.ch
Tel.: +41 (0) 43 818 57 01

Reply via email to