cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ivelin Ivanov" <ive...@iname.com>
Subject Re: Comitting components
Date Sun, 10 Mar 2002 12:47:53 GMT
Folks,

I think we might have made one small step towards HTML Form symmetry in
Cocoon.
The approach I have taken after long discussions and even longer hours
before my monitor is enhancing the Cocoon Action concept so that it is
coherent with the rest of the framework.

Thanks to the people who built JXPath  and  Castor (and CastorTransformer),
I think we now have a way to elegantly map content to business logic. (HTML
Forms <-> XML/XPath <-> JavaBeans)

The idea has been in circulation for a long time: unmarshal JavaBeans from
the buziness layer to XML, so that they can be part of the content model and
then use XPath expressions for HTML Form elements so that on POST the same
JavaBean can be updated and sent back to the business logic.

You can download a scratchpad formatted bundle here:
http://prdownloads.sourceforge.net/freebuilder/CocoonForm.zip
I've only used Apache licensed files this time ;)
The examples are based on the CastorTransformer examples, so they should be
easy to comprehend.

The code is very simple. I've tried not to touch more advanced problems like
error handling and reporting, unusual custom mapping and multi page wizards.
Thought I should first present to the rest of the group a simple prototype
for feasibility test .


Below I will show just a sample XSL file which takes an XML presentation of
a JavaBean and renders HTML forms with the appropriate XPath expressions. It
will hopefully sharpen your apetite enough to make you look at the code and
participate in the
discussion:


---------------------------
- <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
  <xsl:output method="html" omit-xml-declaration="yes" />
- <xsl:template match="/zoo">
- <html>
- <body>
  Please edit and submit:
  <br />
  <xsl:apply-templates />
  </body>
  </html>
  </xsl:template>
- <xsl:template match="animal[1]">
- <form method="post" action="test">
  <xsl:variable name="animalName" select="name" />
  Animal name:
  <input type="text" name="name" value="{$animalName}" />
  <br />
  Kind:
- <b>
  <xsl:value-of select="personalInfo/@kind" />
  </b>
  <br />
  <xsl:variable name="animalScope" select="scope" />
  Animal scope:
  <input type="text" name="scope" value="{$animalScope}" />
  <br />
  <xsl:variable name="preference1" select="preferences[1]" />
  First Preference:
  <input type="text" name="preferences[1]" value="{$preference1}" />
  <br />
  <xsl:variable name="preference2" select="preferences[2]" />
  Second Preference:
  <input type="text" name="preferences[2]" value="{$preference2}" />
  <br />
  <input type="submit" />
  </form>
  <br />
  Counter:
  <xsl:value-of select="@count" />
  </xsl:template>
  <xsl:template match="*" />
  </xsl:stylesheet>
----------------------------------


Looking forward to comments.

Cheers,

Ivelin





----- Original Message -----
From: "Ivelin Ivanov" <ivelin@iname.com>
To: "Nicola Ken Barozzi" <nicolaken@apache.org>; <cocoon-dev@xml.apache.org>
Cc: <"[dplotnik@"@iname.com
Sent: Thursday, March 07, 2002 3:57 PM
Subject: Re: Comitting components


>
> Way cool !
>
> We've been using castor .93 for quite serious xml traffic between hundreds
win c++ clients and a java portal. Great performance.
>
> Donating this transformer also saved me some work.
> As I mentioned before I am workin on a little prototype that'll hopefully
introduce some HTML Forms symmetry in cocoon.
>
> From an earlier email by Konstantin:
> >It would be also fine to have an action that >performs the opposite
> >operation: set properties of JavaBean object(s) with request param values
> >using XPath expressions, e.g.:
> >customer/firstname = Ozzy
> >customer/lastname = Osbourne
> >can be converted to XML:
> ><customer>
> >    <firstname>Ozzy</firstname>
> >    <lastname>Osbourne</lastname>
> ></customer>
>
> I am working on this with Dmitri's help using his JXPath lib.
> http://cvs.apache.org/viewcvs/jakarta-commons/jxpath/
>
> It's being used for Jakarta JSTL and Workflow (which says enough for its
quality).
>
> Let me know if someone else is working in this direction so that we don't
double the work.
>
> Regards,
>
> Ivelin
>
>
>
>
>
> -----Original Message-----
> From: "Nicola Ken Barozzi" <nicolaken@apache.org>
> Date: Thu, 7 Mar 2002 18:03:30 +0100
> To:  <cocoon-dev@xml.apache.org>
> Subject: Re: Comitting components
>
>
> > From: "Matthew Langham" <mlangham@s-und-n.de>
> >
> > > today two new "things" were donated/comitted to the Cocoon
scratchpad -
> > the
> > > Castor Transformer and the POI Serialization code.
> > >
> > > It would help people like me (who do not read all the messages or much
> > worse
> > > remember them all) if comitters could add a couple of lines or
paragraphs
> > as
> > > to what can be done with the new components when sending off the
> > > announcements.
> >
> > You are right. Thank you for the pointer.
> > Here is a brief explanation.
> >
> > ----------------------
> >  POI Serializer
> > ----------------------
> >
> > The POI project, now hosted on http://jakarta.apache.org/poi/ , is a
project
> > that consists of APIs for manipulating various file formats based upon
> > Microsoft's OLE 2 Compound Document format using pure Java. OLE 2
Compound
> > Document Format based files include most Microsoft Office files such as
XLS
> > and DOC.
> >
> > The HSSFSerializer uses POI's HSSF xls file write API
> > http://jakarta.apache.org/poi/hssf/index.html , and is now in Cocoon
proper
> > (not scratchpad).
> >
> > It makes it possible to output xml following the schema of gnumeric to
an
> > xls file.
> > Examples are present in the "extra" section, under "legacy file
formats".
> >
> > To install the Cocoon war easily, do:
> >
> > build.(sh|bat) clean
> > build.(sh|bat) installwar
> >
> > ----------------------------
> >  Castor Transformer (in scratchpad)
> > ----------------------------
> >
> > Marshals a object from the the sitemap, request, session or Servlet
Context
> > into a series of SAX events, and can seek for the java bean
automaticaly.
> > TheCastortransformer can be configured with a default mapping. This
mapping
> > is used as long as no other mappings are specified.
> >
> >   <map:transformer name="CastorTransformer"
> >
src="org.apache.cocoontransformation.CastorTransformer">
> >     <mapping>castor/xmapping.xml</mapping>
> >   </map:transformer>
> >
> > A sample for the use:
> >    <root xmlns:castor="http://castor.exolab.org/cocoontransfomer">
> >       <castor:InsertBean source="session" key="invoice"/>
> >       <castor:InsertBean source="sitemap" key="product"
> >                mapping="castor/specicalmapping.xml"/>
> >    </root>
> >
> > The CastorTransfomer support only one Element castor:InsertBean.
> > This element is replaced with the marshalled object.
> >
> > Other information can be found in the scratchpad sample sub-sitemap
under
> > docs.
> >
> > To install the Cocoon war with scratchpad stuff easily, do:
> >
> > build.(sh|bat) clean
> > build.(sh|bat) installscratchpadwar
> >
> > The demo is under http://server:port/cocoon/samples/castor/
> >
> > --
> > Nicola Ken Barozzi                   nicolaken@apache.org
> >             - verba volant, scripta manent -
> >    (discussions get forgotten, just code remains)
> > ---------------------------------------------------------------------
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: cocoon-dev-unsubscribe@xml.apache.org
> > For additional commands, email: cocoon-dev-help@xml.apache.org
> >
> >
>
> --
>
> _______________________________________________
> Sign-up for your own FREE Personalized E-mail at Mail.com
> http://www.mail.com/?sr=signup
>
> Travelocity.com is giving away two million travel miles.
>
http://ad.doubleclick.net/clk;3969773;6991039;g?http://svc.travelocity.com/p
romos/millionmiles_main/0,,TRAVELOCITY,00.html
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: cocoon-dev-unsubscribe@xml.apache.org
> For additional commands, email: cocoon-dev-help@xml.apache.org
>



---------------------------------------------------------------------
To unsubscribe, e-mail: cocoon-dev-unsubscribe@xml.apache.org
For additional commands, email: cocoon-dev-help@xml.apache.org


Mime
View raw message