cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ivelin Ivanov" <ive...@iname.com>
Subject Re: [Announcement] re: HTML Form <-> XML <-> JavaBeans Binding [was: Re: Comitting components]
Date Mon, 11 Mar 2002 14:59:24 GMT
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" <ivelin@iname.com>To:
<cocoon-dev@xml.apache.org>Cc: "Dmitri Plotnikov" <dmitri@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" <nicolaken@apache.org>;
                      
                      <cocoon-dev@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" <nicolaken@apache.org>Date: Thu, 7 Mar 2002 18:03:30 +0100To: 
<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 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
                                                                                         
                                



Mime
View raw message