The next thing I plan to work on is a customized Schematron meta-stylesheet
for Cocoon, which will be used for validation of HTML Forms (can be also
applied to SOAP messages).

Before I do that though, I'd like to ask for a vote to verify the interest
in such a feature.
Please vote if you have opinions on this subject.

The idea is basicly described by this state flow:

server side JavaBean -> cocoon -> html form -> browser -> http post ->
Xpath/JavaBean (the same one) -> XML -> Schematron Validation -> (next
action | back to same html form with errors )

Schematron is an alternative to Martin and Christian's FormValidatorAction
and Descriptor.xml.
It's designed to:
1) provide easy to write XML structure assertions based on XPath
2) user-friendly error reporting mechanism
3) Complimentary to XML Schema

Based on the proposed CastorTransformer and FormBeanBinder, a Schematron
trasnformer is a logical next step.
Schematron has been polished and it is stable for about a year now. Has a
working XSLT implementation.
Proved successful for various applications. Under a truly open source
license (zlib/libpng
http://www.ascc.net/xml/resource/schematron/copyright.txt). Hosted on
SourceForge.

Here are some referenes:
home page: http://www.ascc.net/xml/resource/schematron/
sf page: http://sourceforge.net/projects/schematron
tutorial: http://www.zvon.org/xxl/SchematronTutorial/General/contents.html
articles:
http://www.xml.com/pub/a/2002/01/23/perl-schematron.html
http://www.xmlhack.com/read.php?item=945
http://www.ibiblio.org/xml/slides/xmlonelondon2001/schemas/67.html


Looking forward to your comments.

Ivelin



----- Original Message -----
From: "Ivelin Ivanov" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Cc: "Dmitri Plotnikov" <[EMAIL PROTECTED]>
Sent: Sunday, March 10, 2002 6:47 AM
Subject: Re: Comitting components


> 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" <[EMAIL PROTECTED]>
> To: "Nicola Ken Barozzi" <[EMAIL PROTECTED]>;
<[EMAIL PROTECTED]>
> 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" <[EMAIL PROTECTED]>
> > Date: Thu, 7 Mar 2002 18:03:30 +0100
> > To:  <[EMAIL PROTECTED]>
> > Subject: Re: Comitting components
> >
> >
> > > From: "Matthew Langham" <[EMAIL PROTECTED]>
> > >
> > > > 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                   [EMAIL PROTECTED]
> > >             - verba volant, scripta manent -
> > >    (discussions get forgotten, just code remains)
> > > ---------------------------------------------------------------------
> > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > For additional commands, email: [EMAIL PROTECTED]
> > >
> > >
> >
> > --
> >
> > _______________________________________________
> > 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: [EMAIL PROTECTED]
> > For additional commands, email: [EMAIL PROTECTED]
> >
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, email: [EMAIL PROTECTED]
>


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

Reply via email to