You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cocoon.apache.org by Ivelin Ivanov <iv...@iname.com> on 2002/03/11 04:29:43 UTC

[Announcement] re: HTML Form <-> XML <-> JavaBeans Binding [was: Re: Comitting components]

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" <iv...@iname.com>
To: <co...@xml.apache.org>
Cc: "Dmitri Plotnikov" <dm...@plotnix.com>
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" <iv...@iname.com>
> To: "Nicola Ken Barozzi" <ni...@apache.org>;
<co...@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" <ni...@apache.org>
> > Date: Thu, 7 Mar 2002 18:03:30 +0100
> > To:  <co...@xml.apache.org>
> > Subject: Re: Comitting components
> >
> >
> > > From: "Matthew Langham" <ml...@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
>


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


Re: [Announcement] re: HTML Form <-> XML <-> JavaBeans Binding [was: Re: Comitting components]

Posted by Ivelin Ivanov <iv...@iname.com>.
Michael,

(sorry, hit sent unintentionally in my previous email )

>Could Schematron also be (re)used as a HTML Form Editor, running
>on the server side?

Yes, if you mean XML file validation while editing.
You can look at a Schematron schema as a set of XPath assertion rules against a target XML file.
It's really easy to use and understand. I don't have a clue why it was given such a scary name ;)

Regards,

Ivelin



Thanks

Michael





Ivelin Ivanov wrote:

The next thing I plan to work on is a customized Schematron meta-stylesheetfor Cocoon, which will be used for validation of HTML Forms (can be alsoapplied to SOAP messages).Before I do that though, I'd like to ask for a vote to verify the interestin 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 -> (nextaction | back to same html form with errors )Schematron is an alternative to Martin and Christian's FormValidatorActionand Descriptor.xml.It's designed to:1) provide easy to write XML structure assertions based on XPath2) user-friendly error reporting mechanism3) Complimentary to XML SchemaBased on the proposed CastorTransformer and FormBeanBinder, a Schematron<
br>trasnformer is a logical next step.Schematron has been polished and it is stable for about a year now. Has aworking XSLT implementation.Proved successful for various applications. Under a truly open sourcelicense (zlib/libpnghttp://www.ascc.net/xml/resource/schematron/copyright.txt). Hosted onSourceForge.Here are some referenes:home page: http://www.ascc.net/xml/resource/schematron/sf page: http://sourceforge.net/projects/schematrontutorial: http://www.zvon.org/xxl/SchematronTutorial/General/contents.htmlarticles:http://www.xml.com/pub/a/2002/01/23/perl-schematron.htmlhttp://www.xmlhack.com/read.php?item=945http://www.ibiblio.org/xml/slides/xmlonelondon2001/schemas/67.htmlLooking forward to your comments.Ivelin----- Original Message -----From: "Ivelin Ivanov" <iv...@iname.com>To: <co...@xml.apache.org>Cc: "Dmitri Plotnikov" <dm...@plotnix.com>Sent: Sunday, March 10, 2002 6:47 AMSubject: Re: Comitting components<
/pre>
  
    Folks,I think we might have made one small step towards HTML Form symmetry inCocoon.The approach I have taken after long discussions and even longer hoursbefore my monitor is enhancing the Cocoon Action concept so that it iscoherent 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 fromthe 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 sameJavaBean can be updated and sent back to the business logic.You can download a scratchpad formatted bundle here:http://prdownloads.sourceforge.net/freebuilder/CocoonForm.zipI'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 prototypefor 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 thediscussion:---------------------------- <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.c
om>To: "Nicola Ken Barozzi" <ni...@apache.org>;
                      
                      <co...@xml.apache.org>
                      
                        Cc: <"[dplotnik@"@iname.comSent: Thursday, March 07, 2002 3:57 PMSubject: 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 oppositeoperation: set properties of JavaBean object(s) with request param
                                    
                                    
                                    
                                    values
                                    
                                      
                                        
                                          using XPath expressions, e.g.:customer/firstname = Ozzycustomer/lastname = Osbournecan 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" <ni...@apache.org>Date: Thu, 7 Mar 2002 18:03:30 +0100To:  <co...@xml.apache.org>Subject: Re: Comitting components
                                                
                                                  From: "Matthew Langham" <ml...@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 theannouncements.
                                                                        
                                                                        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 uponMicrosoft'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 APIhttp://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) cleanbuild.(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) cleanbuild.(sh|bat) installscratchpadwarThe 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.orgFor additional commands, email: cocoon-dev-help@xml.apache.org
                                                                                                                      
                                                                                                                      --_______________________________________________Sign-up for your own FREE Personalized E-mail at Mail.comhttp://www.mail.com/?sr=signupTravelocity.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.orgFor additional commands, email: cocoon-dev-help@xml.apache.org
                                                                                                                          
                                                                                                                          ---------------------------------------------------------------------To unsubscribe, e-mail: cocoon-dev-unsubscribe@xml.apache.orgFor additional commands, email: cocoon-dev-help@xml.apache.org
                                                                                                                          
                                                                                                                          ---------------------------------------------------------------------To unsubscribe, e-mail: cocoon-dev-unsubscribe@xml.apache.orgFor additional commands, email: cocoon-dev-help@xml.apache.org
                                                                                                                          



Re: [Announcement] re: HTML Form <-> XML <-> JavaBeans Binding [was: Re: Comitting components]

Posted by Michael Wechner <co...@wyona.org>.

Matt Sergeant wrote:

>On Mon, 11 Mar 2002, Ivelin Ivanov wrote:
>
>>  Could Schematron also be (re)used as a HTML Form Editor, running
>>  on the server side?
>>
>
>http://xml.com/pub/a/2002/01/23/perl-schematron.html
>
>PS: PLEASE fix your mailer - your two line question was a 60K email
>message to hundreds of people all around the world. Not good!!!
>

Do you mean Ivelin or me (Michael)? I just see around 4K in my mailbox.
I would certainly like to fix it, if there is any reason to.

Michael


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


Re: [Announcement] re: HTML Form <-> XML <-> JavaBeans Binding [was: Re: Comitting components]

Posted by Matt Sergeant <ma...@sergeant.org>.
On Mon, 11 Mar 2002, Ivelin Ivanov wrote:

>   Could Schematron also be (re)used as a HTML Form Editor, running
>   on the server side?

http://xml.com/pub/a/2002/01/23/perl-schematron.html

PS: PLEASE fix your mailer - your two line question was a 60K email
message to hundreds of people all around the world. Not good!!!


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


Re: [Announcement] re: HTML Form <-> XML <-> JavaBeans Binding [was: Re: Comitting components]

Posted by Ivelin Ivanov <iv...@iname.com>.
  ----- Original Message ----- 
  From: Michael Wechner 
  To: cocoon-dev@xml.apache.org 
  Sent: Monday, March 11, 2002 5:18 AM
  Subject: Re: [Announcement] re: HTML Form <-> XML <-> JavaBeans Binding [was: Re: Comitting components]


  Could Schematron also be (re)used as a HTML Form Editor, running
  on the server side?

  [Ivelin] 


  Thanks

  Michael





  Ivelin Ivanov wrote:

The next thing I plan to work on is a customized Schematron meta-stylesheetfor Cocoon, which will be used for validation of HTML Forms (can be alsoapplied to SOAP messages).Before I do that though, I'd like to ask for a vote to verify the interestin 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 -> (nextaction | back to same html form with errors )Schematron is an alternative to Martin and Christian's FormValidatorActionand Descriptor.xml.It's designed to:1) provide easy to write XML structure assertions based on XPath2) user-friendly error reporting mechanism3) Complimentary to XML SchemaBased on the proposed CastorTransformer and FormBeanBinder, a Schematron<
br>trasnformer is a logical next step.Schematron has been polished and it is stable for about a year now. Has aworking XSLT implementation.Proved successful for various applications. Under a truly open sourcelicense (zlib/libpnghttp://www.ascc.net/xml/resource/schematron/copyright.txt). Hosted onSourceForge.Here are some referenes:home page: http://www.ascc.net/xml/resource/schematron/sf page: http://sourceforge.net/projects/schematrontutorial: http://www.zvon.org/xxl/SchematronTutorial/General/contents.htmlarticles:http://www.xml.com/pub/a/2002/01/23/perl-schematron.htmlhttp://www.xmlhack.com/read.php?item=945http://www.ibiblio.org/xml/slides/xmlonelondon2001/schemas/67.htmlLooking forward to your comments.Ivelin----- Original Message -----From: "Ivelin Ivanov" <iv...@iname.com>To: <co...@xml.apache.org>Cc: "Dmitri Plotnikov" <dm...@plotnix.com>Sent: Sunday, March 10, 2002 6:47 AMSubject: Re: Comitting components<
/pre>
  
    Folks,I think we might have made one small step towards HTML Form symmetry inCocoon.The approach I have taken after long discussions and even longer hoursbefore my monitor is enhancing the Cocoon Action concept so that it iscoherent 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 fromthe 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 sameJavaBean can be updated and sent back to the business logic.You can download a scratchpad formatted bundle here:http://prdownloads.sourceforge.net/freebuilder/CocoonForm.zipI'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 prototypefor 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 thediscussion:---------------------------- <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.c
om>To: "Nicola Ken Barozzi" <ni...@apache.org>;
                      
                      <co...@xml.apache.org>
                      
                        Cc: <"[dplotnik@"@iname.comSent: Thursday, March 07, 2002 3:57 PMSubject: 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 oppositeoperation: set properties of JavaBean object(s) with request param
                                    
                                    
                                    
                                    values
                                    
                                      
                                        
                                          using XPath expressions, e.g.:customer/firstname = Ozzycustomer/lastname = Osbournecan 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" <ni...@apache.org>Date: Thu, 7 Mar 2002 18:03:30 +0100To:  <co...@xml.apache.org>Subject: Re: Comitting components
                                                
                                                  From: "Matthew Langham" <ml...@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 theannouncements.
                                                                        
                                                                        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 uponMicrosoft'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 APIhttp://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) cleanbuild.(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) cleanbuild.(sh|bat) installscratchpadwarThe 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.orgFor additional commands, email: cocoon-dev-help@xml.apache.org
                                                                                                                      
                                                                                                                      --_______________________________________________Sign-up for your own FREE Personalized E-mail at Mail.comhttp://www.mail.com/?sr=signupTravelocity.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.orgFor additional commands, email: cocoon-dev-help@xml.apache.org
                                                                                                                          
                                                                                                                          ---------------------------------------------------------------------To unsubscribe, e-mail: cocoon-dev-unsubscribe@xml.apache.orgFor additional commands, email: cocoon-dev-help@xml.apache.org
                                                                                                                          
                                                                                                                          ---------------------------------------------------------------------To unsubscribe, e-mail: cocoon-dev-unsubscribe@xml.apache.orgFor additional commands, email: cocoon-dev-help@xml.apache.org
                                                                                                                          



Re: [Announcement] re: HTML Form <-> XML <-> JavaBeans Binding [was: Re: Comitting components]

Posted by Michael Wechner <co...@wyona.org>.
Could Schematron also be (re)used as a HTML Form Editor, running
on the server side?

Thanks

Michael





Ivelin Ivanov wrote:

>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" <iv...@iname.com>
>To: <co...@xml.apache.org>
>Cc: "Dmitri Plotnikov" <dm...@plotnix.com>
>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" <iv...@iname.com>
>>To: "Nicola Ken Barozzi" <ni...@apache.org>;
>>
><co...@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" <ni...@apache.org>
>>>Date: Thu, 7 Mar 2002 18:03:30 +0100
>>>To:  <co...@xml.apache.org>
>>>Subject: Re: Comitting components
>>>
>>>
>>>>From: "Matthew Langham" <ml...@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
>>
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: cocoon-dev-unsubscribe@xml.apache.org
>For additional commands, email: cocoon-dev-help@xml.apache.org
>
>