XForms and eXist
A perfect couple
         Erik Bruchez
    ebruchez@orbeon.com
A demo
XForms


• Represents form data as XML
• But how do you persist it?
XForms Persistence


    There is no such thing!
<xforms:submission>


• Allows XForms to “talk” to the world
• Fully supports REST in XForms 1.1
REST

• Using HTTP the way it was meant to be
• Identify resources with URIs
• Methods: GET, PUT, DELETE, POST
Traditionally

• UI written with Java, Ruby, ...
• Data captured as objects
• Relational database
• O-R mapping to bridge ...
Issues


• Middleware to do the mapping
• More software
What about XForms?

• Implement a REST service
• XML-relational mapping
• Or store in BLOB columns
Is there a better way?
eXist

• Native XML database
• Open source
• XQuery
• REST API
2+2=?
Perfect Match


• XML
• REST
No need for a middle
       man!
GET
<xforms:submission
  serialization=”none”
  method=”get”
  action=”http://localhost/exist/db/docs/form1.xml”
  replace...
PUT
<xforms:submission
  ref=”instance(‘form-instance’)”
  method=”put”
  action=”http://localhost/exist/db/docs/form1.xml...
DELETE
<xforms:submission
  serialization=”none”
  method=”delete”
  action=”http://localhost/exist/db/docs/form1.xml”
  r...
POST
<xforms:submission
  ref=”instance(‘search-query’)”
  method=”post”
  action=”http://localhost:8080/exist/db/docs/”
 ...
XQuery
<xforms:instance id=”search-query”>
  <exist:query>
     <exist:text>
        xquery version quot;1.0quot;;
       ...
Using XQuery results


• Output values with <xforms:output>
• Iterate with <xforms:repeat>
Conclusion

Using XForms and eXist allows you to do all
the Create/Read/Update/Delete (CRUD) and
 search operations withou...
Q &A
XForms and eXist: A Perfect Couple
Upcoming SlideShare
Loading in...5
×

XForms and eXist: A Perfect Couple

249,560

Published on

These are the slides I presented on December 3, 2007 at the XForms Evening / XML 2007 event in Boston.

Published in: Technology
5 Comments
3 Likes
Statistics
Notes
  • slow
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Didn't understand completely.....
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • looks awesome!
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • From the presentation, I couldn't agree more that Xforms simplifies the CRUD process thus simplifies coding altogether. Bravo!

    --
    Visit my blog at http://ariffshah.com
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Is there any php interface for eXist? --- http://movieteka.org
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
249,560
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
146
Comments
5
Likes
3
Embeds 0
No embeds

No notes for slide

Transcript of "XForms and eXist: A Perfect Couple"

  1. 1. XForms and eXist A perfect couple Erik Bruchez ebruchez@orbeon.com
  2. 2. A demo
  3. 3. XForms • Represents form data as XML • But how do you persist it?
  4. 4. XForms Persistence There is no such thing!
  5. 5. <xforms:submission> • Allows XForms to “talk” to the world • Fully supports REST in XForms 1.1
  6. 6. REST • Using HTTP the way it was meant to be • Identify resources with URIs • Methods: GET, PUT, DELETE, POST
  7. 7. Traditionally • UI written with Java, Ruby, ... • Data captured as objects • Relational database • O-R mapping to bridge the gap
  8. 8. Issues • Middleware to do the mapping • More software
  9. 9. What about XForms? • Implement a REST service • XML-relational mapping • Or store in BLOB columns
  10. 10. Is there a better way?
  11. 11. eXist • Native XML database • Open source • XQuery • REST API
  12. 12. 2+2=?
  13. 13. Perfect Match • XML • REST
  14. 14. No need for a middle man!
  15. 15. GET <xforms:submission serialization=”none” method=”get” action=”http://localhost/exist/db/docs/form1.xml” replace=”instance” instance=”form-instance”/>
  16. 16. PUT <xforms:submission ref=”instance(‘form-instance’)” method=”put” action=”http://localhost/exist/db/docs/form1.xml” replace=”none”/>
  17. 17. DELETE <xforms:submission serialization=”none” method=”delete” action=”http://localhost/exist/db/docs/form1.xml” replace=”none”/>
  18. 18. POST <xforms:submission ref=”instance(‘search-query’)” method=”post” action=”http://localhost:8080/exist/db/docs/” replace=”instance” instance=”query-results”/>
  19. 19. XQuery <xforms:instance id=”search-query”> <exist:query> <exist:text> xquery version quot;1.0quot;; <documents>{ for ... return ... }</documents> </exist:text> </exist:query> </xforms:instance>
  20. 20. Using XQuery results • Output values with <xforms:output> • Iterate with <xforms:repeat>
  21. 21. Conclusion Using XForms and eXist allows you to do all the Create/Read/Update/Delete (CRUD) and search operations without any middleware. The result is increased simplicity.
  22. 22. Q &A
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×