on the server side?
Thanks
Michael
Ivelin Ivanov wrote:
000801c1c8ac$fcb90ac0$0c91fea9@galina">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< br>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
< /pre>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 (andCastorTransformer),I think we now have a way to elegantly map content to business logic.(HTMLForms <-> 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 modelandthen 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 shouldbeeasy to comprehend.
The code is very simple. I've tried not to touch more advanced problemslikeerror handling and reporting, unusual custom mapping and multi pagewizards.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 presentationofa JavaBean and renders HTML forms with the appropriate XPath expressions.Itwill hopefully sharpen your apetite enough to make you look at the codeandparticipate 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] om>
To: "Nicola Ken Barozzi" <[EMAIL PROTECTED]>;<[EMAIL PROTECTED]>Cc: <"[dplotnik@"@iname.com
Sent: Thursday, March 07, 2002 3:57 PM
Subject: Re: Comitting componentsWay cool !
We've been using castor .93 for quite serious xml traffic betweenhundredswin 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'llhopefullyintroduce 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 paramvaluesusing 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 itsquality).Let me know if someone else is working in this direction so that wedon'tdouble 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 componentsFrom: "Matthew Langham" <[EMAIL PROTECTED]>today two new "things" were donated/comitted to the Cocoonscratchpad -theCastor Transformer and the POI Serialization code.
It would help people like me (who do not read all the messages ormuchworseremember them all) if comitters could add a couple of lines orparagraphsasto 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 aprojectthat consists of APIs for manipulating various file formats based upon
Microsoft's OLE 2 Compound Document format using pure Java. OLE 2CompoundDocument Format based files include most Microsoft Office files suchasXLSand DOC.
The HSSFSerializer uses POI's HSSF xls file write API
http://jakarta.apache.org/poi/hssf/index.html , and is now in Cocoonproper(not scratchpad).
It makes it possible to output xml following the schema of gnumeric toanxls file.
Examples are present in the "extra" section, under "legacy fileformats".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 ServletContextinto a series of SAX events, and can seek for the java beanautomaticaly.TheCastortransformer can be configured with a default mapping. Thismappingis 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-sitemapunderdocs.
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/promos/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]