<!DOCTYPE html>
<html b:version='2' class='v2' dir='ltr'>
<head>
<meta content='IE=EmulateIE7' http-equiv='X-UA-Compatible'/>
<meta content='width=1100' name='viewport'/>
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
<script type="text/javascript">(function() { var a=window,b="jstiming",d="tick";var e=function(c){this.t={};this.tick=function(c,p,h){h=void 0!=h?h:(new Date).getTime();this.t[c]=[h,p]};this[d]("start",null,c)},f=new e;a.jstiming={Timer:e,load:f};if(a.performance&&a.performance.timing){var g=a.performance.timing,j=a[b].load,k=g.navigationStart,l=g.responseStart;0<k&&l>=k&&(j[d]("_wtsrt",void 0,k),j[d]("wtsrt_","_wtsrt",l),j[d]("tbsd_","wtsrt_"))}
try{var m=null;a.chrome&&a.chrome.csi&&(m=Math.floor(a.chrome.csi().pageT),j&&0<k&&(j[d]("_tbnd",void 0,a.chrome.csi().startE),j[d]("tbnd_","_tbnd",k)));null==m&&a.gtbExternal&&(m=a.gtbExternal.pageT());null==m&&a.external&&(m=a.external.pageT,j&&0<k&&(j[d]("_tbnd",void 0,a.external.startE),j[d]("tbnd_","_tbnd",k)));m&&(a[b].pt=m)}catch(n){};a.tickAboveFold=function(c){var i=0;if(c.offsetParent){do i+=c.offsetTop;while(c=c.offsetParent)}c=i;750>=c&&a[b].load[d]("aft")};var q=!1;function r(){q||(q=!0,a[b].load[d]("firstScrollTime"))}a.addEventListener?a.addEventListener("scroll",r,!1):a.attachEvent("onscroll",r);
 })();</script>
<meta content='true' name='MSSmartTagsPreventParsing'/>
<meta content='blogger' name='generator'/>
<link href='http://blog.orbeon.com/favicon.ico' rel='icon' type='image/x-icon'/>
<link href='http://blog.orbeon.com/' rel='canonical'/>
<link rel="alternate" type="application/atom+xml" title="Orbeon Forms &#8212; XForms Everywhere - Atom" href="http://blog.orbeon.com/feeds/posts/default" />
<link rel="alternate" type="application/rss+xml" title="Orbeon Forms &#8212; XForms Everywhere - RSS" href="http://blog.orbeon.com/feeds/posts/default?alt=rss" />
<link rel="service.post" type="application/atom+xml" title="Orbeon Forms &#8212; XForms Everywhere - Atom" href="http://www.blogger.com/feeds/6819462794293857673/posts/default" />
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://www.blogger.com/rsd.g?blogID=6819462794293857673" />
<link rel="openid.server" href="http://www.blogger.com/openid-server.g" />
<link rel="openid.delegate" href="http://blog.orbeon.com/" />
<!--[if IE]><script type="text/javascript" src="//www.blogger.com/static/v1/jsbin/3596828972-ieretrofit.js"></script>
<![endif]-->
<!--[if IE]> <script> (function() { var html5 = ("abbr,article,aside,audio,canvas,datalist,details," + "figure,footer,header,hgroup,mark,menu,meter,nav,output," + "progress,section,time,video").split(','); for (var i = 0; i < html5.length; i++) { document.createElement(html5[i]); } try { document.execCommand('BackgroundImageCache', false, true); } catch(e) {} })(); </script> <![endif]-->
<title>Orbeon Forms &#8212; XForms Everywhere</title>
<link type='text/css' rel='stylesheet' href='//www.blogger.com/static/v1/widgets/4219271310-widget_css_2_bundle.css' />
<style id='page-skin-1' type='text/css'><!--
/*
-----------------------------------------------
Blogger Template Style
Name:     Simple
Designer: Josh Peterson
URL:      www.noaesthetic.com
----------------------------------------------- */
/* Variable definitions
====================
<Variable name="keycolor" description="Main Color" type="color" default="#66bbdd"/>
<Group description="Page Text" selector="body">
<Variable name="body.font" description="Font" type="font"
default="normal normal 12px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/>
<Variable name="body.text.color" description="Text Color" type="color" default="#222222"/>
</Group>
<Group description="Backgrounds" selector=".body-fauxcolumns-outer">
<Variable name="body.background.color" description="Outer Background" type="color" default="#66bbdd"/>
<Variable name="content.background.color" description="Main Background" type="color" default="#ffffff"/>
<Variable name="header.background.color" description="Header Background" type="color" default="transparent"/>
</Group>
<Group description="Links" selector=".main-outer">
<Variable name="link.color" description="Link Color" type="color" default="#2288bb"/>
<Variable name="link.visited.color" description="Visited Color" type="color" default="#888888"/>
<Variable name="link.hover.color" description="Hover Color" type="color" default="#33aaff"/>
</Group>
<Group description="Blog Title" selector=".header h1">
<Variable name="header.font" description="Font" type="font"
default="normal normal 60px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/>
<Variable name="header.text.color" description="Title Color" type="color" default="#3399bb" />
</Group>
<Group description="Blog Description" selector=".header .description">
<Variable name="description.text.color" description="Description Color" type="color"
default="#777777" />
</Group>
<Group description="Tabs Text" selector=".tabs-inner .widget li a">
<Variable name="tabs.font" description="Font" type="font"
default="normal normal 14px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/>
<Variable name="tabs.text.color" description="Text Color" type="color" default="#999999"/>
<Variable name="tabs.selected.text.color" description="Selected Color" type="color" default="#000000"/>
</Group>
<Group description="Tabs Background" selector=".tabs-outer .PageList">
<Variable name="tabs.background.color" description="Background Color" type="color" default="#f5f5f5"/>
<Variable name="tabs.selected.background.color" description="Selected Color" type="color" default="#eeeeee"/>
</Group>
<Group description="Post Title" selector="h3.post-title, .comments h4">
<Variable name="post.title.font" description="Font" type="font"
default="normal normal 22px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/>
</Group>
<Group description="Date Header" selector=".date-header">
<Variable name="date.header.color" description="Text Color" type="color"
default="#222222"/>
<Variable name="date.header.background.color" description="Background Color" type="color"
default="transparent"/>
</Group>
<Group description="Post Footer" selector=".post-footer">
<Variable name="post.footer.text.color" description="Text Color" type="color" default="#666666"/>
<Variable name="post.footer.background.color" description="Background Color" type="color"
default="#f9f9f9"/>
<Variable name="post.footer.border.color" description="Shadow Color" type="color" default="#eeeeee"/>
</Group>
<Group description="Gadgets" selector="h2">
<Variable name="widget.title.font" description="Title Font" type="font"
default="normal bold 11px Arial, Tahoma, Helvetica, FreeSans, sans-serif"/>
<Variable name="widget.title.text.color" description="Title Color" type="color" default="#000000"/>
<Variable name="widget.alternate.text.color" description="Alternate Color" type="color" default="#999999"/>
</Group>
<Group description="Images" selector=".main-inner">
<Variable name="image.background.color" description="Background Color" type="color" default="#ffffff"/>
<Variable name="image.border.color" description="Border Color" type="color" default="#eeeeee"/>
<Variable name="image.text.color" description="Caption Text Color" type="color" default="#222222"/>
</Group>
<Group description="Accents" selector=".content-inner">
<Variable name="body.rule.color" description="Separator Line Color" type="color" default="#eeeeee"/>
<Variable name="tabs.border.color" description="Tabs Border Color" type="color" default="#eeeeee"/>
</Group>
<Variable name="body.background" description="Body Background" type="background"
color="#ffffff" default="$(color) none repeat scroll top left"/>
<Variable name="body.background.override" description="Body Background Override" type="string" default=""/>
<Variable name="body.background.gradient.cap" description="Body Gradient Cap" type="url"
default="url(//www.blogblog.com/1kt/simple/gradients_light.png)"/>
<Variable name="body.background.gradient.tile" description="Body Gradient Tile" type="url"
default="url(//www.blogblog.com/1kt/simple/body_gradient_tile_light.png)"/>
<Variable name="content.background.color.selector" description="Content Background Color Selector" type="string" default=".content-inner"/>
<Variable name="content.padding" description="Content Padding" type="length" default="10px"/>
<Variable name="content.padding.horizontal" description="Content Horizontal Padding" type="length" default="10px"/>
<Variable name="content.shadow.spread" description="Content Shadow Spread" type="length" default="40px"/>
<Variable name="content.shadow.spread.webkit" description="Content Shadow Spread (WebKit)" type="length" default="5px"/>
<Variable name="content.shadow.spread.ie" description="Content Shadow Spread (IE)" type="length" default="10px"/>
<Variable name="main.border.width" description="Main Border Width" type="length" default="0"/>
<Variable name="header.background.gradient" description="Header Gradient" type="url" default="none"/>
<Variable name="header.shadow.offset.left" description="Header Shadow Offset Left" type="length" default="-1px"/>
<Variable name="header.shadow.offset.top" description="Header Shadow Offset Top" type="length" default="-1px"/>
<Variable name="header.shadow.spread" description="Header Shadow Spread" type="length" default="1px"/>
<Variable name="header.padding" description="Header Padding" type="length" default="30px"/>
<Variable name="header.border.size" description="Header Border Size" type="length" default="1px"/>
<Variable name="header.bottom.border.size" description="Header Bottom Border Size" type="length" default="0"/>
<Variable name="header.border.horizontalsize" description="Header Horizontal Border Size" type="length" default="0"/>
<Variable name="description.text.size" description="Description Text Size" type="string" default="140%"/>
<Variable name="tabs.margin.top" description="Tabs Margin Top" type="length" default="0" />
<Variable name="tabs.margin.side" description="Tabs Side Margin" type="length" default="30px" />
<Variable name="tabs.background.gradient" description="Tabs Background Gradient" type="url"
default="url(//www.blogblog.com/1kt/simple/gradients_light.png)"/>
<Variable name="tabs.border.width" description="Tabs Border Width" type="length" default="1px"/>
<Variable name="tabs.bevel.border.width" description="Tabs Bevel Border Width" type="length" default="1px"/>
<Variable name="date.header.padding" description="Date Header Padding" type="string" default="inherit"/>
<Variable name="date.header.letterspacing" description="Date Header Letter Spacing" type="string" default="inherit"/>
<Variable name="date.header.margin" description="Date Header Margin" type="string" default="inherit"/>
<Variable name="post.margin.bottom" description="Post Bottom Margin" type="length" default="25px"/>
<Variable name="image.border.small.size" description="Image Border Small Size" type="length" default="2px"/>
<Variable name="image.border.large.size" description="Image Border Large Size" type="length" default="5px"/>
<Variable name="page.width.selector" description="Page Width Selector" type="string" default=".region-inner"/>
<Variable name="page.width" description="Page Width" type="string" default="auto"/>
<Variable name="main.section.margin" description="Main Section Margin" type="length" default="15px"/>
<Variable name="main.padding" description="Main Padding" type="length" default="15px"/>
<Variable name="main.padding.top" description="Main Padding Top" type="length" default="30px"/>
<Variable name="main.padding.bottom" description="Main Padding Bottom" type="length" default="30px"/>
<Variable name="paging.background"
color="#ffffff"
description="Background of blog paging area" type="background"
default="transparent none no-repeat scroll top center"/>
<Variable name="footer.bevel" description="Bevel border length of footer" type="length" default="0"/>
<Variable name="mobile.background.overlay" description="Mobile Background Overlay" type="string"
default="transparent none repeat scroll top left"/>
<Variable name="mobile.background.size" description="Mobile Background Size" type="string" default="auto"/>
<Variable name="mobile.button.color" description="Mobile Button Color" type="color" default="#ffffff" />
<Variable name="startSide" description="Side where text starts in blog language" type="automatic" default="left"/>
<Variable name="endSide" description="Side where text ends in blog language" type="automatic" default="right"/>
*/
/* Content
----------------------------------------------- */
body {
font: normal normal 12px Arial, Tahoma, Helvetica, FreeSans, sans-serif;
color: #222222;
background: #ffffff none repeat scroll top left;
padding: 0 40px 40px 40px;
}
html body .region-inner {
min-width: 0;
max-width: 100%;
width: auto;
}
a:link {
text-decoration:none;
color: #cc6611;
}
a:visited {
text-decoration:none;
color: #888888;
}
a:hover {
text-decoration:underline;
color: #ff9900;
}
.body-fauxcolumn-outer .fauxcolumn-inner {
background: transparent url(//www.blogblog.com/1kt/simple/body_gradient_tile_light.png) repeat scroll top left;
_background-image: none;
}
.body-fauxcolumn-outer .cap-top {
position: absolute;
z-index: 1;
height: 400px;
width: 100%;
background: #ffffff none repeat scroll top left;
}
.body-fauxcolumn-outer .cap-top .cap-left {
width: 100%;
background: transparent url(//www.blogblog.com/1kt/simple/gradients_light.png) repeat-x scroll top left;
_background-image: none;
}
.content-outer {
-moz-box-shadow: 0 0 40px rgba(0, 0, 0, .15);
-webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .15);
-goog-ms-box-shadow: 0 0 10px #333333;
box-shadow: 0 0 40px rgba(0, 0, 0, .15);
margin-bottom: 1px;
}
.content-inner {
padding: 10px 10px;
}
.content-inner {
background-color: #ffffff;
}
/* Header
----------------------------------------------- */
.header-outer {
background: #ff9900 url(http://www.blogblog.com/1kt/simple/gradients_light.png) repeat-x scroll 0 -400px;
_background-image: none;
}
.Header h1 {
font: normal normal 50px Arial, Tahoma, Helvetica, FreeSans, sans-serif;
color: #ffffff;
text-shadow: 1px 2px 3px rgba(0, 0, 0, .2);
}
.Header h1 a {
color: #ffffff;
}
.Header .description {
font-size: 140%;
color: #ffffff;
}
.header-inner .Header .titlewrapper {
padding: 22px 30px;
}
.header-inner .Header .descriptionwrapper {
padding: 0 30px;
}
/* Tabs
----------------------------------------------- */
.tabs-inner .section:first-child {
border-top: 0 solid #eeeeee;
}
.tabs-inner .section:first-child ul {
margin-top: -0;
border-top: 0 solid #eeeeee;
border-left: 0 solid #eeeeee;
border-right: 0 solid #eeeeee;
}
.tabs-inner .widget ul {
background: #f5f5f5 url(//www.blogblog.com/1kt/simple/gradients_light.png) repeat-x scroll 0 -800px;
_background-image: none;
border-bottom: 1px solid #eeeeee;
margin-top: 0;
margin-left: -30px;
margin-right: -30px;
}
.tabs-inner .widget li a {
display: inline-block;
padding: .6em 1em;
font: normal normal 14px Arial, Tahoma, Helvetica, FreeSans, sans-serif;
color: #999999;
border-left: 1px solid #ffffff;
border-right: 1px solid #eeeeee;
}
.tabs-inner .widget li:first-child a {
border-left: none;
}
.tabs-inner .widget li.selected a, .tabs-inner .widget li a:hover {
color: #000000;
background-color: #eeeeee;
text-decoration: none;
}
/* Columns
----------------------------------------------- */
.main-outer {
border-top: 0 solid #eeeeee;
}
.fauxcolumn-left-outer .fauxcolumn-inner {
border-right: 1px solid #eeeeee;
}
.fauxcolumn-right-outer .fauxcolumn-inner {
border-left: 1px solid #eeeeee;
}
/* Headings
----------------------------------------------- */
h2 {
margin: 0 0 1em 0;
font: normal bold 11px Arial, Tahoma, Helvetica, FreeSans, sans-serif;
color: #000000;
text-transform: uppercase;
}
/* Widgets
----------------------------------------------- */
.widget .zippy {
color: #999999;
text-shadow: 2px 2px 1px rgba(0, 0, 0, .1);
}
.widget .popular-posts ul {
list-style: none;
}
/* Posts
----------------------------------------------- */
.date-header span {
background-color: transparent;
color: #222222;
padding: inherit;
letter-spacing: inherit;
margin: inherit;
}
.main-inner {
padding-top: 30px;
padding-bottom: 30px;
}
.main-inner .column-center-inner {
padding: 0 15px;
}
.main-inner .column-center-inner .section {
margin: 0 15px;
}
.post {
margin: 0 0 25px 0;
}
h3.post-title, .comments h4 {
font: normal normal 22px Arial, Tahoma, Helvetica, FreeSans, sans-serif;
margin: .75em 0 0;
}
.post-body {
font-size: 110%;
line-height: 1.4;
position: relative;
}
.post-body img, .post-body .tr-caption-container, .Profile img, .Image img,
.BlogList .item-thumbnail img {
padding: 2px;
background: #ffffff;
border: 1px solid #eeeeee;
-moz-box-shadow: 1px 1px 5px rgba(0, 0, 0, .1);
-webkit-box-shadow: 1px 1px 5px rgba(0, 0, 0, .1);
box-shadow: 1px 1px 5px rgba(0, 0, 0, .1);
}
.post-body img, .post-body .tr-caption-container {
padding: 5px;
}
.post-body .tr-caption-container {
color: #222222;
}
.post-body .tr-caption-container img {
padding: 0;
background: transparent;
border: none;
-moz-box-shadow: 0 0 0 rgba(0, 0, 0, .1);
-webkit-box-shadow: 0 0 0 rgba(0, 0, 0, .1);
box-shadow: 0 0 0 rgba(0, 0, 0, .1);
}
.post-header {
margin: 0 0 1.5em;
line-height: 1.6;
font-size: 90%;
}
.post-footer {
margin: 20px -2px 0;
padding: 5px 10px;
color: #666666;
background-color: #f9f9f9;
border-bottom: 1px solid #eeeeee;
line-height: 1.6;
font-size: 90%;
}
#comments .comment-author {
padding-top: 1.5em;
border-top: 1px solid #eeeeee;
background-position: 0 1.5em;
}
#comments .comment-author:first-child {
padding-top: 0;
border-top: none;
}
.avatar-image-container {
margin: .2em 0 0;
}
#comments .avatar-image-container img {
border: 1px solid #eeeeee;
}
/* Comments
----------------------------------------------- */
.comments .comments-content .icon.blog-author {
background-repeat: no-repeat;
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9sLFwMeCjjhcOMAAAD+SURBVDjLtZSvTgNBEIe/WRRnm3U8RC1neQdsm1zSBIU9VVF1FkUguQQsD9ITmD7ECZIJSE4OZo9stoVjC/zc7ky+zH9hXwVwDpTAWWLrgS3QAe8AZgaAJI5zYAmc8r0G4AHYHQKVwII8PZrZFsBFkeRCABYiMh9BRUhnSkPTNCtVXYXURi1FpBDgArj8QU1eVXUzfnjv7yP7kwu1mYrkWlU33vs1QNu2qU8pwN0UpKoqokjWwCztrMuBhEhmh8bD5UDqur75asbcX0BGUB9/HAMB+r32hznJgXy2v0sGLBcyAJ1EK3LFcbo1s91JeLwAbwGYu7TP/3ZGfnXYPgAVNngtqatUNgAAAABJRU5ErkJggg==);
}
.comments .comments-content .loadmore a {
border-top: 1px solid #999999;
border-bottom: 1px solid #999999;
}
.comments .comment-thread.inline-thread {
background-color: #f9f9f9;
}
.comments .continue {
border-top: 2px solid #999999;
}
/* Accents
---------------------------------------------- */
.section-columns td.columns-cell {
border-left: 1px solid #eeeeee;
}
.blog-pager {
background: transparent none no-repeat scroll top center;
}
.blog-pager-older-link, .home-link,
.blog-pager-newer-link {
background-color: #ffffff;
padding: 5px;
}
.footer-outer {
border-top: 0 dashed #bbbbbb;
}
/* Mobile
----------------------------------------------- */
body.mobile  {
background-size: auto;
}
.mobile .body-fauxcolumn-outer {
background: transparent none repeat scroll top left;
}
.mobile .body-fauxcolumn-outer .cap-top {
background-size: 100% auto;
}
.mobile .content-outer {
-webkit-box-shadow: 0 0 3px rgba(0, 0, 0, .15);
box-shadow: 0 0 3px rgba(0, 0, 0, .15);
padding: 0 40px;
}
body.mobile .AdSense {
margin: 0 -40px;
}
.mobile .tabs-inner .widget ul {
margin-left: 0;
margin-right: 0;
}
.mobile .post {
margin: 0;
}
.mobile .main-inner .column-center-inner .section {
margin: 0;
}
.mobile .date-header span {
padding: 0.1em 10px;
margin: 0 -10px;
}
.mobile h3.post-title {
margin: 0;
}
.mobile .blog-pager {
background: transparent none no-repeat scroll top center;
}
.mobile .footer-outer {
border-top: none;
}
.mobile .main-inner, .mobile .footer-inner {
background-color: #ffffff;
}
.mobile-index-contents {
color: #222222;
}
.mobile-link-button {
background-color: #cc6611;
}
.mobile-link-button a:link, .mobile-link-button a:visited {
color: #ffffff;
}
.mobile .tabs-inner .section:first-child {
border-top: none;
}
.mobile .tabs-inner .PageList .widget-content {
background-color: #eeeeee;
color: #000000;
border-top: 1px solid #eeeeee;
border-bottom: 1px solid #eeeeee;
}
.mobile .tabs-inner .PageList .widget-content .pagelist-arrow {
border-left: 1px solid #eeeeee;
}
.content .gist .gist-file .gist-data pre {
font-family: 'Bitstream Vera Sans Mono','Courier',monospace;
font-size: 11px;
line-height: 1.15;
}
.content .twtr-widget .twtr-hd { display: none }
.content .twtr-widget .twtr-ft img { display: none }
.content .twtr-widget .twtr-doc {
font: 12px Arial,Tahoma,Helvetica,FreeSans,sans-serif;
}
blockquote, pre {
background-color: #F8F8F8;
border: 1px solid #CCC;
font-size: 13px;
line-height: 19px;
overflow: auto;
padding: 6px 10px;
border-radius: 3px;
}
code {
margin: 0 2px;
padding: 0 5px;
white-space: nowrap;
border: 1px solid #EAEAEA;
background-color: #F8F8F8;
border-radius: 3px;
}
pre code {
background-color: transparent;
border: none;
}
pre > code {
margin: 0;
padding: 0;
white-space: pre;
border: none;
background: transparent;
}
sup, sub, a.footnote {
font-size: 1.4ex;
height: 0;
line-height: 1;
vertical-align: super;
position: relative
}
--></style>
<style id='template-skin-1' type='text/css'><!--
body {
min-width: 974px;
}
.content-outer, .content-fauxcolumn-outer, .region-inner {
min-width: 974px;
max-width: 974px;
_width: 974px;
}
.main-inner .columns {
padding-left: 0px;
padding-right: 260px;
}
.main-inner .fauxcolumn-center-outer {
left: 0px;
right: 260px;
/* IE6 does not respect left and right together */
_width: expression(this.parentNode.offsetWidth -
parseInt("0px") -
parseInt("260px") + 'px');
}
.main-inner .fauxcolumn-left-outer {
width: 0px;
}
.main-inner .fauxcolumn-right-outer {
width: 260px;
}
.main-inner .column-left-outer {
width: 0px;
right: 100%;
margin-left: -0px;
}
.main-inner .column-right-outer {
width: 260px;
margin-right: -260px;
}
#layout {
min-width: 0;
}
#layout .content-outer {
min-width: 0;
width: 800px;
}
#layout .region-inner {
min-width: 0;
width: auto;
}
--></style>
<script type="text/javascript">var a=navigator,b="userAgent",c="indexOf",f="&m=1",g="(^|&)m=",h="?",i="?m=1";function j(){var d=window.location.href,e=d.split(h);switch(e.length){case 1:return d+i;case 2:return 0<=e[1].search(g)?null:d+f;default:return null}}if(-1!=a[b][c]("Mobile")&&-1!=a[b][c]("WebKit")&&-1==a[b][c]("iPad")||-1!=a[b][c]("Opera Mini")||-1!=a[b][c]("IEMobile")){var k=j();k&&window.location.replace(k)};
</script><script type="text/javascript">
if (window.jstiming) window.jstiming.load.tick('headEnd');
</script></head>
<body class='loading'>
<div class='navbar section' id='navbar'>
</div>
<div itemscope='itemscope' itemtype='http://schema.org/Blog' style='display: none;'>
<meta content='Orbeon Forms — XForms Everywhere' itemprop='name'/>
</div>
<div class='body-fauxcolumns'>
<div class='fauxcolumn-outer body-fauxcolumn-outer'>
<div class='cap-top'>
<div class='cap-left'></div>
<div class='cap-right'></div>
</div>
<div class='fauxborder-left'>
<div class='fauxborder-right'></div>
<div class='fauxcolumn-inner'>
</div>
</div>
<div class='cap-bottom'>
<div class='cap-left'></div>
<div class='cap-right'></div>
</div>
</div>
</div>
<div class='content'>
<div class='content-fauxcolumns'>
<div class='fauxcolumn-outer content-fauxcolumn-outer'>
<div class='cap-top'>
<div class='cap-left'></div>
<div class='cap-right'></div>
</div>
<div class='fauxborder-left'>
<div class='fauxborder-right'></div>
<div class='fauxcolumn-inner'>
</div>
</div>
<div class='cap-bottom'>
<div class='cap-left'></div>
<div class='cap-right'></div>
</div>
</div>
</div>
<div class='content-outer'>
<div class='content-cap-top cap-top'>
<div class='cap-left'></div>
<div class='cap-right'></div>
</div>
<div class='fauxborder-left content-fauxborder-left'>
<div class='fauxborder-right content-fauxborder-right'></div>
<div class='content-inner'>
<header>
<div class='header-outer'>
<div class='header-cap-top cap-top'>
<div class='cap-left'></div>
<div class='cap-right'></div>
</div>
<div class='fauxborder-left header-fauxborder-left'>
<div class='fauxborder-right header-fauxborder-right'></div>
<div class='region-inner header-inner'>
<div class='header section' id='header'><div class='widget Header' id='Header1'>
<div id='header-inner'>
<div class='titlewrapper'>
<h1 class='title'>
Orbeon Forms &#8212; XForms Everywhere
</h1>
</div>
<div class='descriptionwrapper'>
<p class='description'><span>Web Forms for the Enterprise, Done the Right Way</span></p>
</div>
</div>
</div></div>
</div>
</div>
<div class='header-cap-bottom cap-bottom'>
<div class='cap-left'></div>
<div class='cap-right'></div>
</div>
</div>
</header>
<div class='tabs-outer'>
<div class='tabs-cap-top cap-top'>
<div class='cap-left'></div>
<div class='cap-right'></div>
</div>
<div class='fauxborder-left tabs-fauxborder-left'>
<div class='fauxborder-right tabs-fauxborder-right'></div>
<div class='region-inner tabs-inner'>
<div class='tabs section' id='crosscol'></div>
<div class='tabs section' id='crosscol-overflow'></div>
</div>
</div>
<div class='tabs-cap-bottom cap-bottom'>
<div class='cap-left'></div>
<div class='cap-right'></div>
</div>
</div>
<div class='main-outer'>
<div class='main-cap-top cap-top'>
<div class='cap-left'></div>
<div class='cap-right'></div>
</div>
<div class='fauxborder-left main-fauxborder-left'>
<div class='fauxborder-right main-fauxborder-right'></div>
<div class='region-inner main-inner'>
<div class='columns fauxcolumns'>
<div class='fauxcolumn-outer fauxcolumn-center-outer'>
<div class='cap-top'>
<div class='cap-left'></div>
<div class='cap-right'></div>
</div>
<div class='fauxborder-left'>
<div class='fauxborder-right'></div>
<div class='fauxcolumn-inner'>
</div>
</div>
<div class='cap-bottom'>
<div class='cap-left'></div>
<div class='cap-right'></div>
</div>
</div>
<div class='fauxcolumn-outer fauxcolumn-left-outer'>
<div class='cap-top'>
<div class='cap-left'></div>
<div class='cap-right'></div>
</div>
<div class='fauxborder-left'>
<div class='fauxborder-right'></div>
<div class='fauxcolumn-inner'>
</div>
</div>
<div class='cap-bottom'>
<div class='cap-left'></div>
<div class='cap-right'></div>
</div>
</div>
<div class='fauxcolumn-outer fauxcolumn-right-outer'>
<div class='cap-top'>
<div class='cap-left'></div>
<div class='cap-right'></div>
</div>
<div class='fauxborder-left'>
<div class='fauxborder-right'></div>
<div class='fauxcolumn-inner'>
</div>
</div>
<div class='cap-bottom'>
<div class='cap-left'></div>
<div class='cap-right'></div>
</div>
</div>
<!-- corrects IE6 width calculation -->
<div class='columns-inner'>
<div class='column-center-outer'>
<div class='column-center-inner'>
<div class='main section' id='main'><div class='widget Blog' id='Blog1'>
<div class='blog-posts hfeed'>
<!-- google_ad_section_start(name=default) -->

          <div class="date-outer">
        
<h2 class='date-header'><span>Tuesday, January 8, 2013</span></h2>

          <div class="date-posts">
        
<div class='post-outer'>
<div class='post hentry uncustomized-post-template' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'>
<meta content='http://2.bp.blogspot.com/-Q0ZZApICwCw/UOyvfp2gJ0I/AAAAAAAAEtU/gGhsT-Cwf5w/s72-c/image00.png' itemprop='image_url'/>
<meta content='6819462794293857673' itemprop='blogId'/>
<meta content='4621992006330529998' itemprop='postId'/>
<a name='4621992006330529998'></a>
<h3 class='post-title entry-title' itemprop='name'>
<a href='http://blog.orbeon.com/2013/01/automatic-remapping-of-windows-1252.html'>Automatic remapping of Windows-1252 characters to Unicode</a>
</h3>
<div class='post-header'>
<div class='post-header-line-1'></div>
</div>
<div class='post-body entry-content' id='post-body-4621992006330529998' itemprop='description articleBody'>
<a href="http://www.flickr.com/photos/lwr/3491396612/" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="200" src="http://2.bp.blogspot.com/-Q0ZZApICwCw/UOyvfp2gJ0I/AAAAAAAAEtU/gGhsT-Cwf5w/s200/image00.png" width="200" /></a>

<p>Nowadays, almost everything uses <a href="http://en.wikibooks.org/wiki/Unicode/Character_reference/0000-0FFF">Unicode</a>, which supports a large (<a href="http://www.youtube.com/watch?v=Z_sl99D2a18">very large!</a>) number of characters. Unicode assign a code (number) to each character, and in most cases this code is represented with:</p>

<ul>
<li>2 bytes when in memory (e.g. in Java and Windows <a href="http://en.wikipedia.org/wiki/Unicode#Operating_systems">since NT</a>);</li>
<li>A variable number of bytes when sent over the wire (typically UTF-8 encoded).</li>
</ul>

<p>Before Unicode, a single byte per character was used for Western languages, with the <a href="http://en.wikipedia.org/wiki/ISO/IEC_8859-1">ISO Latin-1 encoding</a>. This encoding was fine for most Western characters but didn't contain some useful characters, such as curved quotes, the euro sign, the trademark sign, plus many others. In their infinite wisdom, Microsoft decided to use some reserved codes of Latin-1 for those "useful" characters, creating the <a href="http://en.wikipedia.org/wiki/Windows-1252">Windows 1252 encoding</a>.</p>

<p>Unicode is based on Latin-1, and not Windows-1252, which means that the code for all those "useful characters" is higher than 255 in Unicode. The problem is that documents encoded with Windows-1252 are often incorrectly opened as Latin-1. The mistake is easy to do, as it works "in most cases". The error is so common, that the HTML5 spec <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#character-encodings-0">says</a> that a browser should parse document advertised as using Latin-1 as Windows-1252 (not trusting the advertised encoding!).</p>

<p>But should you incorrectly take that Windows-1252 encoded file as a Latin-1 encoded file, and pass along its content to a system where it is saved as Unicode, you might end up with control characters; if the text is sent back to the browser, still as Unicode, those control characters will show as squares, instead of the curved quotes, euro sign, or trademark signs you originally intended.</p>

<p>Luckily, there is a way to safely and automatically fix incorrectly encoded documents. This is done by changing the code for characters that exist in Windows-1252, but not Latin-1, to their valid Unicode code, using a simple <a href="http://">conversion table</a>. And Orbeon automatically does this for you. And of course, <a href="http://wiki.orbeon.com/forms/doc/developer-guide/processors-converters#TOC-Built-in-custom-serializers">configuration properties</a> allow you to disable this automatic conversion, or even to setup your own custom conversion.</p>
<div style='clear: both;'></div>
</div>
<div class='post-footer'>
<div class='post-footer-line post-footer-line-1'>
<span class='post-author vcard'>
Posted by
<span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'>
<meta content='http://www.blogger.com/profile/06085176014230803685' itemprop='url'/>
<a href='http://www.blogger.com/profile/06085176014230803685' rel='author' title='author profile'>
<span itemprop='name'>Alessandro Vernet</span>
</a>
</span>
</span>
<span class='post-timestamp'>
at
<meta content='http://blog.orbeon.com/2013/01/automatic-remapping-of-windows-1252.html' itemprop='url'/>
<a class='timestamp-link' href='http://blog.orbeon.com/2013/01/automatic-remapping-of-windows-1252.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2013-01-08T15:52:00-08:00'>3:52 PM</abbr></a>
</span>
<span class='reaction-buttons'>
</span>
<span class='star-ratings'>
</span>
<span class='post-comment-link'>
<a class='comment-link' href='http://blog.orbeon.com/2013/01/automatic-remapping-of-windows-1252.html#comment-form' onclick=''>
No comments:
      </a>
</span>
<span class='post-backlinks post-comment-link'>
</span>
<span class='post-icons'>
<span class='item-control blog-admin pid-1222204161'>
<a href='http://www.blogger.com/post-edit.g?blogID=6819462794293857673&postID=4621992006330529998&from=pencil' title='Edit Post'>
<img alt='' class='icon-action' height='18' src='http://img2.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/>
</a>
</span>
</span>
<div class='post-share-buttons goog-inline-block'>
</div>
</div>
<div class='post-footer-line post-footer-line-2'>
<span class='post-labels'>
</span>
</div>
<div class='post-footer-line post-footer-line-3'>
<span class='post-location'>
</span>
</div>
</div>
</div>
</div>

            </div></div>
          

          <div class="date-outer">
        
<h2 class='date-header'><span>Wednesday, December 12, 2012</span></h2>

          <div class="date-posts">
        
<div class='post-outer'>
<div class='post hentry uncustomized-post-template' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'>
<meta content='6819462794293857673' itemprop='blogId'/>
<meta content='2028632471780080213' itemprop='postId'/>
<a name='2028632471780080213'></a>
<h3 class='post-title entry-title' itemprop='name'>
<a href='http://blog.orbeon.com/2012/12/orbeon-forms-40-m19.html'>Orbeon Forms 4.0 M19</a>
</h3>
<div class='post-header'>
<div class='post-header-line-1'></div>
</div>
<div class='post-body entry-content' id='post-body-2028632471780080213' itemprop='description articleBody'>
Today we released Orbeon Forms 4.0 M19 (Milestone 19). Like <a href="http://blog.orbeon.com/2012/12/orbeon-forms-40-m18.html">4.0 M18</a>&nbsp;and the previous milestones this is <b>not a final release</b>.<br />
<ul>
</ul>
In this release, the following issues were addressed:<br />
<ul>
<li>Form Builder</li>
<ul>
<li>Copy/paste of control loses translation (<a href="https://github.com/orbeon/orbeon-forms/issues/625">#625</a>)</li>
<li>Enable XPath type annotations by default in Builder (<a href="https://github.com/orbeon/orbeon-forms/issues/630">#630</a>)</li>
<li>When creating a new form, dialog shouldn't show a 'cancel' link (<a href="https://github.com/orbeon/orbeon-forms/issues/590">#590</a>)</li>
<li>Form settings: textarea is not tall enough (<a href="https://github.com/orbeon/orbeon-forms/issues/622">#622</a>)</li>
<li>Setting help to blank doesn't remove help (<a href="https://github.com/orbeon/orbeon-forms/issues/577">#577</a>)</li>
<li>Custom XML: focus taken out of XML editor on click (<a href="https://github.com/orbeon/orbeon-forms/issues/642">#642</a>)</li>
<li>Custom XML: dialog is too narrow, not high enough (<a href="https://github.com/orbeon/orbeon-forms/issues/643">#643</a>)</li>
<li>Should not be able to set the focus on a readonly CodeMirror (<a href="https://github.com/orbeon/orbeon-forms/issues/645">#645</a>)</li>
<li>Regression: Action editor: input/output values can't be set (<a href="https://github.com/orbeon/orbeon-forms/issues/647">#647</a>)</li>
<li>403 error when testing form containing an XPath error (<a href="https://github.com/orbeon/orbeon-forms/issues/627">#627</a>)</li>
<li>Wizard view by default for orbeon/controls</li>
<li>Make fields required in Action Editor</li>
</ul>
<li>Form Runner</li>
<ul>
<li>Required asterisk doesn't show in dialogs (<a href="https://github.com/orbeon/orbeon-forms/issues/639">#639</a>)</li>
<li>fr:number is now <a href="https://sites.google.com/a/orbeon.com/forms/doc/developer-guide/xbl-components/number">documented</a>&nbsp;(<a href="https://github.com/orbeon/orbeon-forms/issues/546">#546</a>)</li>
<li>Add fr-grid-col-&lt;x&gt; classes on cols and fr-grid-&lt;id&gt; on table (<a href="https://github.com/orbeon/orbeon-forms/commit/a4bcef17668ef3a9399e01ff628b037a5a300341">a4bcef1766</a>)</li>
<li>More files converted to LESS</li>
</ul>
<li>XForms engine</li>
<ul>
<li>Increase XPath cache size for very large forms (<a href="https://github.com/orbeon/orbeon-forms/commit/1eae55244891077d2fb5d392871d25d2bdf5d463">1eae552448</a>)</li>
<li>Some performance improvements (<a href="https://github.com/orbeon/orbeon-forms/commit/4e9d661dbaf5cae11e9a95a764bbfcf41bc46d98">4e9d661dba</a>, <a href="https://github.com/orbeon/orbeon-forms/commit/4c619bd5a6698da9534ce9869e08a9918fe710c2">4c619bd5a6</a>)</li>
<li>Calendar resource in Polish (<a href="https://github.com/orbeon/orbeon-forms/commit/da59e94de14c60d1e49239917ca2bb4e4488364d">da59e94de1</a>)</li>
</ul>
<ul>
<ul>
</ul>
</ul>
</ul>
More information is available in the in-progress <a href="http://wiki.orbeon.com/forms/doc/developer-guide/release-notes/40">release notes for 4.0</a>.<br />
<br />
You can download the builds using these links:<br />
<ul>
<li>PE version:&nbsp;<a href="https://s3.amazonaws.com/orbeon-downloads/orbeon-4.0.0.M19.201212120146-PE.zip">orbeon-4.0.0.M19.201212120146-PE.zip</a></li>
<li>CE version:&nbsp;<a href="https://s3.amazonaws.com/orbeon-downloads/orbeon-4.0.0.M19.201212120202-CE.zip">orbeon-4.0.0.M19.201212120202-CE.zip</a></li>
</ul>
Don't forget to&nbsp;<a href="http://www.orbeon.com/orbeon/fr/orbeon/register/new">grab a trial license</a>&nbsp;for the PE version.<br />
<br />
Please send feedback:<br />
<ul>
<li>via&nbsp;<a href="http://twitter.com/orbeon">twitter</a></li>
<li>to the <a href="http://www.orbeon.com/forms/community">ops-users</a> list</li>
<li>or as comments on this blog entry</li>
</ul>
<div style='clear: both;'></div>
</div>
<div class='post-footer'>
<div class='post-footer-line post-footer-line-1'>
<span class='post-author vcard'>
Posted by
<span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'>
<meta content='http://www.blogger.com/profile/16139421434415219182' itemprop='url'/>
<a href='http://www.blogger.com/profile/16139421434415219182' rel='author' title='author profile'>
<span itemprop='name'>Erik Bruchez</span>
</a>
</span>
</span>
<span class='post-timestamp'>
at
<meta content='http://blog.orbeon.com/2012/12/orbeon-forms-40-m19.html' itemprop='url'/>
<a class='timestamp-link' href='http://blog.orbeon.com/2012/12/orbeon-forms-40-m19.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2012-12-12T08:30:00-08:00'>8:30 AM</abbr></a>
</span>
<span class='reaction-buttons'>
</span>
<span class='star-ratings'>
</span>
<span class='post-comment-link'>
<a class='comment-link' href='http://blog.orbeon.com/2012/12/orbeon-forms-40-m19.html#comment-form' onclick=''>
No comments:
      </a>
</span>
<span class='post-backlinks post-comment-link'>
</span>
<span class='post-icons'>
<span class='item-control blog-admin pid-1039487943'>
<a href='http://www.blogger.com/post-edit.g?blogID=6819462794293857673&postID=2028632471780080213&from=pencil' title='Edit Post'>
<img alt='' class='icon-action' height='18' src='http://img2.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/>
</a>
</span>
</span>
<div class='post-share-buttons goog-inline-block'>
</div>
</div>
<div class='post-footer-line post-footer-line-2'>
<span class='post-labels'>
</span>
</div>
<div class='post-footer-line post-footer-line-3'>
<span class='post-location'>
</span>
</div>
</div>
</div>
</div>

            </div></div>
          

          <div class="date-outer">
        
<h2 class='date-header'><span>Monday, December 10, 2012</span></h2>

          <div class="date-posts">
        
<div class='post-outer'>
<div class='post hentry uncustomized-post-template' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'>
<meta content='http://1.bp.blogspot.com/-0JCGhqxvsZ4/UMZo5zSaNuI/AAAAAAAAEf4/PiHWzgiH4kY/s72-c/form-1.png' itemprop='image_url'/>
<meta content='6819462794293857673' itemprop='blogId'/>
<meta content='753522968914580475' itemprop='postId'/>
<a name='753522968914580475'></a>
<h3 class='post-title entry-title' itemprop='name'>
<a href='http://blog.orbeon.com/2012/12/creating-rest-services-with-google-apps.html'>Creating REST services with Google Apps Script</a>
</h3>
<div class='post-header'>
<div class='post-header-line-1'></div>
</div>
<div class='post-body entry-content' id='post-body-753522968914580475' itemprop='description articleBody'>
<p>There are times when you'd like to <b>create a service</b>, want the service to be available <b>publicly</b>, and want to do this <b>quickly</b>, maybe for testing or for a demo you're putting together. In those cases, Google Apps Script might just be the solution you're looking for.</p>

<p>As an example, let's create a service that tells us if a number it receives is even. The number will be passed as a request parameter, e.g. <code>...?number=42</code>, and will provide an XML response, e.g. <code>&lt;result&gt;true&lt;/result&gt;</code>. Then, we will call this service from a form created with Form Builder, to show, next to an input field, whether the typed number is even or odd. Let's start by creating and deploying the service:</p>

<ol>
<li><p>To <b>create a new script</b>, load <a href="https://drive.google.com/">Google Drive</a>, click on <i>Create</i>, and under <i>More</i>, choose <i>Script</i>. Click on <i>Untitled project</i>, and name it <i>IsEven</i>.</p></li>

<li><p><b>Edit your script</b>, or in this case copy-pate the following code in the editor:

<pre><code>function doGet(request) {
    var result = '<result>' + (request.parameter.number % 2 == 0) + '</result>';
    return ContentService.createTextOutput(result)
        .setMimeType(ContentService.MimeType.XML);
}</code></pre>

</p></li>

<li><p>To <b>deploy your service</b>, make sure it is first saved, then go to <i>File</i> | <i>Manage Versions</i>, click on <i>Save New Version</i>, and click&nbsp;<i>OK</i>&nbsp;to close the dialog. Go to <i>Publish</i> | <i>Deploy as web app&#8230;</i>, in <i>Who has access to the app</i> choose <i>Anyone even anonymous</i>, click <i>Deploy</i>. Copy and save somewhere the URL given to you in the following dialog: this is the URL of your script.</p></li>

<li><p><b>Test the service</b> by pasting the URL in a new tab of your browser and adding <code>?parameter=42</code>. The service should respond <code>&lt;result&gt;true&lt;/result&gt;</code>.</p></li>
</ol>

<p>Now let's call the service from a form we create with <a href="http://www.orbeon.com/">Form Builder</a>:</p>

<ol>
<li><p>In Form Builder, <b>create a new form</b>, create an input field, type a label and name it <i>number</i>, create and output field, type a label and name it <i>even</i>. Your form might look like:</p>

<p><a href="http://1.bp.blogspot.com/-0JCGhqxvsZ4/UMZo5zSaNuI/AAAAAAAAEf4/PiHWzgiH4kY/s1600/form-1.png" imageanchor="1" style="clear: left; font-family: monospace; margin-bottom: 1em; margin-right: 1em; white-space: pre;"><img border="0" src="http://1.bp.blogspot.com/-0JCGhqxvsZ4/UMZo5zSaNuI/AAAAAAAAEf4/PiHWzgiH4kY/s400/form-1.png" width="400" /></a></p></li>

<li><p><b>Define an HTTP service</b>, by clicking on <i>Add</i> under <i>HTTP Service</i> in the sidebar. Name the service <i>is-even</i>, in Resource URL paste the URL from step 3 above. Under <i>Serialization</i>, choose <i>HTML form</i>. In <i>Request Body</i> enter <code>&lt;number/&gt;</code>.</p>

<p><a href="http://4.bp.blogspot.com/-x_879aeraM0/UMZzlHOn6jI/AAAAAAAAEgQ/6mntHxFVyVc/s1600/service.png" imageanchor="1" style="margin-right:1em; margin-bottom:1em"><img border="0" height="400" src="http://4.bp.blogspot.com/-x_879aeraM0/UMZzlHOn6jI/AAAAAAAAEgQ/6mntHxFVyVc/s400/service.png" /></a></p></li>

<li><p><b>Define a action</b>, by clicking on&nbsp;<i>Add</i>&nbsp;under&nbsp;<i>Actions</i>&nbsp;in the sidebar.&nbsp;Name it <i>check-even</i>, under <i>React To</i> choose <i>Value Change</i>, under <i>Control</i> choose <i>number</i>, in <i>Service to call</i> to choose <i>is-even</i>. In&nbsp;<i>Set Service Request Values</i> click the plus icon choose <i>number</i> and type <i>/number</i>, in&nbsp;<i>Destination Control</i>&nbsp;choose <i>even</i> and type&nbsp;<code>/result</code>.</p>

<p><a href="http://3.bp.blogspot.com/-cSkfFaD5n5E/UMZ0NcURnsI/AAAAAAAAEgc/tyopmlL1iYU/s1600/action-1.png" imageanchor="1" style="margin-right:1em; margin-bottom:1em"><img border="0" width="379" src="http://3.bp.blogspot.com/-cSkfFaD5n5E/UMZ0NcURnsI/AAAAAAAAEgc/tyopmlL1iYU/s400/action-1.png" /></a></p>

</li>

<li><p><b>Test the form</b> by clicking on the Test button. Type 42 and hit enter: the output next to it should show <i>true</i>.&nbsp;Type 43 and hit enter:&nbsp;similarly&nbsp;the output should show&nbsp;<i>false</i>.</code></li>
</ol>

<p>Congratulations, you just created a service and a form calling that service, and all this without leaving your web browser.</p>
<div style='clear: both;'></div>
</div>
<div class='post-footer'>
<div class='post-footer-line post-footer-line-1'>
<span class='post-author vcard'>
Posted by
<span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'>
<meta content='http://www.blogger.com/profile/06085176014230803685' itemprop='url'/>
<a href='http://www.blogger.com/profile/06085176014230803685' rel='author' title='author profile'>
<span itemprop='name'>Alessandro Vernet</span>
</a>
</span>
</span>
<span class='post-timestamp'>
at
<meta content='http://blog.orbeon.com/2012/12/creating-rest-services-with-google-apps.html' itemprop='url'/>
<a class='timestamp-link' href='http://blog.orbeon.com/2012/12/creating-rest-services-with-google-apps.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2012-12-10T15:40:00-08:00'>3:40 PM</abbr></a>
</span>
<span class='reaction-buttons'>
</span>
<span class='star-ratings'>
</span>
<span class='post-comment-link'>
<a class='comment-link' href='http://blog.orbeon.com/2012/12/creating-rest-services-with-google-apps.html#comment-form' onclick=''>
4 comments:
      </a>
</span>
<span class='post-backlinks post-comment-link'>
</span>
<span class='post-icons'>
<span class='item-control blog-admin pid-1222204161'>
<a href='http://www.blogger.com/post-edit.g?blogID=6819462794293857673&postID=753522968914580475&from=pencil' title='Edit Post'>
<img alt='' class='icon-action' height='18' src='http://img2.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/>
</a>
</span>
</span>
<div class='post-share-buttons goog-inline-block'>
</div>
</div>
<div class='post-footer-line post-footer-line-2'>
<span class='post-labels'>
</span>
</div>
<div class='post-footer-line post-footer-line-3'>
<span class='post-location'>
</span>
</div>
</div>
</div>
</div>

            </div></div>
          

          <div class="date-outer">
        
<h2 class='date-header'><span>Tuesday, December 4, 2012</span></h2>

          <div class="date-posts">
        
<div class='post-outer'>
<div class='post hentry uncustomized-post-template' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'>
<meta content='6819462794293857673' itemprop='blogId'/>
<meta content='5655012836751626204' itemprop='postId'/>
<a name='5655012836751626204'></a>
<h3 class='post-title entry-title' itemprop='name'>
<a href='http://blog.orbeon.com/2012/12/orbeon-forms-40-m18.html'>Orbeon Forms 4.0 M18</a>
</h3>
<div class='post-header'>
<div class='post-header-line-1'></div>
</div>
<div class='post-body entry-content' id='post-body-5655012836751626204' itemprop='description articleBody'>
Today we released Orbeon Forms 4.0 M18 (Milestone 18). Like <a href="http://blog.orbeon.com/2012/11/orbeon-forms-40-m17.html">4.0 M17</a>&nbsp;and the previous milestones this is <b>not a final release</b>.<br />
<ul>
</ul>
In this release, the following issues were addressed:<br />
<ul>
<li>Form Builder</li>
<ul>
<li>Form Builder should use logo specified in oxf.fr.default-logo.uri (<a href="https://github.com/orbeon/orbeon-forms/issues/616">#616</a>)</li>
<li>Permissions dialog layout scrambled (<a href="https://github.com/orbeon/orbeon-forms/issues/570">#570</a>)</li>
<li>Hover over button doesn't show proper button editor (<a href="https://github.com/orbeon/orbeon-forms/issues/553">#553</a>)</li>
</ul>
<li>Form Runner</li>
<ul>
<li>FB summary page doesn't show app/form name for new forms with MySQL persistence layer (<a href="https://github.com/orbeon/orbeon-forms/issues/611">#611</a>)</li>
<li>eXist persistence not to throw an error when the database is empty (<a href="https://github.com/orbeon/orbeon-forms/issues/614">#614</a>)</li>
<li>Form Runner home page: message for no forms, include forms without permission (<a href="https://github.com/orbeon/orbeon-forms/issues/94">#94</a>)</li>
<li>Don't highlight title on hover (<a href="https://github.com/orbeon/orbeon-forms/issues/615">#615</a>)</li>
<li>Lots of CSS and cosmetic improvements</li>
<li>fr:number focus in/out loses formatting (<a href="https://github.com/orbeon/orbeon-forms/issues/586">#586</a>)</li>
<li>Wizard: better navigation buttons</li>
</ul>
<li>XForms engine</li>
<ul>
<li>Server sets index of todo instead of list when re-adding first list (<a href="https://github.com/orbeon/orbeon-forms/issues/591">#591</a>)</li>
<li>Non-visible dialog content should be non-relevant (<a href="https://github.com/orbeon/orbeon-forms/issues/15">#15</a>)</li>
<li>Tooltip for a trigger hint in a dialog shows below the dialog (<a href="https://github.com/orbeon/orbeon-forms/issues/620">#620</a>)</li>
<li>Add deferred flag to xf:rebuild/xf:revalidate actions</li>
<li>Move xforms.css to LESS</li>
<li>Refactoring of control bindings support</li>
</ul>
<ul>
<ul>
</ul>
</ul>
</ul>
More information is available in the in-progress <a href="http://wiki.orbeon.com/forms/doc/developer-guide/release-notes/40">release notes for 4.0</a>.<br />
<br />
You can download the builds using these links:<br />
<ul>
<li>PE version:&nbsp;<a href="https://github.com/downloads/orbeon/orbeon-forms/orbeon-4.0.0.M18.201212050505-PE.zip">orbeon-4.0.0.M18.201212050505-PE.zip</a></li>
<li>CE version:&nbsp;<a href="https://github.com/downloads/orbeon/orbeon-forms/orbeon-4.0.0.M18.201212050521-CE.zip">orbeon-4.0.0.M18.201212050521-CE.zip</a></li>
</ul>
Don't forget to&nbsp;<a href="http://www.orbeon.com/orbeon/fr/orbeon/register/new">grab a trial license</a>&nbsp;for the PE version.<br />
<br />
Please send feedback:<br />
<ul>
<li>via&nbsp;<a href="http://twitter.com/orbeon">twitter</a></li>
<li>to the <a href="http://www.orbeon.com/forms/community">ops-users</a> list</li>
<li>or as comments on this blog entry</li>
</ul>
<div style='clear: both;'></div>
</div>
<div class='post-footer'>
<div class='post-footer-line post-footer-line-1'>
<span class='post-author vcard'>
Posted by
<span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'>
<meta content='http://www.blogger.com/profile/16139421434415219182' itemprop='url'/>
<a href='http://www.blogger.com/profile/16139421434415219182' rel='author' title='author profile'>
<span itemprop='name'>Erik Bruchez</span>
</a>
</span>
</span>
<span class='post-timestamp'>
at
<meta content='http://blog.orbeon.com/2012/12/orbeon-forms-40-m18.html' itemprop='url'/>
<a class='timestamp-link' href='http://blog.orbeon.com/2012/12/orbeon-forms-40-m18.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2012-12-04T23:35:00-08:00'>11:35 PM</abbr></a>
</span>
<span class='reaction-buttons'>
</span>
<span class='star-ratings'>
</span>
<span class='post-comment-link'>
<a class='comment-link' href='http://blog.orbeon.com/2012/12/orbeon-forms-40-m18.html#comment-form' onclick=''>
No comments:
      </a>
</span>
<span class='post-backlinks post-comment-link'>
</span>
<span class='post-icons'>
<span class='item-control blog-admin pid-1039487943'>
<a href='http://www.blogger.com/post-edit.g?blogID=6819462794293857673&postID=5655012836751626204&from=pencil' title='Edit Post'>
<img alt='' class='icon-action' height='18' src='http://img2.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/>
</a>
</span>
</span>
<div class='post-share-buttons goog-inline-block'>
</div>
</div>
<div class='post-footer-line post-footer-line-2'>
<span class='post-labels'>
</span>
</div>
<div class='post-footer-line post-footer-line-3'>
<span class='post-location'>
</span>
</div>
</div>
</div>
</div>
<div class='post-outer'>
<div class='post hentry uncustomized-post-template' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'>
<meta content='http://img.youtube.com/vi/451MSUuoCdk/default.jpg' itemprop='image_url'/>
<meta content='6819462794293857673' itemprop='blogId'/>
<meta content='5667059868509119792' itemprop='postId'/>
<a name='5667059868509119792'></a>
<h3 class='post-title entry-title' itemprop='name'>
<a href='http://blog.orbeon.com/2012/12/form-runner-wizard-view.html'>Form Runner Wizard View</a>
</h3>
<div class='post-header'>
<div class='post-header-line-1'></div>
</div>
<div class='post-body entry-content' id='post-body-5667059868509119792' itemprop='description articleBody'>
<iframe allowfullscreen="allowfullscreen" frameborder="0" height="480" src="http://www.youtube.com/embed/451MSUuoCdk?vq=hd720" width="640"></iframe>

<br />
One of the cool new features of Orbeon Forms 4.0 is the wizard view.
<br />
<br />
By default with Form Runner all the form sections appear in the same page, on top of each other. If your form is large that means that you have to scroll to fill out the entire form.<br />
<br />
With the wizard view, top-level sections instead appear in a navigation area to the left, and only a single top-level section is shown at any given time.<br />
<br />
You can navigate between sections by clicking on a section title, or you can use the navigation arrows.<br />
<br />
Errors on your form appear at the bottom as usual, and sections that contain errors are highlighted in red. If you click on an error you are taken directly to the section and control containing the error.<br />
<br />
The wizard view is optional - you can use the regular view instead, and you can enable this view per form, per app, or globally with a property:<br />
<blockquote class="tr_bq">
<span style="font-family: Courier New, Courier, monospace;">&lt;property<br />&nbsp; as="xs:string"<br />&nbsp; name="oxf.fr.detail.view.appearance.*.*"<br />&nbsp; value="wizard"/&gt;</span></blockquote>
We hope you enjoy this new feature!
<div style='clear: both;'></div>
</div>
<div class='post-footer'>
<div class='post-footer-line post-footer-line-1'>
<span class='post-author vcard'>
Posted by
<span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'>
<meta content='http://www.blogger.com/profile/16139421434415219182' itemprop='url'/>
<a href='http://www.blogger.com/profile/16139421434415219182' rel='author' title='author profile'>
<span itemprop='name'>Erik Bruchez</span>
</a>
</span>
</span>
<span class='post-timestamp'>
at
<meta content='http://blog.orbeon.com/2012/12/form-runner-wizard-view.html' itemprop='url'/>
<a class='timestamp-link' href='http://blog.orbeon.com/2012/12/form-runner-wizard-view.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2012-12-04T20:43:00-08:00'>8:43 PM</abbr></a>
</span>
<span class='reaction-buttons'>
</span>
<span class='star-ratings'>
</span>
<span class='post-comment-link'>
<a class='comment-link' href='http://blog.orbeon.com/2012/12/form-runner-wizard-view.html#comment-form' onclick=''>
No comments:
      </a>
</span>
<span class='post-backlinks post-comment-link'>
</span>
<span class='post-icons'>
<span class='item-control blog-admin pid-1039487943'>
<a href='http://www.blogger.com/post-edit.g?blogID=6819462794293857673&postID=5667059868509119792&from=pencil' title='Edit Post'>
<img alt='' class='icon-action' height='18' src='http://img2.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/>
</a>
</span>
</span>
<div class='post-share-buttons goog-inline-block'>
</div>
</div>
<div class='post-footer-line post-footer-line-2'>
<span class='post-labels'>
</span>
</div>
<div class='post-footer-line post-footer-line-3'>
<span class='post-location'>
</span>
</div>
</div>
</div>
</div>

            </div></div>
          

          <div class="date-outer">
        
<h2 class='date-header'><span>Wednesday, November 28, 2012</span></h2>

          <div class="date-posts">
        
<div class='post-outer'>
<div class='post hentry uncustomized-post-template' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'>
<meta content='http://2.bp.blogspot.com/-72n-bJKhCg8/ULajmQLDq-I/AAAAAAAAEdY/ix9xc99BbYg/s72-c/numbers.jpg' itemprop='image_url'/>
<meta content='6819462794293857673' itemprop='blogId'/>
<meta content='2182416534761583718' itemprop='postId'/>
<a name='2182416534761583718'></a>
<h3 class='post-title entry-title' itemprop='name'>
<a href='http://blog.orbeon.com/2012/11/simplify-your-queries-with-oracles.html'>Simplify your queries with Oracle's dense_rank</a>
</h3>
<div class='post-header'>
<div class='post-header-line-1'></div>
</div>
<div class='post-body entry-content' id='post-body-2182416534761583718' itemprop='description articleBody'>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.flickr.com/photos/thomashawk/72778694/" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="240" src="http://2.bp.blogspot.com/-72n-bJKhCg8/ULajmQLDq-I/AAAAAAAAEdY/ix9xc99BbYg/s320/numbers.jpg" /></a></div>
Data persistence for forms created with Form Builder is done through a REST API. You can implement that API, or use one of the <a href="http://wiki.orbeon.com/forms/doc/developer-guide/form-runner/persistence-api#TOC-Built-in-persistence-layers">provided implementations</a>. Orbeon's <a href="http://wiki.orbeon.com/forms/doc/developer-guide/form-runner/oracle-and-mysql-persistence-layers">implementation for relational databases</a>, for now specifically MySQL and Oracle, always uses inserts instead of doing updates or deletes<sup>1</sup>. For this, tables have a timestamp column, and when data is "updated", a new row is added with the current timestamp. So to retrieve data, we need to get the row matching a condition that has the latest timestamp.<br />
<br />
Let's transpose this problem to an equivalent one on the <code>emp</code> table, to make it easier for you to run the queries below in your own database<sup>2</sup>. On the <code>emp</code> table, a similar problem is to find for each job, the employee with the most recent hire date<sup>3</sup>. This can be done with nested queries:
<br />
<pre><code>select e1.* 
  from emp e1,
       (  select job, max(hiredate) hiredate 
            from emp 
        group by job ) e2
 where e1.job = e2.job
       and e1.hiredate = e2.hiredate ;</code></pre>
A bit complicated isn't it? This is where Oracle's <code>dense_rank</code>comes in. This analytic function allows you to <a href="http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions043.htm">rank data</a>. The following adds a rank column, and for each job, the employee with the latest hire date will get a rank of 1, the employee hire just before that a rank of 2, and so on.
<br />
<pre><code>select e.*,
    dense_rank() over (partition by job order by hiredate desc) rank
from emp e;</code></pre>
From here, we just need to keep only the employee with <code>rank = 1</code> to get the expected result:
<br />
<pre><code>select * from
    (select e.*,
            dense_rank() over
            (partition by job order by hiredate desc) rank
       from emp e)
 where rank = 1 ;</code></pre>
<br />
<span style="font-size: x-small;"><sup>1</sup> This allows auditing and allows an admin to retrieve older version of the data if necessary.</span><br />
<span style="font-size: x-small;"><sup>2</sup> In Oracle, this table is normally found in the scott schema, and you don't have it, or would like to import it in another database, you can download the <a href="https://code.google.com/p/adf-samples-demos/downloads/detail?name=demoscripts.zip">SQL to create the table and add data</a>.</span><br />
<span style="font-size: x-small;"><sup>3</sup> For the purpose of this discussion, we'll assume there is only one employee for each job with the most recent hire date.</span>
<div style='clear: both;'></div>
</div>
<div class='post-footer'>
<div class='post-footer-line post-footer-line-1'>
<span class='post-author vcard'>
Posted by
<span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'>
<meta content='http://www.blogger.com/profile/06085176014230803685' itemprop='url'/>
<a href='http://www.blogger.com/profile/06085176014230803685' rel='author' title='author profile'>
<span itemprop='name'>Alessandro Vernet</span>
</a>
</span>
</span>
<span class='post-timestamp'>
at
<meta content='http://blog.orbeon.com/2012/11/simplify-your-queries-with-oracles.html' itemprop='url'/>
<a class='timestamp-link' href='http://blog.orbeon.com/2012/11/simplify-your-queries-with-oracles.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2012-11-28T15:53:00-08:00'>3:53 PM</abbr></a>
</span>
<span class='reaction-buttons'>
</span>
<span class='star-ratings'>
</span>
<span class='post-comment-link'>
<a class='comment-link' href='http://blog.orbeon.com/2012/11/simplify-your-queries-with-oracles.html#comment-form' onclick=''>
No comments:
      </a>
</span>
<span class='post-backlinks post-comment-link'>
</span>
<span class='post-icons'>
<span class='item-control blog-admin pid-1222204161'>
<a href='http://www.blogger.com/post-edit.g?blogID=6819462794293857673&postID=2182416534761583718&from=pencil' title='Edit Post'>
<img alt='' class='icon-action' height='18' src='http://img2.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/>
</a>
</span>
</span>
<div class='post-share-buttons goog-inline-block'>
</div>
</div>
<div class='post-footer-line post-footer-line-2'>
<span class='post-labels'>
</span>
</div>
<div class='post-footer-line post-footer-line-3'>
<span class='post-location'>
</span>
</div>
</div>
</div>
</div>
<div class='post-outer'>
<div class='post hentry uncustomized-post-template' itemprop='blogPost' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'>
<meta content='http://2.bp.blogspot.com/-eIf_Itxxsho/ULZMhf35rMI/AAAAAAAAAyE/3uAtQJX-z3E/s72-c/landing.png' itemprop='image_url'/>
<meta content='6819462794293857673' itemprop='blogId'/>
<meta content='1617292909387766947' itemprop='postId'/>
<a name='1617292909387766947'></a>
<h3 class='post-title entry-title' itemprop='name'>
<a href='http://blog.orbeon.com/2012/11/orbeon-forms-40-m17.html'>Orbeon Forms 4.0 M17</a>
</h3>
<div class='post-header'>
<div class='post-header-line-1'></div>
</div>
<div class='post-body entry-content' id='post-body-1617292909387766947' itemprop='description articleBody'>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-eIf_Itxxsho/ULZMhf35rMI/AAAAAAAAAyE/3uAtQJX-z3E/s1600/landing.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="320" src="http://2.bp.blogspot.com/-eIf_Itxxsho/ULZMhf35rMI/AAAAAAAAAyE/3uAtQJX-z3E/s320/landing.png" width="290" /></a></div>
Today we released Orbeon Forms 4.0 M17 (Milestone 17). Like <a href="http://blog.orbeon.com/2012/11/orbeon-forms-40-m16.html">4.0 M16</a>&nbsp;and the previous milestones this is <b>not a final release</b>.<br />
<br />
Due to the Thanksgiving break, M17 is a rather small update, but it happens to contain two important new bits:<br />
<ul>
<li>a new landing page for the Form Runner and Orbeon Forms &nbsp;examples&nbsp;(<a href="https://github.com/orbeon/orbeon-forms/issues/165">#165</a>)</li>
<li>a new "wizard" mode which allows showing forms one section at a time</li>
</ul>
In addition, the following issues were addressed:<br />
<ul>
<li>Form Builder</li>
<ul>
<li>No default button set in some dialogs (<a href="https://github.com/orbeon/orbeon-forms/issues/571">#571</a>)</li>
</ul>
<li>Form Runner</li>
<ul>
<li>fr:alert-dialog with static label crashes (<a href="https://github.com/orbeon/orbeon-forms/issues/607">#607</a>)</li>
<li>fr:error-summary: improved recalculate and use xxforms-visited/unvisited (<a href="https://github.com/orbeon/orbeon-forms/commit/ab3ff7f890374ba52d6bab6de2e3e809740777a4">ab3ff7f890</a>)</li>
</ul>
<li>XForms engine</li>
<ul>
<li>xxforms:value() function (<a href="https://github.com/orbeon/orbeon-forms/commit/1021d5eade718763856f21c7171ca6ae328a2813">1021d5eade</a>)</li>
<li>New `focusable` mode for XBL components (<a href="https://github.com/orbeon/orbeon-forms/issues/526">#526</a>)</li>
<li>TinyMCE with required content doesn't reliably show error (<a href="https://github.com/orbeon/orbeon-forms/issues/301">#301</a>)</li>
<li>Change of visited state requires refresh (<a href="https://github.com/orbeon/orbeon-forms/commit/84a13e93c88afe873f7a433a5a5ae81e6833e88e">84a13e93c8</a>)</li>
<li>New&nbsp;xxforms-visited/unvisited events (<a href="https://github.com/orbeon/orbeon-forms/commit/f6c02b4377896ddaa2b1bf1baae0f672ef6ddfd9">f6c02b4377</a>)</li>
<li>Add deferred flag to xf:recalculate action (<a href="https://github.com/orbeon/orbeon-forms/commit/3339a5c2c21d9af13c5955d8f877a9a40859af1a">3339a5c2c2</a>)</li>
</ul>
<ul>
<ul>
</ul>
</ul>
</ul>
More information is available in the in-progress <a href="http://wiki.orbeon.com/forms/doc/developer-guide/release-notes/40">release notes for 4.0</a>.<br />
<br />
You can download the builds using these links:<br />
<ul>
<li>PE version:&nbsp;<a href="http://download.forge.objectweb.org/ops/orbeon-4.0.0.M17.201211280748-PE.zip">orbeon-4.0.0.M17.201211280748-PE.zip</a></li>
<li>CE version: <a href="http://download.forge.objectweb.org/ops/orbeon-4.0.0.M17.201211280802-CE.zip">orbeon-4.0.0.M17.201211280802-CE.zip</a></li>
</ul>
Don't forget to&nbsp;<a href="http://www.orbeon.com/orbeon/fr/orbeon/register/new">grab a trial license</a>&nbsp;for the PE version.<br />
<br />
Please send feedback:<br />
<ul>
<li>via&nbsp;<a href="http://twitter.com/orbeon">twitter</a></li>
<li>to the <a href="http://www.orbeon.com/forms/community">ops-users</a> list</li>
<li>or as comments on this blog entry</li>
</ul>
<div style='clear: both;'></div>
</div>
<div class='post-footer'>
<div class='post-footer-line post-footer-line-1'>
<span class='post-author vcard'>
Posted by
<span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'>
<meta content='http://www.blogger.com/profile/16139421434415219182' itemprop='url'/>
<a href='http://www.blogger.com/profile/16139421434415219182' rel='author' title='author profile'>
<span itemprop='name'>Erik Bruchez</span>
</a>
</span>
</span>
<span class='post-timestamp'>
at
<meta content='http://blog.orbeon.com/2012/11/orbeon-forms-40-m17.html' itemprop='url'/>
<a class='timestamp-link' href='http://blog.orbeon.com/2012/11/orbeon-forms-40-m17.html' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2012-11-28T09:43:00-08:00'>9:43 AM</abbr></a>
</span>
<span class='reaction-buttons'>
</span>
<span class='star-ratings'>
</span>
<span class='post-comment-link'>
<a class='comment-link' href='http://blog.orbeon.com/2012/11/orbeon-forms-40-m17.html#comment-form' onclick=''>
No comments:
      </a>
</span>
<span class='post-backlinks post-comment-link'>
</span>
<span class='post-icons'>
<span class='item-control blog-admin pid-1039487943'>
<a href='http://www.blogger.com/post-edit.g?blogID=6819462794293857673&postID=1617292909387766947&from=pencil' title='Edit Post'>
<img alt='' class='icon-action' height='18' src='http://img2.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/>
</a>
</span>
</span>
<div class='post-share-buttons goog-inline-block'>
</div>
</div>
<div class='post-footer-line post-footer-line-2'>
<span class='post-labels'>
</span>
</div>
<div class='post-footer-line post-footer-line-3'>
<span class='post-location'>
</span>
</div>
</div>
</div>
</div>

        </div></div>
      
<!-- google_ad_section_end -->
</div>
<div class='blog-pager' id='blog-pager'>
<span id='blog-pager-older-link'>
<a class='blog-pager-older-link' href='http://blog.orbeon.com/search?updated-max=2012-11-28T09:43:00-08:00&amp;max-results=7' id='Blog1_blog-pager-older-link' title='Older Posts'>Older Posts</a>
</span>
<a class='home-link' href='http://blog.orbeon.com/'>Home</a>
</div>
<div class='clear'></div>
<div class='blog-feeds'>
<div class='feed-links'>
Subscribe to:
<a class='feed-link' href='http://blog.orbeon.com/feeds/posts/default' target='_blank' type='application/atom+xml'>Posts (Atom)</a>
</div>
</div>
</div></div>
</div>
</div>
<div class='column-left-outer'>
<div class='column-left-inner'>
<aside>
</aside>
</div>
</div>
<div class='column-right-outer'>
<div class='column-right-inner'>
<aside>
<div class='sidebar section' id='sidebar-right-1'><div class='widget Text' id='Text1'>
<div class='widget-content'>
<div style="text-align: center; font-size: 20px;">Orbeon Forms<p style="font-size: 14px;"><a href="http://www.orbeon.com/">Web Forms for the Enterprise Done the Right Way</a></p><a href="http://www.orbeon.com/"><img alt="Orbeon Forms Flyer" src="http://www.orbeon.com/download/blog/dmv14-shadow-200.png" /></a><br/></div>
</div>
<div class='clear'></div>
<span class='widget-item-control'>
<span class='item-control blog-admin'>
<a class='quickedit' href='//www.blogger.com/rearrange?blogID=6819462794293857673&widgetType=Text&widgetId=Text1&action=editWidget&sectionId=sidebar-right-1' onclick='return _WidgetManager._PopupConfig(document.getElementById("Text1"));' target='configText1' title='Edit'>
<img alt='' height='18' src='http://img1.blogblog.com/img/icon18_wrench_allbkg.png' width='18'/>
</a>
</span>
</span>
<div class='clear'></div>
</div><div class='widget HTML' id='HTML2'>
<h2 class='title'>Twitter Updates</h2>
<div class='widget-content'>
<script src="http://widgets.twimg.com/j/2/widget.js"></script>
<script>
new TWTR.Widget({
  version: 2,
  type: 'profile',
  rpp: 5,
  interval: 6000,
  width: 200,
  height: 300,
  theme: {
    shell: {
      background: '#ffffff',
      color: '#000000'
    },
    tweets: {
      background: '#ffffff',
      color: '#000000',
      links: '#CC6611'
    }
  },
  features: {
    scrollbar: false,
    loop: false,
    live: false,
    hashtags: true,
    timestamp: true,
    avatars: false,
    behavior: 'all'
  }
}).render().setUser('orbeon').start();
</script>
</div>
<div class='clear'></div>
<span class='widget-item-control'>
<span class='item-control blog-admin'>
<a class='quickedit' href='//www.blogger.com/rearrange?blogID=6819462794293857673&widgetType=HTML&widgetId=HTML2&action=editWidget&sectionId=sidebar-right-1' onclick='return _WidgetManager._PopupConfig(document.getElementById("HTML2"));' target='configHTML2' title='Edit'>
<img alt='' height='18' src='http://img1.blogblog.com/img/icon18_wrench_allbkg.png' width='18'/>
</a>
</span>
</span>
<div class='clear'></div>
</div></div>
</aside>
</div>
</div>
</div>
<div style='clear: both'></div>
<!-- columns -->
</div>
<!-- main -->
</div>
</div>
<div class='main-cap-bottom cap-bottom'>
<div class='cap-left'></div>
<div class='cap-right'></div>
</div>
</div>
<footer>
<div class='footer-outer'>
<div class='footer-cap-top cap-top'>
<div class='cap-left'></div>
<div class='cap-right'></div>
</div>
<div class='fauxborder-left footer-fauxborder-left'>
<div class='fauxborder-right footer-fauxborder-right'></div>
<div class='region-inner footer-inner'>
<div class='foot section' id='footer-1'></div>
<table border='0' cellpadding='0' cellspacing='0' class='section-columns columns-2'>
<tbody>
<tr>
<td class='first columns-cell'>
<div class='foot section' id='footer-2-1'></div>
</td>
<td class='columns-cell'>
<div class='foot section' id='footer-2-2'></div>
</td>
</tr>
</tbody>
</table>
<!-- outside of the include in order to lock Attribution widget -->
<div class='foot section' id='footer-3'><div class='widget Attribution' id='Attribution1'>
<div class='widget-content' style='text-align: center;'>
Simple template. Powered by <a href='http://www.blogger.com' target='_blank'>Blogger</a>.
</div>
<div class='clear'></div>
<span class='widget-item-control'>
<span class='item-control blog-admin'>
<a class='quickedit' href='//www.blogger.com/rearrange?blogID=6819462794293857673&widgetType=Attribution&widgetId=Attribution1&action=editWidget&sectionId=footer-3' onclick='return _WidgetManager._PopupConfig(document.getElementById("Attribution1"));' target='configAttribution1' title='Edit'>
<img alt='' height='18' src='http://img1.blogblog.com/img/icon18_wrench_allbkg.png' width='18'/>
</a>
</span>
</span>
<div class='clear'></div>
</div></div>
</div>
</div>
<div class='footer-cap-bottom cap-bottom'>
<div class='cap-left'></div>
<div class='cap-right'></div>
</div>
</div>
</footer>
<!-- content -->
</div>
</div>
<div class='content-cap-bottom cap-bottom'>
<div class='cap-left'></div>
<div class='cap-right'></div>
</div>
</div>
</div>
<script type='text/javascript'>
    window.setTimeout(function() {
        document.body.className = document.body.className.replace('loading', '');
      }, 10);
  </script>
<script type="text/javascript">
if (window.jstiming) window.jstiming.load.tick('widgetJsBefore');
</script><script type="text/javascript" src="//www.blogger.com/static/v1/widgets/4127629733-widgets.js"></script>
<script type='text/javascript'>
if (typeof(BLOG_attachCsiOnload) != 'undefined' && BLOG_attachCsiOnload != null) { window['blogger_templates_experiment_id'] = "templatesV2";window['blogger_blog_id'] = '6819462794293857673';BLOG_attachCsiOnload(''); }_WidgetManager._Init('//www.blogger.com/rearrange?blogID\x3d6819462794293857673','//blog.orbeon.com/','6819462794293857673');
_WidgetManager._SetDataContext([{'name': 'blog', 'data': {'blogId': '6819462794293857673', 'bloggerUrl': 'http://www.blogger.com', 'title': 'Orbeon Forms &#8212; XForms Everywhere', 'pageType': 'index', 'url': 'http://blog.orbeon.com/', 'canonicalUrl': 'http://blog.orbeon.com/', 'canonicalHomepageUrl': 'http://blog.orbeon.com/', 'homepageUrl': 'http://blog.orbeon.com/', 'blogspotFaviconUrl': 'http://blog.orbeon.com/favicon.ico', 'enabledCommentProfileImages': true, 'adultContent': false, 'disableAdSenseWidget': false, 'analyticsAccountNumber': '', 'searchLabel': '', 'searchQuery': '', 'pageName': '', 'pageTitle': 'Orbeon Forms &#8212; XForms Everywhere', 'encoding': 'UTF-8', 'locale': 'en', 'localeLanguage': 'en', 'isPrivate': false, 'isMobile': false, 'isMobileRequest': false, 'mobileClass': '', 'isPrivateBlog': false, 'languageDirection': 'ltr', 'feedLinks': '\74link rel\75\42alternate\42 type\75\42application/atom+xml\42 title\75\42Orbeon Forms &#8212; XForms Everywhere - Atom\42 href\75\42http://blog.orbeon.com/feeds/posts/default\42 /\76\n\74link rel\75\42alternate\42 type\75\42application/rss+xml\42 title\75\42Orbeon Forms &#8212; XForms Everywhere - RSS\42 href\75\42http://blog.orbeon.com/feeds/posts/default?alt\75rss\42 /\76\n\74link rel\75\42service.post\42 type\75\42application/atom+xml\42 title\75\42Orbeon Forms &#8212; XForms Everywhere - Atom\42 href\75\42http://www.blogger.com/feeds/6819462794293857673/posts/default\42 /\76\n\74link rel\75\42EditURI\42 type\75\42application/rsd+xml\42 title\75\42RSD\42 href\75\42http://www.blogger.com/rsd.g?blogID\0756819462794293857673\42 /\076', 'meTag': '', 'openIdOpTag': '\74link rel\75\42openid.server\42 href\75\42http://www.blogger.com/openid-server.g\42 /\76\n\74link rel\75\42openid.delegate\42 href\75\42http://blog.orbeon.com/\42 /\76\n', 'imageSrcTag': '', 'latencyHeadScript': '\74script type\75\42text/javascript\42\76(function() { var a\75window,b\75\42jstiming\42,d\75\42tick\42;var e\75function(c){this.t\75{};this.tick\75function(c,p,h){h\75void 0!\75h?h:(new Date).getTime();this.t[c]\75[h,p]};this[d](\42start\42,null,c)},f\75new e;a.jstiming\75{Timer:e,load:f};if(a.performance\46\46a.performance.timing){var g\75a.performance.timing,j\75a[b].load,k\75g.navigationStart,l\75g.responseStart;0\74k\46\46l\76\75k\46\46(j[d](\42_wtsrt\42,void 0,k),j[d](\42wtsrt_\42,\42_wtsrt\42,l),j[d](\42tbsd_\42,\42wtsrt_\42))}\ntry{var m\75null;a.chrome\46\46a.chrome.csi\46\46(m\75Math.floor(a.chrome.csi().pageT),j\46\0460\74k\46\46(j[d](\42_tbnd\42,void 0,a.chrome.csi().startE),j[d](\42tbnd_\42,\42_tbnd\42,k)));null\75\75m\46\46a.gtbExternal\46\46(m\75a.gtbExternal.pageT());null\75\75m\46\46a.external\46\46(m\75a.external.pageT,j\46\0460\74k\46\46(j[d](\42_tbnd\42,void 0,a.external.startE),j[d](\42tbnd_\42,\42_tbnd\42,k)));m\46\46(a[b].pt\75m)}catch(n){};a.tickAboveFold\75function(c){var i\0750;if(c.offsetParent){do i+\75c.offsetTop;while(c\75c.offsetParent)}c\75i;750\76\75c\46\46a[b].load[d](\42aft\42)};var q\75!1;function r(){q||(q\75!0,a[b].load[d](\42firstScrollTime\42))}a.addEventListener?a.addEventListener(\42scroll\42,r,!1):a.attachEvent(\42onscroll\42,r);\n })();\74/script\076', 'mobileHeadScript': '', 'ieCssRetrofitLinks': '\74!--[if IE]\76\74script type\75\42text/javascript\42 src\75\42//www.blogger.com/static/v1/jsbin/3596828972-ieretrofit.js\42\76\74/script\76\n\74![endif]--\076', 'view': '', 'dynamicViewsCommentsSrc': '//www.blogblog.com/dynamicviews/4224c15c4e7c9321/js/comments.js', 'dynamicViewsScriptSrc': '//www.blogblog.com/dynamicviews/20497177ec370ede', 'plusOneApiSrc': 'https://apis.google.com/js/plusone.js'}}, {'name': 'skin', 'data': {'vars': {'content_padding': '10px', 'paging_background': 'transparent none no-repeat scroll top center', 'image_border_small_size': '2px', 'body_background_gradient_cap': 'url(//www.blogblog.com/1kt/simple/gradients_light.png)', 'tabs_selected_background_color': '#eeeeee', 'body_rule_color': '#eeeeee', 'header_shadow_spread': '3px', 'header_shadow_offset_left': '1px', 'header_padding': '30px', 'link_visited_color': '#888888', 'mobile_background_size': 'auto', 'post_title_font': 'normal normal 22px Arial, Tahoma, Helvetica, FreeSans, sans-serif', 'tabs_text_color': '#999999', 'date_header_margin': 'inherit', 'header_background_gradient': 'url(http://www.blogblog.com/1kt/simple/gradients_light.png)', 'content_shadow_spread_webkit': '5px', 'header_bottom_border_size': '0', 'header_shadow_offset_top': '2px', 'mobile_button_color': '#ffffff', 'widget_title_font': 'normal bold 11px Arial, Tahoma, Helvetica, FreeSans, sans-serif', 'main_section_margin': '15px', 'keycolor': '#cc6611', 'content_shadow_spread': '40px', 'image_background_color': '#ffffff', 'header_font': 'normal normal 50px Arial, Tahoma, Helvetica, FreeSans, sans-serif', 'header_background_color': '#ff9900', 'main_border_width': '0', 'main_padding': '15px', 'tabs_border_color': '#eeeeee', 'image_text_color': '#222222', 'description_text_size': '140%', 'post_footer_background_color': '#f9f9f9', 'body_background_gradient_tile': 'url(//www.blogblog.com/1kt/simple/body_gradient_tile_light.png)', 'page_width': 'auto', 'tabs_background_gradient': 'url(//www.blogblog.com/1kt/simple/gradients_light.png)', 'mobile_background_overlay': 'transparent none repeat scroll top left', 'main_padding_bottom': '30px', 'tabs_background_color': '#f5f5f5', 'image_border_large_size': '5px', 'post_margin_bottom': '25px', 'body_background_override': '', 'tabs_margin_side': '30px', 'link_hover_color': '#ff9900', 'description_text_color': '#ffffff', 'body_text_color': '#222222', 'content_padding_horizontal': '10px', 'endSide': 'right', 'page_width_selector': '.region-inner', 'date_header_padding': 'inherit', 'post_footer_text_color': '#666666', 'startSide': 'left', 'date_header_color': '#222222', 'tabs_font': 'normal normal 14px Arial, Tahoma, Helvetica, FreeSans, sans-serif', 'post_footer_border_color': '#eeeeee', 'body_font': 'normal normal 12px Arial, Tahoma, Helvetica, FreeSans, sans-serif', 'footer_bevel': '0', 'tabs_bevel_border_width': '1px', 'date_header_background_color': 'transparent', 'content_shadow_spread_ie': '10px', 'widget_title_text_color': '#000000', 'header_border_horizontalsize': '0', 'image_border_color': '#eeeeee', 'tabs_border_width': '1px', 'content_background_color': '#ffffff', 'link_color': '#cc6611', 'header_text_color': '#ffffff', 'date_header_letterspacing': 'inherit', 'tabs_margin_top': '0', 'main_padding_top': '30px', 'header_border_size': '0', 'tabs_selected_text_color': '#000000', 'content_background_color_selector': '.content-inner', 'body_background_color': '#ffffff', 'widget_alternate_text_color': '#999999'}, 'override': '.content .gist .gist-file .gist-data pre {\n    font-family: \47Bitstream Vera Sans Mono\47,\47Courier\47,monospace;\n    font-size: 11px;\n    line-height: 1.15;\n}\n\n.content .twtr-widget .twtr-hd { display: none }\n.content .twtr-widget .twtr-ft img { display: none }\n\n.content .twtr-widget .twtr-doc {\n    font: 12px Arial,Tahoma,Helvetica,FreeSans,sans-serif;\n}\n\nblockquote, pre {\nbackground-color: #F8F8F8;\nborder: 1px solid #CCC;\nfont-size: 13px;\nline-height: 19px;\noverflow: auto;\npadding: 6px 10px;\nborder-radius: 3px;\n}\n\ncode {\nmargin: 0 2px;\npadding: 0 5px;\nwhite-space: nowrap;\nborder: 1px solid #EAEAEA;\nbackground-color: #F8F8F8;\nborder-radius: 3px;\n}\n\npre code {\nbackground-color: transparent;\nborder: none;\n}\npre \76 code {\nmargin: 0;\npadding: 0;\nwhite-space: pre;\nborder: none;\nbackground: transparent;\n}\n\nsup, sub, a.footnote {\n    font-size: 1.4ex;\n    height: 0;\n    line-height: 1;\n    vertical-align: super;\n    position: relative\n}'}}, {'name': 'view', 'data': {'classic': {'name': 'classic', 'url': '/?view\75classic'}, 'flipcard': {'name': 'flipcard', 'url': '/?view\75flipcard'}, 'magazine': {'name': 'magazine', 'url': '/?view\75magazine'}, 'mosaic': {'name': 'mosaic', 'url': '/?view\75mosaic'}, 'sidebar': {'name': 'sidebar', 'url': '/?view\75sidebar'}, 'snapshot': {'name': 'snapshot', 'url': '/?view\75snapshot'}, 'timeslide': {'name': 'timeslide', 'url': '/?view\75timeslide'}}}]);
_WidgetManager._RegisterWidget('_TextView', new _WidgetInfo('Text1', 'sidebar-right-1', null, document.getElementById('Text1'), {}, 'displayModeFull'));
_WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML2', 'sidebar-right-1', null, document.getElementById('HTML2'), {}, 'displayModeFull'));
_WidgetManager._RegisterWidget('_AttributionView', new _WidgetInfo('Attribution1', 'footer-3', null, document.getElementById('Attribution1'), {'attribution': 'Simple template. Powered by \74a href\75\47http://www.blogger.com\47 target\75\47_blank\47\76Blogger\74/a\76.'}, 'displayModeFull'));
_WidgetManager._RegisterWidget('_HeaderView', new _WidgetInfo('Header1', 'header', null, document.getElementById('Header1'), {}, 'displayModeFull'));
_WidgetManager._RegisterWidget('_BlogView', new _WidgetInfo('Blog1', 'main', null, document.getElementById('Blog1'), {'cmtInteractionsEnabled': false, 'lightboxEnabled': true, 'lightboxModuleUrl': '//www.blogger.com/static/v1/jsbin/223420870-lbx.js', 'lightboxCssUrl': '//www.blogger.com/static/v1/v-css/228702327-lightbox_bundle.css'}, 'displayModeFull'));
_WidgetManager._RegisterWidget('_PageListView', new _WidgetInfo('PageList1', 'null', null, document.getElementById('PageList1'), {'title': 'Pages', 'links': [{'href': 'http://blog.orbeon.com/', 'title': 'Home', 'isCurrentPage': true}], 'mobile': false}, 'displayModeFull'));
</script>
</body>
</html>