declare variable $sub-job-id as xs:string external;
declare variable $client-number as xs:string external;
declare variable $unit-status as xs:string external;
for $unit in /job/subJobs[@id = $sub-job-id]/unit
[(contains(lower-case(@client-number), lower-case($client-number))
and ($unit-status = 'all' or @status = $unit-status)]
order by $unit/@creation-date descending
return element unit {$unit/@* }
XQuery extensions
None
XQuery challenges
Customers prefer to store data in relational DB
Work around database quirks (eg: empty string Oracle)
One relational query for performance
Ongoing effort to support more of the XQuery spec
XQuery knowledge is not common
XQuery implementation
Wrote our own with pluggable data store
Relational database as back-end
Currently a subset of the XQuery spec
XSLT
Transform, merge and enrich personalization data
Conditional structural formatting of content
Designer
XSLT extensions
Custom function libraries (abstract complex expressions and business logic)
Call other XSLT+XSL-FO stylesheets dynamically
XSLT challenges
Memory consumption
Streaming mode will make life easier
Support streaming mode WYSIWYG XSL editor is challenging
XSLT implementation
Saxon PE
XSL-FO
Markup language for XML document formatting
Citations and Cross-references
Headers/footers
Keep together, keep with next, keep with previous
Orphans and widows
Running totals
Powerful conditional formatting in combination with XSLT
18 different output formats (PDF, PS, AFP, HTML5,...)
Example document
XSL-FO extensions
Mix-in SVG, XForms and Open Office Charts
Meta data (PDF annotations and TLE's in AFP)
Finishing features (Duplex printing, input and output trays)
Output specific features (AFP overlays)
BarcodeML
'Page data'
XSL-FO challenges
Performance, memory and quality requirements
Small on-demand and large batch
Nested tables which span hundreds of pages
Repeated markup (XSLT/XSL-FO formatting is separate)
Remove superfluous XSL-FO attributes
Optionally: Attribute group references
XSL-FO implementation
We created our own implementation
XForms
Interactive documents and management UI
Cross device (desktop and mobile)
host language independent (XSL-FO and HTML)
Model-view-controller
XForms extensions
A lot which are standardized in XForms 2.0
Custom components based on XBL
XForms challenges
A lot of different web browsers with their own quirks