120 likes | 134 Views
Explore the XML technologies needed to implement an XML-based workflow application, including XHTML, CSS, XForms, XML Schema, Schematron, Relax NG, DTD, NVDL, and XSLT/XPath.
E N D
XML Technologies You Need For Workflow Applications Roger L. Costello 2 January, 2009
XML Rob Jill Anthony Sally Pete Workflow Applications • Workflow applications are those applications where documents are moved around a community of people who each perform on it.
XML Technologies • The following slides lays out the XML technologies you will need for implementing an XML-based workflow application • It's a core list, you may need additional XML technologies, depending on your application • This is an all-XML solution. No imperative languages (Java, C#, etc) required.
XHTML + CSS • XHTML is an XML'ized version of HTML • Use CSS to style XHTML documents • XHTML + CSS = your GUI language
XForms • Use XForms to collect user input and automatically generate an XML document composed of the user's input <DMV> <personal-information> <name> <first-name>John</first-name> <initial>A</initial> <last-name>Smith</last-name> </name> <driver-license-number>B987695</driver-license-number> <birth-date>1983-03-03</birth-date> </personal-information> … </DMV> Web Server XML
XML Schema • Use XML Schemas to validate input as it's entered by the user <xs:schema targetNamespace="http://orbeon.org/oxf/examples/dmv" xmlns:dmv="http://orbeon.org/oxf/examples/dmv" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="DMV"> <xs:complexType> <xs:sequence> <xs:element name="personal-information"> <xs:complexType> <xs:sequence> <xs:element name="name"> <xs:complexType> <xs:sequence> <xs:element name="first-name" type="dmv:first-name"/> <xs:element name="initial" type="dmv:initial"/> <xs:element name="last-name" type="dmv:last-name"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="driver-license-number" type="dmv:driver-license-number"/> <xs:element name="birth-date" type="xs:date"/> </xs:sequence> </xs:complexType> </xs:element> … </xs:schema validate XML Schema
XML Schema, Schematron, Relax NG, DTD, NVDL • Use one or more XML validation languages server-side <DMV> <personal-information> <name> <first-name>John</first-name> <initial>A</initial> <last-name>Smith</last-name> </name> <driver-license-number>B987695</driver-license-number> <birth-date>1983-03-03</birth-date> </personal-information> … </DMV> XML Schema Relax NG Valid! Web Server Schematron DTD XML
XSLT/XPath • Use XSLT and XPath to process (apply functions to, transform, merge, sort, etc) the XML document <DMV> <personal-information> <name> <first-name>John</first-name> <initial>A</initial> <last-name>Smith</last-name> </name> <driver-license-number>B987695</driver-license-number> <birth-date>1983-03-03</birth-date> </personal-information> … </DMV> XSLT/XPath Web Server XML
XML Database • Many XML documents will be generated over time. Store them in an XML database (native, or XML-enabled) <DMV> <personal-information> <name> <first-name>John</first-name> <initial>A</initial> <last-name>Smith</last-name> </name> <driver-license-number>B987695</driver-license-number> <birth-date>1983-03-03</birth-date> </personal-information> … </DMV> <DMV> <personal-information> <name> <first-name>John</first-name> <initial>A</initial> <last-name>Smith</last-name> </name> <driver-license-number>B987695</driver-license-number> <birth-date>1983-03-03</birth-date> </personal-information> … </DMV> <DMV> <personal-information> <name> <first-name>John</first-name> <initial>A</initial> <last-name>Smith</last-name> </name> <driver-license-number>B987695</driver-license-number> <birth-date>1983-03-03</birth-date> </personal-information> … </DMV> <DMV> <personal-information> <name> <first-name>John</first-name> <initial>A</initial> <last-name>Smith</last-name> </name> <driver-license-number>B987695</driver-license-number> <birth-date>1983-03-03</birth-date> </personal-information> … </DMV> <DMV> <personal-information> <name> <first-name>John</first-name> <initial>A</initial> <last-name>Smith</last-name> </name> <driver-license-number>B987695</driver-license-number> <birth-date>1983-03-03</birth-date> </personal-information> … </DMV> Web Server XML
XQuery • Use XQuery to query the XML documents that are in the XML database <DMV> <personal-information> <name> <first-name>John</first-name> <initial>A</initial> <last-name>Smith</last-name> </name> <driver-license-number>B987695</driver-license-number> <birth-date>1983-03-03</birth-date> </personal-information> … </DMV> <DMV> <personal-information> <name> <first-name>John</first-name> <initial>A</initial> <last-name>Smith</last-name> </name> <driver-license-number>B987695</driver-license-number> <birth-date>1983-03-03</birth-date> </personal-information> … </DMV> <DMV> <personal-information> <name> <first-name>John</first-name> <initial>A</initial> <last-name>Smith</last-name> </name> <driver-license-number>B987695</driver-license-number> <birth-date>1983-03-03</birth-date> </personal-information> … </DMV> <DMV> <personal-information> <name> <first-name>John</first-name> <initial>A</initial> <last-name>Smith</last-name> </name> <driver-license-number>B987695</driver-license-number> <birth-date>1983-03-03</birth-date> </personal-information> … </DMV> XQuery
XProc • Use the XML Pipeline language, XProc, to specify the series of actions (steps) to be applied to the XML document • e.g. validate then process then store in DB then query then … Pipeline
Further Info • See Michael Kay's paper: Building Workflow Applications with XML and XQueryhttp://www.stylusstudio.com/whitepapers/xml_workflow.pdf • Also see Michael Kay's Q&A on Application Processing:http://www.xfront.com/Michael-Kay-on-application-processing/index.html