150 likes | 348 Views
XForms. TU Delft Library Digitale Productontwikkeling. Egbert Gramsbergen. XForms. Wat is het? Waarom bestaat het? Hoe werkt het? Waar kom je ze tegen? Orbeon Demo. Wat is XForms?. “Next generation” web formulieren W3C Recommendation Als module host language (XHTML, SVG, …)
E N D
XForms TU Delft Library Digitale Productontwikkeling Egbert Gramsbergen
XForms • Wat is het? • Waarom bestaat het? • Hoe werkt het? • Waar kom je ze tegen? • Orbeon • Demo
Wat is XForms? • “Next generation” web formulieren • W3C Recommendation • Als module host language (XHTML, SVG, …) • Vervangt HTML formulieren in XHTML 2.0 • Ook voor telefoons, PDA’s, … • XForms doelen: • Ontkoppelt data, logica and presentatie • XML in, XML uit • Vereenvoudigt ontwerp van web formulieren • Minder client-side (JavaScript) code • Minder server-side code • Meer functionaliteit!
Wat is er mis met HTML Formulieren? • Primitieve data representatie • name/value paren, URL encoded • Data & presentatie door elkaar • Assemblage nodig voor beginwaarden • <input value=“initial value”> • Scripting nodig voor ongeveer alles… • Validatie • Berekeningen • Dynamische formulieren (tabs, repeterende onderdelen, onderling afhankelijke drop-down lijsten, …) => Hoge kosten voor ontwikkeling en support.
<head> </head> Doel (onzichtbaar) XForms Model <body> </body> Presentatie Form controls Hoe het werkt Tweedeling: <html> </html>
XForms Model en instance • Model bevat: • Instance data • XML Schema (constraints voor instance data) • XForms (dynamische) constraints • Submit informatie • Privacy informatie (P3P) • Instance: • Template voor (default) data • inline of ref naar extern • Zorgt voor “instance DOM” • “instance DOM” continu upgedeet (vgl. spreadsheet) • Deel van “instance DOM” wordt serialiseerd en gesubmit
XForms Model - voorbeeld <model id=“p1”> <schema src=“. . .” /> <instance xmlns=“”> <my:age/> </instance> <bind ref=“age” type=“xsd:integer” . . . /> <submission action=“. . .” /> </model> >1 instances en submissions mogelijk
Scriptloos! • XML Schema: statische constraints • Datatypes • minimum/maximum occurrences • XForms breidt dit uit met ‘computed expressions’ (runtime) • Is iets relevant of verplicht? • Berekende velden • XPath expressies
XForms Submission <submision> definieert • Wat – een deel van de “instance DOM” • Waar – target URI • Hoe – protocol • Response – wat gebeurt er na submit Protocol: post (default), get, put kan ook direct praten met web services
XForms UI controls (1) • Knoop vast aan model met xpath expressies of id • Labels & hints voor gebruiker • Suggesties voor presentatie • CSS styling Controls: <= kan overal in pagina, er is geen<form> <input> <output> <secret> <textarea> <range> <upload> <select> <select1> <trigger> <submit> en verder… <group> <switch> <itemset> <repeat>
XForms UI Controls (2) <select1 ref="my:icecream/my:flavor"> <label>Flavour</label> <item><label>Vanilla</label><value>v</value></item> <item><label>Strawberry</label><value>s</value></item> <item><label>Chocolate</label><value>c</value></item></select1> En verder…. XForms Actions (setvalue, setfocus, toggle, load, …)aangestuurd door XML events (DOMActivate, DOMFfocusIn, xforms-submit-error, xforms-model-construct-done, …)
Client-side XForms Web browsers • Mozilla / Firefox (add-on, binnenkort geïntegreerd) • Div. plugins, o.a. voor IE (FormsPlayer, FormsFaces, …) Niet-web clients • Open Office • IBM Lotus Forms, X-Smiles, … Vijand: Microsoft (concurrentie voor InfoPath)
Server-side XForms Huh? • XForms op server • Wordt op server vertaald • in (x)html + javascript/AJAX Gebeurt meer dan je denkt! Onzichtbaar van de buitenkant Software • Orbeon (open source) • Chiba (open source)
Orbeon http://www.orbeon.com/ Server-side XForms+ enkele uitbreidingen (o.a. XPath2.0, AVT’s) Afhandeling formulieren: • page flow controller • xml pipelines (xpl)met library van processoren (zelf uit te breiden):xslt, SQL, XML db, LDAP, email, images, pdf, … -> complete apps in xml !
Orbeon (2) Versch van den persch: http://www.w3.org/MarkUp/Forms/ It’s demo time ! [2]