Sophie

Sophie

distrib > Fedora > 14 > x86_64 > media > updates > by-pkgid > 71d40963b505df4524269198e237b3e3 > files > 987

virtuoso-opensource-doc-6.1.4-2.fc14.noarch.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
 <head profile="http://internetalchemy.org/2003/02/profile">
  <link rel="foaf" type="application/rdf+xml" title="FOAF" href="http://www.openlinksw.com/dataspace/uda/about.rdf" />
  <link rel="schema.dc" href="http://purl.org/dc/elements/1.1/" />
  <meta name="dc.title" content="12. Web Application Development" />
  <meta name="dc.subject" content="12. Web Application Development" />
  <meta name="dc.creator" content="OpenLink Software Documentation Team ;&#10;" />
  <meta name="dc.copyright" content="OpenLink Software, 1999 - 2009" />
  <link rel="top" href="index.html" title="OpenLink Virtuoso Universal Server: Documentation" />
  <link rel="search" href="/doc/adv_search.vspx" title="Search OpenLink Virtuoso Universal Server: Documentation" />
  <link rel="parent" href="webappdevelopment.html" title="Chapter Contents" />
  <link rel="prev" href="vsp1.html" title="Virtuoso Server Pages (VSP)" />
  <link rel="next" href="rthwritaspxapps.html" title="Deploying ASP.Net Web Applications" />
  <link rel="shortcut icon" href="../images/misc/favicon.ico" type="image/x-icon" />
  <link rel="stylesheet" type="text/css" href="doc.css" />
  <link rel="stylesheet" type="text/css" href="/doc/translation.css" />
  <title>12. Web Application Development</title>
  <meta http-equiv="Content-Type" content="text/xhtml; charset=UTF-8" />
  <meta name="author" content="OpenLink Software Documentation Team ;&#10;" />
  <meta name="copyright" content="OpenLink Software, 1999 - 2009" />
  <meta name="keywords" content="" />
  <meta name="GENERATOR" content="OpenLink XSLT Team" />
 </head>
 <body>
  <div id="header">
    <a name="vspx" />
    <img src="../images/misc/logo.jpg" alt="" />
    <h1>12. Web Application Development</h1>
  </div>
  <div id="navbartop">
   <div>
      <a class="link" href="webappdevelopment.html">Chapter Contents</a> | <a class="link" href="vsp1.html" title="Virtuoso Server Pages (VSP)">Prev</a> | <a class="link" href="rthwritaspxapps.html" title="Deploying ASP.Net Web Applications">Next</a>
   </div>
  </div>
  <div id="currenttoc">
   <form method="post" action="/doc/adv_search.vspx">
    <div class="search">Keyword Search: <br />
        <input type="text" name="q" /> <input type="submit" name="go" value="Go" />
    </div>
   </form>
   <div>
      <a href="http://www.openlinksw.com/">www.openlinksw.com</a>
   </div>
   <div>
      <a href="http://docs.openlinksw.com/">docs.openlinksw.com</a>
   </div>
    <br />
   <div>
      <a href="index.html">Book Home</a>
   </div>
    <br />
   <div>
      <a href="contents.html">Contents</a>
   </div>
   <div>
      <a href="preface.html">Preface</a>
   </div>
    <br />
   <div class="selected">
      <a href="webappdevelopment.html">Web Application Development</a>
   </div>
    <br />
   <div>
      <a href="webserver.html">The HTTP Server</a>
   </div>
   <div>
      <a href="wsacl.html">Web Services ACL (Access Control List)</a>
   </div>
   <div>
      <a href="vsp1.html">Virtuoso Server Pages (VSP)</a>
   </div>
   <div class="selected">
      <a href="vspx.html">Virtuoso Server Pages for XML (VSPX)</a>
    <div>
        <a href="#vspxprocmodel" title="Processing Model">Processing Model</a>
        <a href="#vspxobjectmodel" title="Object Model">Object Model</a>
        <a href="#vspxpageandsessionstate" title="Keeping Page and Session State">Keeping Page and Session State</a>
        <a href="#vspxappcode" title="Application Code">Application Code</a>
        <a href="#vspxexamples" title="A Simple Example">A Simple Example</a>
        <a href="#vspxeventpars" title="VSPX Event Handler Parameters">VSPX Event Handler Parameters</a>
        <a href="#vspxeventhandlers" title="Registering a VSPX Event Callbacks">Registering a VSPX Event Callbacks</a>
        <a href="#vspx_attr_types" title="Commonly Used Types of Attributes of VSPX Controls">Commonly Used Types of Attributes of VSPX Controls</a>
        <a href="#vspx_controls" title="VSPX Controls">VSPX Controls</a>
        <a href="#vspxxforms" title="XForms rendering">XForms rendering</a>
        <a href="#vspxschema" title="XMLSchema for VSPX page">XMLSchema for VSPX page</a>
    </div>
   </div>
   <div>
      <a href="rthwritaspxapps.html">Deploying ASP.Net Web Applications</a>
   </div>
   <div>
      <a href="asmxhosting.html">ASMX Web Service Hosting</a>
   </div>
   <div>
      <a href="blogger.html">Blogging &amp; Weblogs</a>
   </div>
   <div>
      <a href="servphpext.html">Deploying PHP Applications</a>
   </div>
   <div>
      <a href="rthjsp.html">Deploying JSP Applications</a>
   </div>
   <div>
      <a href="perlhosting.html">Perl Hosting</a>
   </div>
   <div>
      <a href="pythonhosting.html">Python Hosting</a>
   </div>
   <div>
      <a href="rubyhosting.html">Ruby Hosting</a>
   </div>
    <br />
  </div>
  <div id="text">
    <a name="vspx" />
    <h2>12.4. Virtuoso Server Pages for XML (VSPX)</h2>

<p>VSPX is an XML vocabulary for server generated HTML and XHTML pages
that may or may not be bound to native or third-party data sources.
VSPX is a framework for building and deploying dynamic web content atop
Virtuoso.  VSPX offers a widget set and event model which is similar to that of
GUI tool kits, providing the developer with much automation for common web
development tasks.  Many controls are tightly integrated with the Virtuoso
database, providing seamless data binding to local or remote relational and XML
data.  Server side scripting in VSPX is performed in Virtuoso/PL.  The VSPX
source code consists of HTML or XML with interspersed VSPX specific XML elements
which describe the UI control hierarchy of the page. </p>

<p>VSPX covers the following areas:</p>

<ul>
      <li>Rich set of controls, covering all basic HTML plus complex composite
  controls like data grids and tree browsers.</li>
      <li>Session management - Transparent session and session state handling
  using cookies, URL poisoning or digest authentication.</li>
      <li>Form entry validation server and client side.</li>
      <li>Single and multi-row controls for viewing and directly updating SQL
  tables, including scrolling through long result sets.</li>
      <li>Repeating and conditional instantiation of UI elements based on run
  time choices.</li>
      <li>Event model for HTTP request handling, providing distinct phases for
  creating the controls, retrieving data, processing posted data,
  preserving state and rendering for a user agent.</li>
      <li>Object oriented architecture, allowing easy definition of subclasses
  of existing controls for new functionality.  It suffices to implement a
  new SQL class with a few predefined methods and to implement an XSLT
  rule for generating the code based on the external XML syntax for the
  new control.</li>
      <li>Easy automatic generation of VSPX pages.  The pages being XML, it is
  simple to automate generating pages based on other data, such as
  automatically making table maintenance pages based on a SQL table
  definition.</li>
    </ul>

<p>The VSPX development cycle consists of editing .vspx resources in the
file system or Virtuoso DAV.  The editing can take place using a
regular text editor or a supporting HTML editor.</p>


<a name="vspxprocmodel" />
    <h3>12.4.1. Processing Model</h3>

 <p>A VSPX page describes a web page in terms of static XHTML plus XML
 elements in the VSPX namespace,
 <span class="computeroutput">&quot;http://www.openlinksw.com/vspx/&quot;</span>.  This
 namespace is abbreviated as <span class="computeroutput">v:</span> in the rest
 of this document.</p>

 <p>Elements in the <span class="computeroutput">v</span> namespace introduce
 VSPX elements, options or controls.  Some of these may in turn have HTML
 children.  VSPX elements with HTML children are called templates, as these
 will process their HTML contents at run time, typically modifying these
 based on run time data.</p>

  <table class="figure" border="0" cellpadding="0" cellspacing="0">
    <tr>
     <td>
          <img alt="VSPX Conceptual Diagram" src="../images/vspxconcept.jpg" />
     </td>
    </tr>
    <tr>
        <td>Figure: 12.4.1.1. VSPX Conceptual Diagram</td>
    </tr>
    </table>

 <p>When the page is requested, the system checks whether it is already
 compiled and compiles it if the compilation is absent or older than
 the source.  The VSPX compilation has two phases: pre-processing and compilation.
 The first phase expands included files and applies the external macro XSL-T sheet.
 The result of which is a single page encapsulating all related components which
 will be stored in a .vspx-m intermediary file.  The result of second phase, compilation
 is a single .vspx-sql file containing class and method definitions for a
 subclass of the generic VSPX page class.  All code directly derived from the
 pre-processed page will be found in this file.  The file can of course refer
 to outside Virtuoso/PL code.</p>

 <p>The results of compilation process are stored usually in an OS dependent
 temporary directory.  This would be the $TMPDIR for UNIXes or %TMP% for
 Windows platforms.  If these environment variables are not available it will
 be some default system specific location, such as <span class="computeroutput">/var/tmp</span>
 or <span class="computeroutput">/tmp</span> on Unix&#39;s.  Note that this temporary
 storage applies to the VSPX pages that are stored within the file system, for the
 WebDAV repository the product of compilation is stored as described below.
 For  development purposes the use of temporary storage can be turned off
 by executing:</p>

 <div>
      <pre class="programlisting">registry_set (&#39;__no_vspx_temp&#39;, &#39;1&#39;)</pre>
    </div>

 <p>from ISQL.  In this case both file-system and WebDAV repository
 will contain .vspx-m and .vspx-sql files in the same place and with the same
 name as the VSPX source file.  VSPX temporary storage can be re-enabled in
 the same way but using the string value &#39;0&#39; instead of &#39;1&#39;.  Note that this is
 a string rather than a number. </p>
 <p>Any VSPX page invocation, whether through the GET or POST HTTP request,
 consists of the following steps:</p>

<ul>
  <li>
        <div class="formalpara">
          <strong>Instantiation</strong>
  <p>The tree of widgets is built according to the page
  description.  The possibly saved state of controls is restored when
  instantiating these, if there was a persistent state vector as part of
  the post request or stored on the server.</p>
  </div>
      </li>
  <li>
        <div class="formalpara">
          <strong>Data Binding</strong>
  <p>The tree is traversed and attributes or subtrees
  depending on SQL expressions are set or instantiated.</p>
  </div>
      </li>
  <li>
        <div class="formalpara">
          <strong>Post Processing</strong>
  <p>If this was a POST request, the control that was
  mentioned in the POST gets a post event, as well as any enclosing
  controls or input controls affected by the posted data.  The subtree
  containing the submit button originating the POST gets the post
  event to all its nodes, children before parents.  Post data server
  side validation takes place during this phase.  Any database
  updating takes place during this processing, typically inside the
  post handler of the form element, after the post handling of each
  individual field is complete.</p>
  </div>
      </li>
  <li>
        <div class="formalpara">
          <strong>Before Render</strong>
  <p>The control tree is now assumed to be in a state
  reflecting the operation intended by the POST or GET.  This pass
  typically collects the page state to be persisted.  Other application
  dependent finalization operations can be added here.</p>
  </div>
      </li>
  <li>
        <div class="formalpara">
          <strong>Render</strong>
  <p>This pass is a depth first traversal of the control tree and
  is responsible for generating the text to be sent to the user agent.
  This will typically be straight HTML, but can also be something else,
  such as XML for post processing in a style sheet.</p>
  </div>
      </li>
</ul>
<p>
    Just as with VSP pages the code of the page make call http_xslt(), this has the
    effect of applying the specific stylesheet to the HTML text produced by the render phase.
    Since output contains HTML tags generated by VSPX controls, the
    style-sheet should have these as a general rule to leave these unchanged.
    The http_xslt () is more useful with VSP pages producing XML than with VSPX pages.
</p>
<br />

<a name="vspxobjectmodel" />
    <h3>12.4.2. Object Model</h3>

 <p>VSPX controls are SQL user defined type instances, or objects.  The
 SQL object system is substantially similar to any other single
 inheritance object system, such as that of Java or C#.  The XML source
 code of the VSPX page is processed to generate SQL for instantiating the
 VSPX control tree.  The XML elements and classes may have similar names
 but are not one to one identical.</p>

 <p>All controls, including pages, are instances of a subclass of
 <span class="computeroutput">vspx_control</span>.  To each VSPX source
 file corresponds a class named after the file, which inherits the common
 superclass <span class="computeroutput">vspx_page</span>.
 Normally, all code, regardless of which specific control on the page
 it pertains to, runs inside a method of the page, thus the <strong>self</strong>
 (like &#39;this&#39; in Java or C++) refers to the page instance.  By
 convention, the variable <strong>control</strong> references the object
 representing the control which declares the particular code snippet.  The variable
 <span class="computeroutput">e</span> represents the event which is at the
 root of the code being invoked.  The event is normally an event object
 representing a GET or POST HTTP request, but it can also be a user
 defined event sent to the page by other code on the page or elsewhere.</p>

 <p>The page has a data member <span class="computeroutput">vc_children</span>
 which contains an array of all top level VSPX controls on the page.
 Each control in turn has this same variable for referring to subordinate
 controls, if any.</p>

 <p>Each processing pass allows the developer to specify arbitrary SQL code
 to run in the context of the pass.  The code runs in the context of a method
 of the page object, where the local variable <strong>control</strong>
 references the control that declares the code in question.</p>

 <p>Controls may be enabled or disabled, thus supporting conditional
 activation and rendering of page parts.  Parts may be enabled in
 function of a page state, for example a search result control is only
 on after the search text has been posted.  Another example is that
 some controls may only be enabled if a user is logged in.</p>

 <p>Code inside a control may locate other controls on the page by name,
 either starting from the control itself or at the page.  Note that
 when repeating control groups are involved, it is best to start at the
 leaf and work upwards in the tree, since there can be several
 identically named children of the page.  All controls have a name
 which is unique in terms of the VSPX source file.  Additionally, all
 controls, including members of repeating groups, have a name which is
 generated to be unique at run time.  The latter is not however
 constant.  The <span class="computeroutput">vc_parent</span> data member
 references the parent.  <span class="computeroutput">vc_name</span> is
 the name as appears in the name attribute of the corresponding XML
 element.  <span class="computeroutput">vc_instance_name</span>  is a page-wide
 unique name, generated to be different for each possible repetition of the
 control.  The <span class="computeroutput">find_control</span> method of
 <span class="computeroutput">vspx_control</span> can be used to look for a
 child with a specific <span class="computeroutput">vc_name</span>.</p>
 <br />

 <a name="vspxpageandsessionstate" />
    <h3>12.4.3. Keeping Page and Session State</h3>

 <p>VSPX does not require any particular session management to be in
 effect to operate.  It is in its default form entirely stateless on
 the server side.  There is a mechanism called view state for keeping
 track of data between consecutive post backs of a single page.  This is
 simply an automatically maintained hidden field which will keep the
 state of controls which have a state that may be persisted.  The
 view state mechanism does not however safeguard data across different
 pages but is fine for remembering entered form data or a bookmark in a
 scrolled list across page reloads.</p>

 <p>To keep real sessions and session variables, a
 <span class="computeroutput">v:login</span> control is offered.</p>
 <br />

 <a name="vspxappcode" />
    <h3>12.4.4. Application Code</h3>

 <p>Most VSPX controls will support XML children specifying SQL code to
 run at various points of the page processing cycle.  The elements are:</p>

 <ul>
      <li>v:before-data-bind</li>
      <li>v:after-data-bind</li>
      <li>v:before-post</li>
      <li>v:before-render</li>
    </ul>

 <p>These elements will have a script tag as unique child, most often
 containing a CDATA section for escaping the SQL text.</p>

 <p>Additionally, most attributes of VSPX elements can have a SQL expression
 evaluated at initialization, pre data bind or after data bind time, as
 the case may be, depending on the attribute and its value.
 An attribute value beginning with <span class="computeroutput">&quot;--&quot;</span>
 indicates evaluation on the initialization or the descending edge of the data
 bind pass.  An attribute value indicating <span class="computeroutput">&quot;--after&quot;</span>
 specifies that the value is calculated on the returning edge of recursion of the data bind pass.</p>

 <p>Arbitrary HTML text may contain attributes with a data bound value.  The
 attributes should be in the XHTML namespace and have a text beginning with
 <span class="computeroutput">&quot;--&quot;</span>.  The expression will be evaluated at
 render time, where the <strong>control</strong> variable refers to the
 enclosing VSPX template control, e.g. the page instance when at top level.</p>

  <a name="vspxvspcompatinlinesql" />
    <h4>12.4.4.1. VSP Compatibility and In-Line SQL</h4>

  <p>Arbitrary HTML text may contain &lt;?vsp ?&gt;, &lt;?V ?&gt; (equivalent of &lt;?= VSP notation) and
  &lt;?U ?&gt; (equivalent of &lt;?/ VSP notation) processing instructions.
  The code in question will be evaluated
  during the render pass, with control set to the closest enclosing VSPX
  control.
  Please note that the &lt;?= and &lt;?/ VSP shortcuts cannot be used inside VSPX pages as they are not valid processing-instructions.
  </p>

  <p>VSPX maintains backward compatibility with VSP through supporting the
  same processing instructions, but additionally requires the page source to be
  well formed XML.  VSP pages which are well formed in XML terms will run as
  such under with the VSPX extension, with the addition of the
  <span class="computeroutput">v:page</span> top level element.</p>

  <p>The &lt;?vsp ?&gt; processing instruction expects a SQL statement.  The
  statement can be a compound statement ending in another &lt;?vsp ?&gt;
  processing instruction at the same nesting level under the same parent tag.
  The other pi&#39;s &lt;?V and &lt;?U  expect a SQL expression. </p>

  <div class="note">
      <div class="notetitle">Note:</div>
    <p>&lt;?V ?&gt; is not permitted inside attributes without quotation,
    as this is not well formed XML.  When quoted, this notation in attributes
    has no special effect, hence the convention about the leading
    <span class="computeroutput">&quot;--&quot;</span> and the <span class="computeroutput">XHTML</span>
    namespace for HTML attributes with a computed value.</p>
    </div>

  <br />
 <br />

 <a name="vspxexamples" />
    <h3>12.4.5. A Simple Example</h3>

 <a name="ex_vspxsimplepage" />
    <div class="example">
      <div class="exampletitle">Simple VSPX Page</div>

 <p>The fragment below shows us a VSPX page with a few labels.  A label is a
 simple control that renders as HTML text, using a data bindable attribute to
 specify a value and a C printf style format string for the format.
 Note the use of the &lt;?vsp ?&gt; processing instruction.  This could just
 as well have been an HTML literal.</p>

 <div>
        <pre class="programlisting">
&lt;html&gt;
  &lt;body&gt;
    &lt;v:page name=&quot;demo_label&quot; xmlns:v=&quot;http://www.openlinksw.com/vspx/&quot;&gt;
      &lt;p&gt;
        &lt;?vsp http (&#39;&lt;H3&gt;Simple page to demonstrate simple VSPX controls&lt;/H3&gt;&#39;); ?&gt;
      &lt;/p&gt;
      &lt;p&gt; An integer &lt;v:label name=&quot;label1&quot; value=&quot;--(1 + 2)&quot; format=&quot;--&#39;%d&#39;&quot;/&gt; &lt;/p&gt;
      &lt;p&gt; A string &lt;v:label name=&quot;label2&quot; value=&quot;&#39;123&#39;&quot; format=&quot;%s&quot;/&gt; &lt;/p&gt;
      &lt;p&gt; A string with default format &lt;v:label name=&quot;label3&quot; value=&quot;String&quot;/&gt; &lt;/p&gt;
      &lt;p&gt;
      An url &lt;v:url name=&quot;url1&quot; value=&quot;--&#39;OpenLink Software Ltd.&#39;&quot; format=&quot;%s&quot; url=&quot;--&#39;http://openlinksw.com/&#39;&quot;/&gt;
      &lt;br/&gt;
      An url (default format) &lt;v:url name=&quot;url2&quot; value=&quot;OpenLink Software Ltd.&quot; url=&quot;http://openlinksw.com/&quot; /&gt;
      &lt;/p&gt;
      &lt;v:include url=&quot;footer.xml&quot;/&gt;
    &lt;/v:page&gt;
  &lt;/body&gt;
&lt;/html&gt;
</pre>
      </div>
 </div>
<br />

 <a name="vspxeventpars" />
    <h3>12.4.6. VSPX Event Handler Parameters</h3>
 <p>
 The user-defined event handlers always accept a &#39;control&#39; parameter whose type
 is the same as that of the control it belongs to.  For example the on-post event
 of &#39;button&#39; has a parameter &#39;control&#39; of type vspx_button; after-data-bind of
 a &#39;label&#39; has a parameter &#39;control&#39; of type &#39;vspx_label&#39; etc. </p>

 <p>The event handlers for before-data-bind, after-data-bind and on-post
 have an additional parameter: &#39;e&#39; which is of type vspx_event.  The parameter
 (&#39;e&#39;) keeps the HTTP request as post data, request header and path just like the
 global variables &#39;path&#39;, &#39;params&#39; and &#39;lines&#39; on a VSP page. In addition to that,
 the vspx_event (e) keeps a reference to the button pressed (if any) and a flag
 indicating the request type: POST or GET.  It may thus be used in a complex
 form to detect when to trigger an event depending of event data or to directly
 access parameters of the HTTP request, etc.</p>

 <div>
      <pre class="programlisting">
create type vspx_event
as (
    ve_params any,      	-- name value pairs of post data
    ve_lines  any,      	-- HTTP header lines
    ve_path   any,      	-- requested path , parsed as vector
    ve_button vspx_control,     -- which active control originated the event.
    ve_is_post int default 0    -- 0 for GET 1 for POST
   )  temporary self as ref
;</pre>
    </div>

<br />

 <a name="vspxeventhandlers" />
    <h3>12.4.7. Registering a VSPX Event Callbacks</h3>
     <p>
	The event handlers mechanism can be extended with callbacks.
	This means registering a page method(s) which will be invoked after
	event scrips are processed. The page methods used in this case can
	be either defined using &#39;method&#39; declaration inside VSPX page or
	using page subclass defined in code-behind script(s) (see &#39;code-file&#39; below).
	To register a callback vc_add_handler (name, method_name) method must be invoked
	in any script preceding the handler stage.
	Parameters to the vc_add_handler are: name - name of event where callback to be executed
	(before-data-bind, after-data-bind, on-post, before-render),
	method_name - name of a page class method to be registered to the event.
     </p>

     <div>
      <pre class="programlisting">
	 &lt;html&gt;
	     &lt;body&gt;
		 &lt;v:page name=&quot;handler_demo&quot; xmlns:v=&quot;http://www.openlinksw.com/vspx/&quot;&gt;
		     &lt;v:form name=&quot;sf&quot; type=&quot;simple&quot; action=&quot;form.vspx&quot; method=&quot;POST&quot;&gt;
			 &lt;v:text name=&quot;txt&quot; /&gt;
			 &lt;v:button name=&quot;submit2&quot; action=&quot;simple&quot; value=&quot;OK&quot; /&gt;
			 &lt;v:on-init&gt;
			     control.vc_add_handler (&#39;on-post&#39;, &#39;user_post&#39;);
			 &lt;/v:on-init&gt;
		     &lt;/v:form&gt;
		     &lt;v:method name=&quot;user_post&quot; arglist=&quot;inout control vspx_control&quot;&gt;
			 dbg_printf (&#39;Invoked: user post method&#39;);
		     &lt;/v:method&gt;
		 &lt;/v:page&gt;
	     &lt;/body&gt;
	 &lt;/html&gt;
	 </pre>
    </div>
<br />



<a name="vspx_attr_types" />
    <h3>12.4.8. Commonly Used Types of Attributes of VSPX Controls</h3>
 <div class="funcsynopsis">
    </div>
    <p>The type of attribute that contains an expression to be calculated at run time.</p>
 <div class="funcsynopsis">
    </div>
    <p>The type of attribute that contains an expression to be calculated at run time.</p>
 <div class="funcsynopsis">
    </div>
    <p>The type of a string value that is a Text of a Virtuoso/PL procedure.</p>
 <div class="funcsynopsis">
    </div>
    <p>The type of attribute that contains a name of the Virtuoso/PL UDT instance that should be created for the control.</p>
<br />

<a name="vspx_controls" />
    <h3>12.4.9. VSPX Controls</h3>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_after_data_bind" />
        <span class="funcdef">
            &lt;<a href="vc_after_data_bind.html">
            <span class="function">after-data-bind</span>
          </a>&gt;(EventHandler)&lt;/<a href="vc_after_data_bind.html">
            <span class="function">after-data-bind</span>
          </a>&gt;</span>
    </div>
   </div>
    <p>Container for code that should be executed after data bind.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_after_data_bind_container" />
        <span class="funcdef">
            &lt;<a href="vc_after_data_bind_container.html">
            <span class="function">after-data-bind-container</span>
          </a>&gt;(EventHandler)&lt;/<a href="vc_after_data_bind_container.html">
            <span class="function">after-data-bind-container</span>
          </a>&gt;</span>
    </div>
   </div>
    <p>This is identical to v:after-data-bind.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_before_data_bind" />
        <span class="funcdef">
            &lt;<a href="vc_before_data_bind.html">
            <span class="function">before-data-bind</span>
          </a>&gt;(EventHandler)&lt;/<a href="vc_before_data_bind.html">
            <span class="function">before-data-bind</span>
          </a>&gt;</span>
    </div>
   </div>
    <p>Container for code that should be executed before data bind.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_before_data_bind_container" />
        <span class="funcdef">
            &lt;<a href="vc_before_data_bind_container.html">
            <span class="function">before-data-bind-container</span>
          </a>&gt;(EventHandler)&lt;/<a href="vc_before_data_bind_container.html">
            <span class="function">before-data-bind-container</span>
          </a>&gt;</span>
    </div>
   </div>
    <p>This is identical to v:before-data-bind.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_before_render" />
        <span class="funcdef">
            &lt;<a href="vc_before_render.html">
            <span class="function">before-render</span>
          </a>&gt;(EventHandler)&lt;/<a href="vc_before_render.html">
            <span class="function">before-render</span>
          </a>&gt;</span>
    </div>
   </div>
    <p>Container for code that should be executed before rendering.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_before_render_container" />
        <span class="funcdef">
            &lt;<a href="vc_before_render_container.html">
            <span class="function">before-render-container</span>
          </a>&gt;(EventHandler)&lt;/<a href="vc_before_render_container.html">
            <span class="function">before-render-container</span>
          </a>&gt;</span>
    </div>
   </div>
    <p>This is identical to v:before-render.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_button" />
        <span class="funcdef">
            &lt;<a href="vc_button.html">
            <span class="function">button</span>
          </a> 
            name (required) 
          
            annotation (optional) 
          
            initial-enable (optional) 
          
            enabled (optional) 
          
            instantiate (optional) 
          
            control-udt (optional) 
          
            xsd-stub-xhtml (optional) 
          
            width (optional) 
          
            height (optional) 
          
            column (optional) 
          
            null-value (optional) 
          
            action (required) 
          
            value (required) 
          
            style (optional) 
          
            active (optional) 
          
            initial-active (optional) 
          
            child-window-options (optional) 
          
            browser-current (optional) 
          
            browser-filter (optional) 
          
            browser-list (optional) 
          
            browser-mode (optional) 
          
            browser-type (optional) 
          
            browser-xfer (optional) 
          
            selector (optional) 
          
            format (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>Scriptable button.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_calendar" />
        <span class="funcdef">
            &lt;<a href="vc_calendar.html">
            <span class="function">calendar</span>
          </a> 
            name (required) 
          
            annotation (optional) 
          
            initial-enable (optional) 
          
            enabled (optional) 
          
            instantiate (optional) 
          
            control-udt (optional) 
          
            xsd-stub-xhtml (optional) 
          
            width (optional) 
          
            height (optional) 
          
            initial-date (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>Databound calendar control.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_check_box" />
        <span class="funcdef">
            &lt;<a href="vc_check_box.html">
            <span class="function">check-box</span>
          </a> 
            name (required) 
          
            annotation (optional) 
          
            initial-enable (optional) 
          
            enabled (optional) 
          
            instantiate (optional) 
          
            control-udt (optional) 
          
            xsd-stub-xhtml (optional) 
          
            width (optional) 
          
            height (optional) 
          
            column (optional) 
          
            null-value (optional) 
          
            error-glyph (optional) 
          
            auto-submit (optional) 
          
            value (optional) 
          
            element-value (optional) 
          
            element-place (optional) 
          
            element-path (optional) 
          
            element-params (optional) 
          
            element-update-path (optional) 
          
            element-update-params (optional) 
          
            fmt-function (optional) 
          
            cvt-function (optional) 
          
            group-name (optional) 
          
            initial-checked (optional) 
          
            is-boolean (optional) 
          
            true-value (optional) 
          
            false-value (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>Scriptable check-box.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_code_file" />
        <span class="funcdef">
            &lt;<a href="vc_code_file.html">
            <span class="function">code-file</span>
          </a> 
            url (required) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>Code-behind file containing SQL script.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_column" />
        <span class="funcdef">
            &lt;<a href="vc_column.html">
            <span class="function">column</span>
          </a> 
            name (required) 
          
            label (optional) 
          
            input-format (optional) 
          
            output-format (optional) 
          
            xsd-stub-xhtml (optional) 
          
            width (optional) 
          
            height (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>A column marker.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_data_grid" />
        <span class="funcdef">
            &lt;<a href="vc_data_grid.html">
            <span class="function">data-grid</span>
          </a> 
            name (required) 
          
            annotation (optional) 
          
            initial-enable (optional) 
          
            enabled (optional) 
          
            instantiate (optional) 
          
            control-udt (optional) 
          
            xsd-stub-xhtml (optional) 
          
            width (optional) 
          
            height (optional) 
          
            data (optional) 
          
            meta (optional) 
          
            nrows (optional) 
          
            sql (required) 
          
            scrollable (optional) 
          
            cursor-type (optional) 
          
            edit (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>Scrollable databound multi-row control.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_data_list" />
        <span class="funcdef">
            &lt;<a href="vc_data_list.html">
            <span class="function">data-list</span>
          </a> 
            name (required) 
          
            annotation (optional) 
          
            initial-enable (optional) 
          
            enabled (optional) 
          
            instantiate (optional) 
          
            control-udt (optional) 
          
            xsd-stub-xhtml (optional) 
          
            width (optional) 
          
            height (optional) 
          
            error-glyph (optional) 
          
            auto-submit (optional) 
          
            column (optional) 
          
            null-value (optional) 
          
            value (optional) 
          
            element-value (optional) 
          
            element-place (optional) 
          
            element-path (optional) 
          
            element-params (optional) 
          
            element-update-path (optional) 
          
            element-update-params (optional) 
          
            fmt-function (optional) 
          
            cvt-function (optional) 
          
            table (optional) 
          
            key-column (optional) 
          
            value-column (optional) 
          
            sql (optional) 
          
            defvalue (optional) 
          
            multiple (optional) 
          
            list-document (optional) 
          
            list-match (optional) 
          
            list-key-path (optional) 
          
            list-value-path (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>Select list initialized from database table.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_data_set" />
        <span class="funcdef">
            &lt;<a href="vc_data_set.html">
            <span class="function">data-set</span>
          </a> 
            name (required) 
          
            annotation (optional) 
          
            initial-enable (optional) 
          
            enabled (optional) 
          
            instantiate (optional) 
          
            control-udt (optional) 
          
            xsd-stub-xhtml (optional) 
          
            width (optional) 
          
            height (optional) 
          
            sql (optional) 
          
            data-source (optional) 
          
            data (optional) 
          
            meta (optional) 
          
            nrows (optional) 
          
            scrollable (required) 
          
            cursor-type (optional) 
          
            edit (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>Scrollable, multi-row data bound grid.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_data_source" />
        <span class="funcdef">
            &lt;<a href="vc_data_source.html">
            <span class="function">data-source</span>
          </a> 
            name (required) 
          
            annotation (optional) 
          
            initial-enable (optional) 
          
            enabled (optional) 
          
            instantiate (optional) 
          
            control-udt (optional) 
          
            xsd-stub-xhtml (optional) 
          
            width (optional) 
          
            height (optional) 
          
            expression-type (required) 
          
            nrows (optional) 
          
            initial-offset (optional) 
          
            data (optional) 
          
            meta (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>Scrollable multi-row data bound source.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_error_summary" />
        <span class="funcdef">
            &lt;<a href="vc_error_summary.html">
            <span class="function">error-summary</span>
          </a> 
            match (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>Placeholder for error messages.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_expression" />
        <span class="funcdef">
            &lt;<a href="vc_expression.html">
            <span class="function">expression</span>
          </a> 
            language (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>An SQL statement that generates a rowset for v:data-source.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_field" />
        <span class="funcdef">
            &lt;<a href="vc_field.html">
            <span class="function">field</span>
          </a> 
            name (required) 
          
            annotation (optional) 
          
            initial-enable (optional) 
          
            enabled (optional) 
          
            instantiate (optional) 
          
            control-udt (optional) 
          
            xsd-stub-xhtml (optional) 
          
            width (optional) 
          
            height (optional) 
          
            ref (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>Name of input to be sent to and back between pup-up and parent window.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_form" />
        <span class="funcdef">
            &lt;<a href="vc_form.html">
            <span class="function">form</span>
          </a> 
            name (required) 
          
            annotation (optional) 
          
            initial-enable (optional) 
          
            enabled (optional) 
          
            instantiate (optional) 
          
            control-udt (optional) 
          
            xsd-stub-xhtml (optional) 
          
            width (optional) 
          
            height (optional) 
          
            type (optional) 
          
            action (optional) 
          
            method (optional) 
          
            table (optional) 
          
            if-not-exists (optional) 
          
            concurrency (optional) 
          
            triggers (optional) 
          
            data-source (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>Generic scriptable container for elements that may accept user&#39;s input.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_hidden" />
        <span class="funcdef">
            &lt;<a href="vc_hidden.html">
            <span class="function">hidden</span>
          </a> 
            xsd-stub-xhtml (optional) 
          
            width (optional) 
          
            height (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>A wrapper that prevents WYSIWYG editors from displaying its content.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_horizontal_template" />
        <span class="funcdef">
            &lt;<a href="vc_horizontal_template.html">
            <span class="function">horizontal-template</span>
          </a> 
            name (required) 
          
            annotation (optional) 
          
            initial-enable (optional) 
          
            enabled (optional) 
          
            instantiate (optional) 
          
            control-udt (optional) 
          
            xsd-stub-xhtml (optional) 
          
            width (optional) 
          
            height (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p />
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_include" />
        <span class="funcdef">
            &lt;<a href="vc_include.html">
            <span class="function">include</span>
          </a> 
            url (required) 
          
            active (optional) 
          
            initial-active (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>A place where the source code of other page should be inserted.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_isql" />
        <span class="funcdef">
            &lt;<a href="vc_isql.html">
            <span class="function">isql</span>
          </a> 
            name (required) 
          
            annotation (optional) 
          
            initial-enable (optional) 
          
            enabled (optional) 
          
            instantiate (optional) 
          
            control-udt (optional) 
          
            xsd-stub-xhtml (optional) 
          
            width (optional) 
          
            height (optional) 
          
            isolation (optional) 
          
            timeout (optional) 
          
            maxrows (optional) 
          
            user (optional) 
          
            password (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>An interactive SQL control that allows the user to type an SQL statement and to see the result of its execution.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_item" />
        <span class="funcdef">
            &lt;<a href="vc_item.html">
            <span class="function">item</span>
          </a> 
            name (required) 
          
            value (required) 
          
            xsd-stub-xhtml (optional) 
          
            width (optional) 
          
            height (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>Item representing a selection inside a select list.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_key" />
        <span class="funcdef">
            &lt;<a href="vc_key.html">
            <span class="function">key</span>
          </a> 
            name (optional) 
          
            column (required) 
          
            value (required) 
          
            default (optional) 
          
            xsd-stub-xhtml (optional) 
          
            width (optional) 
          
            height (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>A key value of the vspx:form of type &#39;update&#39;.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_label" />
        <span class="funcdef">
            &lt;<a href="vc_label.html">
            <span class="function">label</span>
          </a> 
            name (required) 
          
            annotation (optional) 
          
            initial-enable (optional) 
          
            enabled (optional) 
          
            instantiate (optional) 
          
            control-udt (optional) 
          
            xsd-stub-xhtml (optional) 
          
            width (optional) 
          
            height (optional) 
          
            column (optional) 
          
            null-value (optional) 
          
            value (optional) 
          
            element-value (optional) 
          
            element-place (optional) 
          
            element-path (optional) 
          
            element-params (optional) 
          
            element-update-path (optional) 
          
            element-update-params (optional) 
          
            fmt-function (optional) 
          
            cvt-function (optional) 
          
            format (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>Generic scriptable text.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_leaf_template" />
        <span class="funcdef">
            &lt;<a href="vc_leaf_template.html">
            <span class="function">leaf-template</span>
          </a> 
            name (required) 
          
            annotation (optional) 
          
            initial-enable (optional) 
          
            enabled (optional) 
          
            instantiate (optional) 
          
            control-udt (optional) 
          
            xsd-stub-xhtml (optional) 
          
            width (optional) 
          
            height (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p />
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_local_variable" />
        <span class="funcdef">
            &lt;<a href="vc_local_variable.html">
            <span class="function">local-variable</span>
          </a> 
            name (required) 
          
            annotation (optional) 
          
            initial-enable (optional) 
          
            enabled (optional) 
          
            instantiate (optional) 
          
            control-udt (optional) 
          
            xsd-stub-xhtml (optional) 
          
            width (optional) 
          
            height (optional) 
          
            value (optional) 
          
            element-value (optional) 
          
            element-place (optional) 
          
            element-path (optional) 
          
            element-params (optional) 
          
            element-update-path (optional) 
          
            element-update-params (optional) 
          
            fmt-function (optional) 
          
            cvt-function (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>Local variable - an invisible control to store a temporary value.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_login" />
        <span class="funcdef">
            &lt;<a href="vc_login.html">
            <span class="function">login</span>
          </a> 
            name (required) 
          
            annotation (optional) 
          
            initial-enable (optional) 
          
            enabled (optional) 
          
            instantiate (optional) 
          
            control-udt (optional) 
          
            xsd-stub-xhtml (optional) 
          
            width (optional) 
          
            height (optional) 
          
            realm (required) 
          
            mode (required) 
          
            user-password (optional) 
          
            user-password-check (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>Authentication parameters of a page.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_login_form" />
        <span class="funcdef">
            &lt;<a href="vc_login_form.html">
            <span class="function">login-form</span>
          </a> 
            name (required) 
          
            annotation (optional) 
          
            initial-enable (optional) 
          
            enabled (optional) 
          
            instantiate (optional) 
          
            control-udt (optional) 
          
            xsd-stub-xhtml (optional) 
          
            width (optional) 
          
            height (optional) 
          
            required (required) 
          
            title (optional) 
          
            user-title (optional) 
          
            password-title (optional) 
          
            submit-title (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>A form to be shown if the user is not logged in.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_method" />
        <span class="funcdef">
            &lt;<a href="vc_method.html">
            <span class="function">method</span>
          </a> 
            name (required) 
          
            returns (optional) 
          
            arglist (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>Page method - a user defined member of page class.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_node" />
        <span class="funcdef">
            &lt;<a href="vc_node.html">
            <span class="function">node</span>
          </a> 
            void (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>A place holder for rendering a tree node.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_node_template" />
        <span class="funcdef">
            &lt;<a href="vc_node_template.html">
            <span class="function">node-template</span>
          </a> 
            name (required) 
          
            annotation (optional) 
          
            initial-enable (optional) 
          
            enabled (optional) 
          
            instantiate (optional) 
          
            control-udt (optional) 
          
            xsd-stub-xhtml (optional) 
          
            width (optional) 
          
            height (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p />
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_on_init" />
        <span class="funcdef">
            &lt;<a href="vc_on_init.html">
            <span class="function">on-init</span>
          </a>&gt;(EventHandler)&lt;/<a href="vc_on_init.html">
            <span class="function">on-init</span>
          </a>&gt;</span>
    </div>
   </div>
    <p>Container for code that should be executed at the end of control instantiation.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_on_init_container" />
        <span class="funcdef">
            &lt;<a href="vc_on_init_container.html">
            <span class="function">on-init-container</span>
          </a>&gt;(EventHandler)&lt;/<a href="vc_on_init_container.html">
            <span class="function">on-init-container</span>
          </a>&gt;</span>
    </div>
   </div>
    <p>This is identical to v:on-init.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_on_post" />
        <span class="funcdef">
            &lt;<a href="vc_on_post.html">
            <span class="function">on-post</span>
          </a>&gt;(EventHandler)&lt;/<a href="vc_on_post.html">
            <span class="function">on-post</span>
          </a>&gt;</span>
    </div>
   </div>
    <p>Container for code that should be executed when the element gets a post.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_on_post_container" />
        <span class="funcdef">
            &lt;<a href="vc_on_post_container.html">
            <span class="function">on-post-container</span>
          </a>&gt;(EventHandler)&lt;/<a href="vc_on_post_container.html">
            <span class="function">on-post-container</span>
          </a>&gt;</span>
    </div>
   </div>
    <p>This is identical to v:on-post.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_page" />
        <span class="funcdef">
            &lt;<a href="vc_page.html">
            <span class="function">page</span>
          </a> 
            name (required) 
          
            decor (optional) 
          
            style (optional) 
          
            on-error-redirect (optional) 
          
            on-deadlock-retry (optional) 
          
            doctype (optional) 
          
            doctype-system (optional) 
          
            page-subclass (optional) 
          
            file-name (optional) 
          
            no-script-function (optional) 
          
            xsd-stub-xhtml (optional) 
          
            width (optional) 
          
            height (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>Container of VSPX code.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_param" />
        <span class="funcdef">
            &lt;<a href="vc_param.html">
            <span class="function">param</span>
          </a> 
            name (required) 
          
            value (required) 
          
            xsd-stub-xhtml (optional) 
          
            width (optional) 
          
            height (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>Named parameter for the cursor.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_placeholder" />
        <span class="funcdef">
            &lt;<a href="vc_placeholder.html">
            <span class="function">placeholder</span>
          </a> 
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>Placeholder for original page in the decoration page.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_radio_button" />
        <span class="funcdef">
            &lt;<a href="vc_radio_button.html">
            <span class="function">radio-button</span>
          </a> 
            name (required) 
          
            annotation (optional) 
          
            initial-enable (optional) 
          
            enabled (optional) 
          
            instantiate (optional) 
          
            control-udt (optional) 
          
            xsd-stub-xhtml (optional) 
          
            width (optional) 
          
            height (optional) 
          
            column (optional) 
          
            null-value (optional) 
          
            error-glyph (optional) 
          
            auto-submit (optional) 
          
            group-name (optional) 
          
            value (optional) 
          
            element-value (optional) 
          
            element-place (optional) 
          
            element-path (optional) 
          
            element-params (optional) 
          
            element-update-path (optional) 
          
            element-update-params (optional) 
          
            fmt-function (optional) 
          
            cvt-function (optional) 
          
            initial-checked (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>Scriptable radio button.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_radio_group" />
        <span class="funcdef">
            &lt;<a href="vc_radio_group.html">
            <span class="function">radio-group</span>
          </a> 
            name (required) 
          
            annotation (optional) 
          
            initial-enable (optional) 
          
            enabled (optional) 
          
            instantiate (optional) 
          
            control-udt (optional) 
          
            xsd-stub-xhtml (optional) 
          
            width (optional) 
          
            height (optional) 
          
            error-glyph (optional) 
          
            auto-submit (optional) 
          
            column (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>A group of radio-buttons.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_script" />
        <span class="funcdef">
            &lt;<a href="vc_script.html">
            <span class="function">script</span>
          </a> 
            language (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>A (redundant) wrapper for SQL code, can be omitted.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_select_list" />
        <span class="funcdef">
            &lt;<a href="vc_select_list.html">
            <span class="function">select-list</span>
          </a> 
            name (required) 
          
            annotation (optional) 
          
            initial-enable (optional) 
          
            enabled (optional) 
          
            instantiate (optional) 
          
            control-udt (optional) 
          
            xsd-stub-xhtml (optional) 
          
            width (optional) 
          
            height (optional) 
          
            column (optional) 
          
            null-value (optional) 
          
            error-glyph (optional) 
          
            auto-submit (optional) 
          
            multiple (optional) 
          
            value (optional) 
          
            element-value (optional) 
          
            element-place (optional) 
          
            element-path (optional) 
          
            element-params (optional) 
          
            element-update-path (optional) 
          
            element-update-params (optional) 
          
            fmt-function (optional) 
          
            cvt-function (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>Fixed initialized select list.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_style" />
        <span class="funcdef">
            &lt;<a href="vc_style.html">
            <span class="function">style</span>
          </a> 
            name (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>A markup tag for use by &#39;macro stylesheets&#39;.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_tab" />
        <span class="funcdef">
            &lt;<a href="vc_tab.html">
            <span class="function">tab</span>
          </a> 
            name (required) 
          
            annotation (optional) 
          
            initial-enable (optional) 
          
            enabled (optional) 
          
            instantiate (optional) 
          
            control-udt (optional) 
          
            xsd-stub-xhtml (optional) 
          
            width (optional) 
          
            height (optional) 
          
            initial-active (optional) 
          
            style (optional) 
          
            active (optional) 
          
            is-input (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>Selects one of its children to be active at any one time.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_template" />
        <span class="funcdef">
            &lt;<a href="vc_template.html">
            <span class="function">template</span>
          </a> 
            name (required) 
          
            annotation (optional) 
          
            initial-enable (optional) 
          
            enabled (optional) 
          
            instantiate (optional) 
          
            control-udt (optional) 
          
            xsd-stub-xhtml (optional) 
          
            width (optional) 
          
            height (optional) 
          
            type (optional) 
          
            redirect (optional) 
          
            condition (optional) 
          
            name-to-remove (optional) 
          
            set-to-remove (optional) 
          
            title (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>Container for a group of controls and/or HTML code.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_text" />
        <span class="funcdef">
            &lt;<a href="vc_text.html">
            <span class="function">text</span>
          </a> 
            name (required) 
          
            annotation (optional) 
          
            initial-enable (optional) 
          
            enabled (optional) 
          
            instantiate (optional) 
          
            control-udt (optional) 
          
            xsd-stub-xhtml (optional) 
          
            width (optional) 
          
            height (optional) 
          
            column (optional) 
          
            null-value (optional) 
          
            error-glyph (optional) 
          
            auto-submit (optional) 
          
            type (optional) 
          
            default (optional) 
          
            value (optional) 
          
            element-value (optional) 
          
            element-place (optional) 
          
            element-path (optional) 
          
            element-params (optional) 
          
            element-update-path (optional) 
          
            element-update-params (optional) 
          
            fmt-function (optional) 
          
            cvt-function (optional) 
          
            default-value (optional) 
          
            default_value (optional) 
          
            format (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>Scriptable, data-bindable input control.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_textarea" />
        <span class="funcdef">
            &lt;<a href="vc_textarea.html">
            <span class="function">textarea</span>
          </a> 
            name (required) 
          
            annotation (optional) 
          
            initial-enable (optional) 
          
            enabled (optional) 
          
            instantiate (optional) 
          
            control-udt (optional) 
          
            xsd-stub-xhtml (optional) 
          
            width (optional) 
          
            height (optional) 
          
            column (optional) 
          
            null-value (optional) 
          
            error-glyph (optional) 
          
            auto-submit (optional) 
          
            type (optional) 
          
            default_value (optional) 
          
            default (optional) 
          
            value (optional) 
          
            element-value (optional) 
          
            element-place (optional) 
          
            element-path (optional) 
          
            element-params (optional) 
          
            element-update-path (optional) 
          
            element-update-params (optional) 
          
            fmt-function (optional) 
          
            cvt-function (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>Scriptable text-area input.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_tree" />
        <span class="funcdef">
            &lt;<a href="vc_tree.html">
            <span class="function">tree</span>
          </a> 
            name (required) 
          
            annotation (optional) 
          
            initial-enable (optional) 
          
            enabled (optional) 
          
            instantiate (optional) 
          
            control-udt (optional) 
          
            xsd-stub-xhtml (optional) 
          
            width (optional) 
          
            height (optional) 
          
            show-root (optional) 
          
            multi-branch (required) 
          
            orientation (required) 
          
            root (required) 
          
            child-function (required) 
          
            start-path (required) 
          
            open-at (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>A container for displaying a tree of nested nodes.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_url" />
        <span class="funcdef">
            &lt;<a href="vc_url.html">
            <span class="function">url</span>
          </a> 
            name (required) 
          
            annotation (optional) 
          
            initial-enable (optional) 
          
            enabled (optional) 
          
            instantiate (optional) 
          
            control-udt (optional) 
          
            xsd-stub-xhtml (optional) 
          
            width (optional) 
          
            height (optional) 
          
            column (optional) 
          
            null-value (optional) 
          
            value (optional) 
          
            element-value (optional) 
          
            element-place (optional) 
          
            element-path (optional) 
          
            element-params (optional) 
          
            element-update-path (optional) 
          
            element-update-params (optional) 
          
            fmt-function (optional) 
          
            cvt-function (optional) 
          
            format (optional) 
          
            url (required) 
          
            active (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>Generic scriptable hypertext link.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_validator" />
        <span class="funcdef">
            &lt;<a href="vc_validator.html">
            <span class="function">validator</span>
          </a> 
            name (required) 
          
            annotation (optional) 
          
            initial-enable (optional) 
          
            enabled (optional) 
          
            instantiate (optional) 
          
            control-udt (optional) 
          
            xsd-stub-xhtml (optional) 
          
            width (optional) 
          
            height (optional) 
          
            test (required) 
          
            min (optional) 
          
            max (optional) 
          
            regexp (optional) 
          
            expression (optional) 
          
            empty-allowed (optional) 
          
            message (optional) 
          
            runat (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>A validator that is applied to user input.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_variable" />
        <span class="funcdef">
            &lt;<a href="vc_variable.html">
            <span class="function">variable</span>
          </a> 
            name (required) 
          
            type (required) 
          
            default (optional) 
          
            persist (optional) 
          
            param-name (optional) 
          
            xsd-stub-xhtml (optional) 
          
            width (optional) 
          
            height (optional) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>Page variable - a user defined member of page class.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_vscx" />
        <span class="funcdef">
            &lt;<a href="vc_vscx.html">
            <span class="function">vscx</span>
          </a> 
            name (required) 
          
            annotation (optional) 
          
            initial-enable (optional) 
          
            enabled (optional) 
          
            instantiate (optional) 
          
            control-udt (optional) 
          
            xsd-stub-xhtml (optional) 
          
            width (optional) 
          
            height (optional) 
          
            url (required) 
          
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p />
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_xsd_stub" />
        <span class="funcdef">
            &lt;<a href="vc_xsd_stub.html">
            <span class="function">xsd-stub</span>
          </a> 
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>This is for internal use only.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_xsd_stub_script" />
        <span class="funcdef">
            &lt;<a href="vc_xsd_stub_script.html">
            <span class="function">xsd-stub-script</span>
          </a> 
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>This is for internal use only.</p>
 <div class="funcsynopsis">
    
    <div class="funcsynopsis">
        <a name="vc_proto_xsd_stub_top" />
        <span class="funcdef">
            &lt;<a href="vc_xsd_stub_top.html">
            <span class="function">xsd-stub-top</span>
          </a> 
            debug-srcfile (optional) 
          
            debug-srcline (optional) 
          
            debug-log (optional) 
 /&gt;</span>
    </div>
   </div>
    <p>This is for internal use only.</p>
<br />

<a name="vspxxforms" />
    <h3>12.4.10. XForms rendering</h3>
    <p>
	The VSPX form controls such as form, button, select-list, text etc.
	can be rendered as XForms analogues using a special connection
        variable &#39;RenderXForms&#39; set to true (integer 1).
	Also XML post data coming from XForms capable agents
	will be parsed and provided to the VSPX page methods in usual form (name/value
	array).
	The HTML form elements substitution to the XForms is as follows:
	input type=&quot;text&quot; - xforms:input;
	input type=&quot;password&quot; - xforms:secret;
	textarea - xforms:textarea;
	select - xforms:select1;
	select multiple - xforms:select;
	checkbox - xforms:input (of datatype boolean);
	input type=&quot;radio&quot; - xforms:select1 appearance=&quot;full&quot;;
	input type=&quot;submit&quot; - xforms:submit;
	form - xforms:model.
	Furthermore validators which belongs to a input elements (not to a containers)
	will enforce XMLSchema types of the XForms model.
	Note that some XForms agents may need special object registering or a special
	Content-Type reported, so as this varies from agent to agent the application
	logic is responsible for setting them properly.
</p>

<div>
      <pre class="programlisting">
    &lt;v:page xmlns:v=&quot;http://www.openlinksw.com/vspx/&quot; name=&quot;xform_demo&quot;&gt;
	&lt;v:on-init&gt;
	    -- enable XForms rendering
	    connection_set (&#39;RenderXForms&#39;, 1);
	&lt;/v:on-init&gt;
	... page content follows ...
    &lt;/v:page&gt;
</pre>
    </div>

<br />

 <a name="vspxschema" />
    <h3>12.4.11. XMLSchema for VSPX page</h3>
 <div>
      <pre class="programlisting">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;xs:schema targetNamespace=&quot;http://www.openlinksw.com/vspx/&quot; xmlns:v=&quot;http://www.openlinksw.com/vspx/&quot; xmlns:xs=&quot;http://www.w3.org/2001/XMLSchema&quot; elementFormDefault=&quot;qualified&quot; attributeFormDefault=&quot;unqualified&quot;&gt;
  &lt;xs:simpleType name=&quot;CalculateableValue&quot; final=&quot;restriction&quot;&gt;
    &lt;xs:restriction base=&quot;xs:string&quot;&gt;
      &lt;xs:whiteSpace value=&quot;preserve&quot;/&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;
  &lt;xs:simpleType name=&quot;ButtonStyle&quot; final=&quot;restriction&quot;&gt;
    &lt;xs:restriction base=&quot;xs:string&quot;&gt;
      &lt;xs:enumeration value=&quot;submit&quot;/&gt;
      &lt;xs:enumeration value=&quot;url&quot;/&gt;
      &lt;xs:enumeration value=&quot;image&quot;/&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;
  &lt;xs:simpleType name=&quot;ButtonAction&quot; final=&quot;restriction&quot;&gt;
    &lt;xs:restriction base=&quot;xs:string&quot;&gt;
      &lt;xs:enumeration value=&quot;simple&quot;/&gt;
      &lt;xs:enumeration value=&quot;submit&quot;/&gt;
      &lt;xs:enumeration value=&quot;delete&quot;/&gt;
      &lt;xs:enumeration value=&quot;browse&quot;/&gt;
      &lt;xs:enumeration value=&quot;return&quot;/&gt;
      &lt;xs:enumeration value=&quot;logout&quot;/&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;
  &lt;xs:simpleType name=&quot;SqlName&quot; final=&quot;restriction&quot;&gt;
    &lt;xs:restriction base=&quot;xs:string&quot;&gt;
      &lt;xs:minLength value=&quot;1&quot; fixed=&quot;false&quot;/&gt;
      &lt;xs:maxLength value=&quot;32&quot; fixed=&quot;false&quot;/&gt;
      &lt;xs:pattern value=&quot;[A-Za-z0-9_]{1,32}&quot;/&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;
  &lt;xs:simpleType name=&quot;SqlTableQname&quot; final=&quot;restriction&quot;&gt;
    &lt;xs:restriction base=&quot;xs:string&quot;&gt;
      &lt;xs:pattern value=&quot;[A-Za-z0-9_]{1,32}\.[A-Za-z0-9_]{0,32}\.[A-Za-z0-9_]{1,32}&quot;/&gt;
      &lt;xs:pattern value=&quot;[A-Za-z0-9_]{1,32}&quot;/&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;
  &lt;xs:simpleType name=&quot;SqlCode&quot; final=&quot;restriction&quot;&gt;
    &lt;xs:restriction base=&quot;xs:string&quot;&gt;
      &lt;xs:whiteSpace value=&quot;preserve&quot;/&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;
  &lt;xs:simpleType name=&quot;LoginMode&quot; final=&quot;restriction&quot;&gt;
    &lt;xs:restriction base=&quot;xs:string&quot;&gt;
      &lt;xs:enumeration value=&quot;digest&quot;/&gt;
      &lt;xs:enumeration value=&quot;url&quot;/&gt;
      &lt;xs:enumeration value=&quot;cookie&quot;/&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;
  &lt;xs:simpleType name=&quot;Unused&quot; final=&quot;restriction&quot;&gt;
    &lt;xs:restriction base=&quot;xs:string&quot;/&gt;
  &lt;/xs:simpleType&gt;
  &lt;xs:simpleType name=&quot;TreeOrientation&quot; final=&quot;restriction&quot;&gt;
    &lt;xs:restriction base=&quot;xs:string&quot;&gt;
      &lt;xs:pattern value=&quot;horizontal&quot;/&gt;
      &lt;xs:pattern value=&quot;vertical&quot;/&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;
  &lt;xs:simpleType name=&quot;PlCursorType&quot; final=&quot;restriction&quot;&gt;
    &lt;xs:restriction base=&quot;xs:string&quot;&gt;
      &lt;xs:enumeration value=&quot;static&quot;/&gt;
      &lt;xs:enumeration value=&quot;dynamic&quot;/&gt;
      &lt;xs:enumeration value=&quot;keyset&quot;/&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;
  &lt;xs:attributeGroup name=&quot;HtmlGenAttributes&quot;&gt;
    &lt;xs:anyAttribute processContents=&quot;strict&quot;/&gt;
  &lt;/xs:attributeGroup&gt;
  &lt;xs:attributeGroup name=&quot;SqlGenAttributes&quot;&gt;
    &lt;xs:attribute name=&quot;name&quot; type=&quot;v:SqlName&quot; use=&quot;required&quot;/&gt;
    &lt;xs:attribute name=&quot;annotation&quot; type=&quot;xs:string&quot; use=&quot;optional&quot;/&gt;
    &lt;xs:attribute name=&quot;initial-enable&quot; type=&quot;v:CalculateableValue&quot; use=&quot;optional&quot;/&gt;
    &lt;xs:attribute name=&quot;enabled&quot; type=&quot;v:CalculateableValue&quot; use=&quot;optional&quot;/&gt;
    &lt;xs:attributeGroup ref=&quot;v:HtmlGenAttributes&quot;/&gt;
    &lt;xs:anyAttribute namespace=&quot;##other&quot; processContents=&quot;skip&quot;/&gt;
  &lt;/xs:attributeGroup&gt;
  &lt;xs:attributeGroup name=&quot;SqlColumn&quot;&gt;
    &lt;xs:attribute name=&quot;column&quot; type=&quot;v:SqlName&quot; use=&quot;optional&quot;/&gt;
  &lt;/xs:attributeGroup&gt;
  &lt;xs:attributeGroup name=&quot;UserInputAttributes&quot;&gt;
    &lt;xs:attribute name=&quot;error-glyph&quot; type=&quot;xs:string&quot; use=&quot;optional&quot;/&gt;
  &lt;/xs:attributeGroup&gt;
  &lt;xs:attributeGroup name=&quot;LoginParams&quot;&gt;
    &lt;xs:attribute name=&quot;realm&quot; type=&quot;xs:NMTOKEN&quot; use=&quot;required&quot;/&gt;
    &lt;xs:attribute name=&quot;mode&quot; type=&quot;v:LoginMode&quot; use=&quot;required&quot;/&gt;
    &lt;xs:attribute name=&quot;user-password&quot; type=&quot;xs:NMTOKEN&quot; use=&quot;required&quot;/&gt;
    &lt;xs:attribute name=&quot;user-password-check&quot; type=&quot;xs:NMTOKEN&quot; use=&quot;required&quot;/&gt;
  &lt;/xs:attributeGroup&gt;
  &lt;xs:attributeGroup name=&quot;BrowseButtonParams&quot;&gt;
    &lt;xs:attribute name=&quot;child-window-options&quot; type=&quot;xs:string&quot; use=&quot;optional&quot;/&gt;
    &lt;xs:attribute name=&quot;browser-current&quot; type=&quot;xs:int&quot; use=&quot;optional&quot; default=&quot;0&quot;/&gt;
    &lt;xs:attribute name=&quot;browser-filter&quot; type=&quot;xs:string&quot; use=&quot;optional&quot; default=&quot;*&quot;/&gt;
    &lt;xs:attribute name=&quot;browser-list&quot; type=&quot;xs:string&quot; use=&quot;optional&quot; default=&quot;1&quot;/&gt;
    &lt;xs:attribute name=&quot;browser-mode&quot; type=&quot;xs:string&quot; use=&quot;optional&quot; default=&quot;RES&quot;/&gt;
    &lt;xs:attribute name=&quot;browser-type&quot; type=&quot;xs:string&quot; use=&quot;optional&quot;/&gt;
    &lt;xs:attribute name=&quot;browser-xfer&quot; type=&quot;xs:string&quot; use=&quot;optional&quot; fixed=&quot;DOM&quot;/&gt;
    &lt;xs:attribute name=&quot;selector&quot; type=&quot;xs:anyURI&quot; use=&quot;optional&quot;/&gt;
  &lt;/xs:attributeGroup&gt;
  &lt;xs:group name=&quot;AnyHtmlContent&quot;&gt;
    &lt;xs:choice&gt;
      &lt;xs:element ref=&quot;v:style&quot;/&gt;
      &lt;xs:element ref=&quot;v:placeholder&quot;/&gt;
      &lt;xs:any namespace=&quot;##other&quot; processContents=&quot;skip&quot;/&gt;
    &lt;/xs:choice&gt;
  &lt;/xs:group&gt;
  &lt;xs:complexType name=&quot;EventHandler&quot; mixed=&quot;true&quot;&gt;
    &lt;xs:choice minOccurs=&quot;0&quot;&gt;
      &lt;xs:element ref=&quot;v:script&quot;/&gt;
    &lt;/xs:choice&gt;
  &lt;/xs:complexType&gt;
  &lt;xs:element name=&quot;after-data-bind&quot; type=&quot;v:EventHandler&quot;/&gt;
  &lt;xs:element name=&quot;before-data-bind&quot; type=&quot;v:EventHandler&quot;/&gt;
  &lt;xs:element name=&quot;on-post&quot; type=&quot;v:EventHandler&quot;/&gt;
  &lt;xs:element name=&quot;before-render&quot; type=&quot;v:EventHandler&quot;/&gt;
  &lt;xs:element name=&quot;on-init&quot; type=&quot;v:EventHandler&quot;/&gt;
  &lt;xs:group name=&quot;EventTarget&quot;&gt;
    &lt;xs:choice&gt;
      &lt;xs:element ref=&quot;v:after-data-bind&quot;/&gt;
      &lt;xs:element ref=&quot;v:before-data-bind&quot;/&gt;
      &lt;xs:element ref=&quot;v:on-post&quot;/&gt;
      &lt;xs:element ref=&quot;v:before-render&quot;/&gt;
      &lt;xs:element ref=&quot;v:on-init&quot;/&gt;
    &lt;/xs:choice&gt;
  &lt;/xs:group&gt;
  &lt;xs:element name=&quot;page&quot;&gt;
    &lt;xs:complexType mixed=&quot;true&quot;&gt;
      &lt;xs:choice minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;
        &lt;xs:group ref=&quot;v:EventTarget&quot;/&gt;
        &lt;xs:group ref=&quot;v:AnyVspxPageContent&quot;/&gt;
        &lt;xs:any/&gt;
      &lt;/xs:choice&gt;
      &lt;xs:attribute name=&quot;name&quot; type=&quot;v:SqlName&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;decor&quot; type=&quot;xs:anyURI&quot; use=&quot;optional&quot;/&gt;
      &lt;xs:attribute name=&quot;style&quot; type=&quot;xs:anyURI&quot; use=&quot;optional&quot;/&gt;
      &lt;xs:attribute name=&quot;on-error-redirect&quot; type=&quot;xs:anyURI&quot; use=&quot;optional&quot;/&gt;
      &lt;xs:attribute name=&quot;on-deadlock-retry&quot; type=&quot;xs:integer&quot; use=&quot;optional&quot; default=&quot;0&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:element name=&quot;include&quot;&gt;
    &lt;xs:complexType&gt;
      &lt;xs:attribute name=&quot;url&quot; type=&quot;xs:anyURI&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;name&quot; type=&quot;v:Unused&quot; use=&quot;optional&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:element name=&quot;template&quot;&gt;
    &lt;xs:complexType mixed=&quot;true&quot;&gt;
      &lt;xs:choice minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;
        &lt;xs:group ref=&quot;v:EventTarget&quot;/&gt;
        &lt;xs:group ref=&quot;v:AnyVspxPageContent&quot;/&gt;
      &lt;/xs:choice&gt;
      &lt;xs:attributeGroup ref=&quot;v:SqlGenAttributes&quot;/&gt;
      &lt;xs:attribute name=&quot;type&quot; type=&quot;v:TemplateType&quot; use=&quot;optional&quot;/&gt;
      &lt;xs:attribute name=&quot;redirect&quot; type=&quot;xs:anyURI&quot; use=&quot;optional&quot;/&gt;
      &lt;xs:attribute name=&quot;condition&quot; type=&quot;v:SqlCode&quot; use=&quot;optional&quot;/&gt;
      &lt;xs:attribute name=&quot;name-to-remove&quot; type=&quot;xs:QName&quot; use=&quot;optional&quot;/&gt;
      &lt;xs:attribute name=&quot;set-to-remove&quot; type=&quot;v:TemplateSetToRemove&quot; use=&quot;optional&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:simpleType name=&quot;TemplateType&quot; final=&quot;restriction&quot;&gt;
    &lt;xs:restriction base=&quot;xs:string&quot;&gt;
      &lt;xs:enumeration value=&quot;simple&quot;/&gt;
      &lt;xs:enumeration value=&quot;repeat&quot;/&gt;
      &lt;xs:enumeration value=&quot;row&quot;/&gt;
      &lt;xs:enumeration value=&quot;frame&quot;/&gt;
      &lt;xs:enumeration value=&quot;if-exists&quot;/&gt;
      &lt;xs:enumeration value=&quot;if-not-exists&quot;/&gt;
      &lt;xs:enumeration value=&quot;add&quot;/&gt;
      &lt;xs:enumeration value=&quot;browse&quot;/&gt;
      &lt;xs:enumeration value=&quot;edit&quot;/&gt;
      &lt;xs:enumeration value=&quot;if-login&quot;/&gt;
      &lt;xs:enumeration value=&quot;if-not-login&quot;/&gt;
      &lt;xs:enumeration value=&quot;tree-node&quot;/&gt;
      &lt;xs:enumeration value=&quot;tree-leaf&quot;/&gt;
      &lt;xs:enumeration value=&quot;input&quot;/&gt;
      &lt;xs:enumeration value=&quot;result&quot;/&gt;
      &lt;xs:enumeration value=&quot;error&quot;/&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;
  &lt;xs:simpleType name=&quot;TemplateSetToRemove&quot; final=&quot;restriction&quot;&gt;
    &lt;xs:restriction base=&quot;xs:string&quot;&gt;
      &lt;xs:enumeration value=&quot;none&quot;/&gt;
      &lt;xs:enumeration value=&quot;top&quot;/&gt;
      &lt;xs:enumeration value=&quot;bottom&quot;/&gt;
      &lt;xs:enumeration value=&quot;both&quot;/&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;
  &lt;xs:element name=&quot;form&quot;&gt;
    &lt;xs:complexType mixed=&quot;true&quot;&gt;
      &lt;xs:choice minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;
        &lt;xs:group ref=&quot;v:EventTarget&quot;/&gt;
        &lt;xs:group ref=&quot;v:FormSpecificContent&quot;/&gt;
        &lt;xs:group ref=&quot;v:FormNonSpecificContent&quot;/&gt;
        &lt;xs:group ref=&quot;v:UserInputTarget&quot;/&gt;
        &lt;xs:group ref=&quot;v:AnyHtmlContent&quot;/&gt;
        &lt;xs:element ref=&quot;v:template&quot;/&gt;
      &lt;/xs:choice&gt;
      &lt;xs:attributeGroup ref=&quot;v:SqlGenAttributes&quot;/&gt;
      &lt;xs:attribute name=&quot;type&quot; type=&quot;v:FormType&quot; use=&quot;optional&quot;/&gt;
      &lt;xs:attribute name=&quot;action&quot; type=&quot;xs:string&quot; use=&quot;optional&quot;/&gt;
      &lt;xs:attribute name=&quot;method&quot; type=&quot;v:FormMethod&quot; use=&quot;optional&quot; default=&quot;POST&quot;/&gt;
      &lt;xs:attribute name=&quot;table&quot; type=&quot;v:SqlTableQname&quot; use=&quot;optional&quot;/&gt;
      &lt;xs:attribute name=&quot;if-not-exists&quot; type=&quot;v:FormUpdateIfNotExists&quot; use=&quot;optional&quot;/&gt;
      &lt;xs:attribute name=&quot;concurrency&quot; type=&quot;xs:boolean&quot; use=&quot;optional&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:simpleType name=&quot;FormType&quot; final=&quot;restriction&quot;&gt;
    &lt;xs:restriction base=&quot;xs:string&quot;&gt;
      &lt;xs:enumeration value=&quot;simple&quot;/&gt;
      &lt;xs:enumeration value=&quot;update&quot;/&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;
  &lt;xs:simpleType name=&quot;FormMethod&quot; final=&quot;restriction&quot;&gt;
    &lt;xs:restriction base=&quot;xs:string&quot;&gt;
      &lt;xs:enumeration value=&quot;GET&quot;/&gt;
      &lt;xs:enumeration value=&quot;POST&quot;/&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;
  &lt;xs:simpleType name=&quot;VariableStorage&quot; final=&quot;restriction&quot;&gt;
    &lt;xs:restriction base=&quot;xs:string&quot;&gt;
      &lt;xs:enumeration value=&quot;session&quot;/&gt;
      &lt;xs:enumeration value=&quot;pagestate&quot;/&gt;
      &lt;xs:enumeration value=&quot;temp&quot;/&gt;
      &lt;xs:enumeration value=&quot;0&quot;/&gt;
      &lt;xs:enumeration value=&quot;1&quot;/&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;
  &lt;xs:simpleType name=&quot;FormUpdateIfNotExists&quot; final=&quot;restriction&quot;&gt;
    &lt;xs:restriction base=&quot;xs:string&quot;&gt;
      &lt;xs:enumeration value=&quot;insert&quot;/&gt;
      &lt;xs:enumeration value=&quot;nothing&quot;/&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;
  &lt;xs:element name=&quot;tab&quot;&gt;
    &lt;xs:complexType&gt;
      &lt;xs:choice minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;
        &lt;xs:group ref=&quot;v:EventTarget&quot;/&gt;
        &lt;xs:group ref=&quot;v:AnyHtmlContent&quot;/&gt;
        &lt;xs:element ref=&quot;v:template&quot;/&gt;
      &lt;/xs:choice&gt;
      &lt;xs:attributeGroup ref=&quot;v:SqlGenAttributes&quot;/&gt;
      &lt;xs:attribute name=&quot;initial-active&quot; type=&quot;v:SqlName&quot; use=&quot;optional&quot;/&gt;
      &lt;xs:attribute name=&quot;style&quot; type=&quot;xs:string&quot; use=&quot;optional&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:element name=&quot;script&quot;&gt;
    &lt;xs:complexType mixed=&quot;true&quot;&gt;
      &lt;xs:sequence minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;
        &lt;xs:any namespace=&quot;##any&quot;/&gt;
      &lt;/xs:sequence&gt;
      &lt;xs:attribute name=&quot;language&quot; type=&quot;v:SqlName&quot; use=&quot;optional&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:element name=&quot;variable&quot;&gt;
    &lt;xs:complexType mixed=&quot;true&quot;&gt;
      &lt;xs:sequence minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;
        &lt;xs:any namespace=&quot;##any&quot;/&gt;
      &lt;/xs:sequence&gt;
      &lt;xs:attribute name=&quot;name&quot; type=&quot;v:SqlName&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;type&quot; type=&quot;v:SqlName&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;default&quot; type=&quot;v:SqlCode&quot; use=&quot;optional&quot;/&gt;
      &lt;xs:attribute name=&quot;persist&quot; type=&quot;v:VariableStorage&quot; use=&quot;optional&quot; default=&quot;pagestate&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:element name=&quot;validator&quot;&gt;
    &lt;xs:complexType&gt;
      &lt;xs:attributeGroup ref=&quot;v:SqlGenAttributes&quot;/&gt;
      &lt;xs:attribute name=&quot;test&quot; type=&quot;xs:string&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;min&quot; type=&quot;xs:string&quot; use=&quot;optional&quot;/&gt;
      &lt;xs:attribute name=&quot;max&quot; type=&quot;xs:string&quot; use=&quot;optional&quot;/&gt;
      &lt;xs:attribute name=&quot;regexp&quot; type=&quot;xs:string&quot; use=&quot;optional&quot;/&gt;
      &lt;xs:attribute name=&quot;empty-allowed&quot; type=&quot;xs:boolean&quot; use=&quot;optional&quot;/&gt;
      &lt;xs:attribute name=&quot;message&quot; type=&quot;xs:string&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;runat&quot; type=&quot;v:ValidatorType&quot; use=&quot;optional&quot; default=&quot;server&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:simpleType name=&quot;ValidatorType&quot; final=&quot;restriction&quot;&gt;
    &lt;xs:restriction base=&quot;xs:string&quot;&gt;
      &lt;xs:enumeration value=&quot;server&quot;/&gt;
      &lt;xs:enumeration value=&quot;client&quot;/&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;
  &lt;xs:group name=&quot;UserInputTarget&quot;&gt;
    &lt;xs:choice&gt;
      &lt;xs:element ref=&quot;v:validator&quot;/&gt;
    &lt;/xs:choice&gt;
  &lt;/xs:group&gt;
  &lt;xs:element name=&quot;field&quot;&gt;
    &lt;xs:complexType&gt;
      &lt;xs:attributeGroup ref=&quot;v:SqlGenAttributes&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:element name=&quot;button&quot;&gt;
    &lt;xs:complexType&gt;
      &lt;xs:choice minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;
        &lt;xs:group ref=&quot;v:EventTarget&quot;/&gt;
        &lt;xs:element ref=&quot;v:field&quot;/&gt;
      &lt;/xs:choice&gt;
      &lt;xs:attributeGroup ref=&quot;v:SqlGenAttributes&quot;/&gt;
      &lt;xs:attributeGroup ref=&quot;v:SqlColumn&quot;/&gt;
      &lt;xs:attribute name=&quot;action&quot; type=&quot;v:ButtonAction&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;value&quot; type=&quot;v:CalculateableValue&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;style&quot; type=&quot;v:ButtonStyle&quot; use=&quot;optional&quot;/&gt;
      &lt;xs:attribute name=&quot;active&quot; type=&quot;v:CalculateableValue&quot; use=&quot;optional&quot;/&gt;
      &lt;xs:attributeGroup ref=&quot;v:BrowseButtonParams&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:element name=&quot;radio-button&quot;&gt;
    &lt;xs:complexType&gt;
      &lt;xs:choice minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;
        &lt;xs:group ref=&quot;v:EventTarget&quot;/&gt;
      &lt;/xs:choice&gt;
      &lt;xs:attributeGroup ref=&quot;v:SqlGenAttributes&quot;/&gt;
      &lt;xs:attributeGroup ref=&quot;v:SqlColumn&quot;/&gt;
      &lt;xs:attributeGroup ref=&quot;v:UserInputAttributes&quot;/&gt;
      &lt;xs:attribute name=&quot;group-name&quot; type=&quot;xs:NCName&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;value&quot; type=&quot;v:CalculateableValue&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;initial-checked&quot; type=&quot;xs:integer&quot; use=&quot;optional&quot; default=&quot;0&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:element name=&quot;check-box&quot;&gt;
    &lt;xs:complexType&gt;
      &lt;xs:choice minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;
        &lt;xs:group ref=&quot;v:EventTarget&quot;/&gt;
      &lt;/xs:choice&gt;
      &lt;xs:attributeGroup ref=&quot;v:SqlGenAttributes&quot;/&gt;
      &lt;xs:attributeGroup ref=&quot;v:SqlColumn&quot;/&gt;
      &lt;xs:attributeGroup ref=&quot;v:UserInputAttributes&quot;/&gt;
      &lt;xs:attribute name=&quot;value&quot; type=&quot;v:CalculateableValue&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;group-name&quot; type=&quot;v:SqlName&quot; use=&quot;optional&quot;/&gt;
      &lt;xs:attribute name=&quot;initial-checked&quot; type=&quot;xs:integer&quot; use=&quot;optional&quot; default=&quot;0&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:element name=&quot;text&quot;&gt;
    &lt;xs:complexType mixed=&quot;false&quot;&gt;
      &lt;xs:choice minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;
        &lt;xs:group ref=&quot;v:EventTarget&quot;/&gt;
        &lt;xs:group ref=&quot;v:UserInputTarget&quot;/&gt;
      &lt;/xs:choice&gt;
      &lt;xs:attributeGroup ref=&quot;v:SqlGenAttributes&quot;/&gt;
      &lt;xs:attributeGroup ref=&quot;v:SqlColumn&quot;/&gt;
      &lt;xs:attributeGroup ref=&quot;v:UserInputAttributes&quot;/&gt;
      &lt;xs:attribute name=&quot;type&quot; type=&quot;v:TextInputType&quot; use=&quot;optional&quot; default=&quot;plain&quot;/&gt;
      &lt;xs:attribute name=&quot;default&quot; type=&quot;v:CalculateableValue&quot; use=&quot;optional&quot;/&gt;
      &lt;xs:attribute name=&quot;value&quot; type=&quot;v:CalculateableValue&quot; use=&quot;optional&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:element name=&quot;textarea&quot;&gt;
    &lt;xs:complexType&gt;
      &lt;xs:choice minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;
        &lt;xs:group ref=&quot;v:EventTarget&quot;/&gt;
        &lt;xs:group ref=&quot;v:UserInputTarget&quot;/&gt;
      &lt;/xs:choice&gt;
      &lt;xs:attributeGroup ref=&quot;v:SqlGenAttributes&quot;/&gt;
      &lt;xs:attributeGroup ref=&quot;v:SqlColumn&quot;/&gt;
      &lt;xs:attributeGroup ref=&quot;v:UserInputAttributes&quot;/&gt;
      &lt;xs:attribute name=&quot;type&quot; type=&quot;v:TextInputType&quot; use=&quot;optional&quot; default=&quot;plain&quot;/&gt;
      &lt;xs:attribute name=&quot;default&quot; type=&quot;v:CalculateableValue&quot; use=&quot;optional&quot;/&gt;
      &lt;xs:attribute name=&quot;value&quot; type=&quot;v:CalculateableValue&quot; use=&quot;optional&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:simpleType name=&quot;TextInputType&quot;&gt;
    &lt;xs:restriction base=&quot;xs:string&quot;&gt;
      &lt;xs:enumeration value=&quot;plain&quot;/&gt;
      &lt;xs:enumeration value=&quot;password&quot;/&gt;
      &lt;xs:enumeration value=&quot;hidden&quot;/&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;
  &lt;xs:element name=&quot;item&quot;&gt;
    &lt;xs:complexType&gt;
      &lt;xs:attribute name=&quot;name&quot; type=&quot;v:SqlCode&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;value&quot; type=&quot;xs:string&quot; use=&quot;required&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:element name=&quot;select-list&quot;&gt;
    &lt;xs:complexType&gt;
      &lt;xs:choice minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;
        &lt;xs:group ref=&quot;v:EventTarget&quot;/&gt;
        &lt;xs:element ref=&quot;v:item&quot;/&gt;
      &lt;/xs:choice&gt;
      &lt;xs:attributeGroup ref=&quot;v:SqlGenAttributes&quot;/&gt;
      &lt;xs:attributeGroup ref=&quot;v:SqlColumn&quot;/&gt;
      &lt;xs:attributeGroup ref=&quot;v:UserInputAttributes&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:element name=&quot;key&quot;&gt;
    &lt;xs:complexType&gt;
      &lt;xs:attribute name=&quot;column&quot; type=&quot;v:SqlName&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;value&quot; type=&quot;v:CalculateableValue&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;default&quot; type=&quot;v:CalculateableValue&quot; use=&quot;optional&quot; default=&quot;null&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:group name=&quot;FormSpecificContent&quot;&gt;
    &lt;xs:choice&gt;
      &lt;xs:element ref=&quot;v:button&quot;/&gt;
      &lt;xs:element ref=&quot;v:radio-group&quot;/&gt;
      &lt;xs:element ref=&quot;v:radio-button&quot;/&gt;
      &lt;xs:element ref=&quot;v:check-box&quot;/&gt;
      &lt;xs:element ref=&quot;v:select-list&quot;/&gt;
      &lt;xs:element ref=&quot;v:data-list&quot;/&gt;
      &lt;xs:element ref=&quot;v:textarea&quot;/&gt;
      &lt;xs:element ref=&quot;v:text&quot;/&gt;
      &lt;xs:element ref=&quot;v:key&quot;/&gt;
      &lt;xs:element ref=&quot;v:error-summary&quot;/&gt;
      &lt;xs:element ref=&quot;v:calendar&quot;/&gt;
    &lt;/xs:choice&gt;
  &lt;/xs:group&gt;
  &lt;xs:element name=&quot;label&quot;&gt;
    &lt;xs:complexType&gt;
      &lt;xs:attributeGroup ref=&quot;v:SqlGenAttributes&quot;/&gt;
      &lt;xs:attributeGroup ref=&quot;v:SqlColumn&quot;/&gt;
      &lt;xs:attribute name=&quot;value&quot; type=&quot;v:CalculateableValue&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;format&quot; type=&quot;xs:string&quot; use=&quot;optional&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:element name=&quot;url&quot;&gt;
    &lt;xs:complexType&gt;
      &lt;xs:attributeGroup ref=&quot;v:SqlGenAttributes&quot;/&gt;
      &lt;xs:attributeGroup ref=&quot;v:SqlColumn&quot;/&gt;
      &lt;xs:attribute name=&quot;value&quot; type=&quot;v:CalculateableValue&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;format&quot; type=&quot;xs:string&quot; use=&quot;optional&quot;/&gt;
      &lt;xs:attribute name=&quot;url&quot; type=&quot;v:CalculateableValue&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;active&quot; type=&quot;v:CalculateableValue&quot; use=&quot;optional&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:element name=&quot;data-list&quot;&gt;
    &lt;xs:complexType&gt;
      &lt;xs:choice minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;
        &lt;xs:group ref=&quot;v:EventTarget&quot;/&gt;
      &lt;/xs:choice&gt;
      &lt;xs:attributeGroup ref=&quot;v:SqlGenAttributes&quot;/&gt;
      &lt;xs:attributeGroup ref=&quot;v:SqlColumn&quot;/&gt;
      &lt;xs:attribute name=&quot;table&quot; type=&quot;v:SqlTableQname&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;key&quot; type=&quot;v:SqlName&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;value&quot; type=&quot;v:SqlName&quot; use=&quot;required&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:element name=&quot;node&quot;&gt;
    &lt;xs:complexType&gt;
      &lt;xs:attribute name=&quot;void&quot; type=&quot;xs:string&quot; use=&quot;optional&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:element name=&quot;tree&quot;&gt;
    &lt;xs:complexType&gt;
      &lt;xs:choice minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;
        &lt;xs:group ref=&quot;v:EventTarget&quot;/&gt;
        &lt;xs:element ref=&quot;v:template&quot;/&gt;
      &lt;/xs:choice&gt;
      &lt;xs:attributeGroup ref=&quot;v:SqlGenAttributes&quot;/&gt;
      &lt;xs:attribute name=&quot;show-root&quot; type=&quot;xs:boolean&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;multi-branch&quot; type=&quot;xs:boolean&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;orientation&quot; type=&quot;v:TreeOrientation&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;root-function&quot; type=&quot;v:SqlName&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;child-function&quot; type=&quot;v:SqlName&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;start-path&quot; type=&quot;v:CalculateableValue&quot; use=&quot;required&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:element name=&quot;error-summary&quot;&gt;
    &lt;xs:complexType&gt;
      &lt;xs:attribute name=&quot;match&quot; type=&quot;xs:string&quot; use=&quot;optional&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:group name=&quot;FormNonSpecificContent&quot;&gt;
    &lt;xs:choice&gt;
      &lt;xs:element ref=&quot;v:variable&quot;/&gt;
      &lt;xs:element ref=&quot;v:label&quot;/&gt;
      &lt;xs:element ref=&quot;v:url&quot;/&gt;
      &lt;xs:element ref=&quot;v:data-grid&quot;/&gt;
      &lt;xs:element ref=&quot;v:data-set&quot;/&gt;
      &lt;xs:element ref=&quot;v:tab&quot;/&gt;
      &lt;xs:element ref=&quot;v:tree&quot;/&gt;
      &lt;xs:element ref=&quot;v:include&quot;/&gt;
      &lt;xs:element ref=&quot;v:isql&quot;/&gt;
    &lt;/xs:choice&gt;
  &lt;/xs:group&gt;
  &lt;xs:element name=&quot;login-form&quot;&gt;
    &lt;xs:complexType&gt;
      &lt;xs:choice minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;
        &lt;xs:group ref=&quot;v:EventTarget&quot;/&gt;
        &lt;xs:group ref=&quot;v:AnyVspxPageContent&quot;/&gt;
      &lt;/xs:choice&gt;
      &lt;xs:attributeGroup ref=&quot;v:SqlGenAttributes&quot;/&gt;
      &lt;xs:attribute name=&quot;required&quot; type=&quot;xs:boolean&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;title&quot; type=&quot;xs:string&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;user-title&quot; type=&quot;xs:string&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;password-title&quot; type=&quot;xs:string&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;submit-title&quot; type=&quot;xs:string&quot; use=&quot;required&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:element name=&quot;login&quot;&gt;
    &lt;xs:complexType&gt;
      &lt;xs:choice minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;
        &lt;xs:group ref=&quot;v:EventTarget&quot;/&gt;
        &lt;xs:group ref=&quot;v:FormNonSpecificContent&quot;/&gt;
        &lt;xs:group ref=&quot;v:FormSpecificContent&quot;/&gt;
        &lt;xs:element ref=&quot;v:template&quot;/&gt;
        &lt;xs:element ref=&quot;v:login-form&quot;/&gt;
      &lt;/xs:choice&gt;
      &lt;xs:attributeGroup ref=&quot;v:SqlGenAttributes&quot;/&gt;
      &lt;xs:attribute name=&quot;realm&quot; type=&quot;xs:string&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;mode&quot; type=&quot;xs:string&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;user-password&quot; type=&quot;xs:string&quot; use=&quot;optional&quot;/&gt;
      &lt;xs:attribute name=&quot;user-password-check&quot; type=&quot;xs:string&quot; use=&quot;optional&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:group name=&quot;AnyVspxPageContent&quot;&gt;
    &lt;xs:choice minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;
      &lt;xs:group ref=&quot;v:FormSpecificContent&quot;/&gt;
      &lt;xs:group ref=&quot;v:FormNonSpecificContent&quot;/&gt;
      &lt;xs:group ref=&quot;v:AnyHtmlContent&quot;/&gt;
      &lt;xs:element ref=&quot;v:node&quot;/&gt;
      &lt;xs:element ref=&quot;v:form&quot;/&gt;
      &lt;xs:element ref=&quot;v:template&quot;/&gt;
      &lt;xs:element ref=&quot;v:hidden&quot;/&gt;
      &lt;xs:element ref=&quot;v:login&quot;/&gt;
      &lt;xs:element ref=&quot;v:login-form&quot;/&gt;
    &lt;/xs:choice&gt;
  &lt;/xs:group&gt;
  &lt;xs:element name=&quot;column&quot;&gt;
    &lt;xs:complexType&gt;
      &lt;xs:attribute name=&quot;name&quot; type=&quot;v:SqlName&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;label&quot; type=&quot;v:CalculateableValue&quot; use=&quot;optional&quot;/&gt;
      &lt;xs:attribute name=&quot;input-format&quot; type=&quot;xs:string&quot; use=&quot;optional&quot;/&gt;
      &lt;xs:attribute name=&quot;output-format&quot; type=&quot;xs:string&quot; use=&quot;optional&quot;/&gt;
      &lt;xs:attributeGroup ref=&quot;v:HtmlGenAttributes&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:element name=&quot;data-set&quot;&gt;
    &lt;xs:complexType mixed=&quot;true&quot;&gt;
      &lt;xs:choice minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;
        &lt;xs:group ref=&quot;v:EventTarget&quot;/&gt;
        &lt;xs:group ref=&quot;v:AnyVspxPageContent&quot;/&gt;
        &lt;xs:element ref=&quot;v:column&quot;/&gt;
        &lt;xs:element ref=&quot;v:param&quot;/&gt;
        &lt;xs:element ref=&quot;v:key&quot;/&gt;
      &lt;/xs:choice&gt;
      &lt;xs:attributeGroup ref=&quot;v:SqlGenAttributes&quot;/&gt;
      &lt;xs:attribute name=&quot;sql&quot; type=&quot;v:SqlCode&quot; use=&quot;optional&quot;/&gt;
      &lt;xs:attribute name=&quot;data-source&quot; type=&quot;v:CalculateableValue&quot; use=&quot;optional&quot;/&gt;
      &lt;xs:attribute name=&quot;nrows&quot; type=&quot;v:CalculateableValue&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;scrollable&quot; type=&quot;xs:boolean&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;cursor-type&quot; type=&quot;v:PlCursorType&quot; use=&quot;optional&quot; default=&quot;dynamic&quot;/&gt;
      &lt;xs:attribute name=&quot;edit&quot; type=&quot;xs:boolean&quot; use=&quot;optional&quot; default=&quot;false&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:element name=&quot;param&quot;&gt;
    &lt;xs:complexType&gt;
      &lt;xs:attribute name=&quot;name&quot; type=&quot;v:SqlName&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;value&quot; type=&quot;v:CalculateableValue&quot; use=&quot;required&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:element name=&quot;data-grid&quot;&gt;
    &lt;xs:complexType&gt;
      &lt;xs:choice minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;
        &lt;xs:group ref=&quot;v:EventTarget&quot;/&gt;
        &lt;xs:group ref=&quot;v:AnyVspxPageContent&quot;/&gt;
        &lt;xs:element ref=&quot;v:column&quot;/&gt;
        &lt;xs:element ref=&quot;v:param&quot;/&gt;
        &lt;xs:element ref=&quot;v:key&quot;/&gt;
      &lt;/xs:choice&gt;
      &lt;xs:attributeGroup ref=&quot;v:SqlGenAttributes&quot;/&gt;
      &lt;xs:attribute name=&quot;data&quot; type=&quot;v:CalculateableValue&quot;/&gt;
      &lt;xs:attribute name=&quot;meta&quot; type=&quot;v:CalculateableValue&quot;/&gt;
      &lt;xs:attribute name=&quot;nrows&quot; type=&quot;v:CalculateableValue&quot;/&gt;
      &lt;xs:attribute name=&quot;sql&quot; type=&quot;v:SqlCode&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;scrollable&quot; type=&quot;xs:boolean&quot;/&gt;
      &lt;xs:attribute name=&quot;cursor-type&quot; type=&quot;v:PlCursorType&quot;/&gt;
      &lt;xs:attribute name=&quot;edit&quot; type=&quot;xs:boolean&quot;/&gt;
      &lt;xs:anyAttribute namespace=&quot;##any&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:element name=&quot;isql&quot;&gt;
    &lt;xs:complexType&gt;
      &lt;xs:choice minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;
        &lt;xs:group ref=&quot;v:EventTarget&quot;/&gt;
        &lt;xs:element ref=&quot;v:template&quot;/&gt;
      &lt;/xs:choice&gt;
      &lt;xs:attributeGroup ref=&quot;v:SqlGenAttributes&quot;/&gt;
      &lt;xs:attribute name=&quot;isolation&quot; type=&quot;v:IsqlIsolation&quot; use=&quot;optional&quot;/&gt;
      &lt;xs:attribute name=&quot;timeout&quot; type=&quot;v:CalculateableValue&quot; use=&quot;optional&quot;/&gt;
      &lt;xs:attribute name=&quot;maxrows&quot; type=&quot;v:CalculateableValue&quot; use=&quot;optional&quot;/&gt;
      &lt;xs:attribute name=&quot;user&quot; type=&quot;v:CalculateableValue&quot; use=&quot;optional&quot;/&gt;
      &lt;xs:attribute name=&quot;password&quot; type=&quot;v:CalculateableValue&quot; use=&quot;optional&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:simpleType name=&quot;IsqlIsolation&quot;&gt;
    &lt;xs:restriction base=&quot;xs:string&quot;&gt;
      &lt;xs:enumeration value=&quot;committed&quot;/&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;
  &lt;xs:element name=&quot;radio-group&quot;&gt;
    &lt;xs:complexType&gt;
      &lt;xs:choice minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;
        &lt;xs:group ref=&quot;v:EventTarget&quot;/&gt;
        &lt;xs:group ref=&quot;v:AnyVspxPageContent&quot;/&gt;
      &lt;/xs:choice&gt;
      &lt;xs:attributeGroup ref=&quot;v:SqlGenAttributes&quot;/&gt;
      &lt;xs:attributeGroup ref=&quot;v:UserInputAttributes&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:element name=&quot;row-template&quot;&gt;
    &lt;xs:complexType&gt;
      &lt;xs:attributeGroup ref=&quot;v:SqlGenAttributes&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:element name=&quot;tree-node&quot;&gt;
    &lt;xs:complexType&gt;
      &lt;xs:attributeGroup ref=&quot;v:SqlGenAttributes&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:element name=&quot;hidden&quot;&gt;
    &lt;xs:complexType&gt;
      &lt;xs:choice minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;
        &lt;xs:group ref=&quot;v:AnyVspxPageContent&quot;/&gt;
      &lt;/xs:choice&gt;
      &lt;xs:attributeGroup ref=&quot;v:HtmlGenAttributes&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:element name=&quot;style&quot;&gt;
    &lt;xs:complexType mixed=&quot;true&quot;&gt;
      &lt;xs:choice minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;
        &lt;xs:group ref=&quot;v:AnyVspxPageContent&quot;/&gt;
      &lt;/xs:choice&gt;
      &lt;xs:attribute name=&quot;name&quot; type=&quot;xs:NMTOKEN&quot; use=&quot;optional&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:element name=&quot;placeholder&quot;&gt;
    &lt;xs:complexType/&gt;
  &lt;/xs:element&gt;
  &lt;xs:element name=&quot;calendar&quot;&gt;
    &lt;xs:complexType&gt;
      &lt;xs:choice minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;
        &lt;xs:group ref=&quot;v:EventTarget&quot;/&gt;
        &lt;xs:group ref=&quot;v:AnyVspxPageContent&quot;/&gt;
        &lt;xs:element ref=&quot;v:param&quot;/&gt;
      &lt;/xs:choice&gt;
      &lt;xs:attributeGroup ref=&quot;v:SqlGenAttributes&quot;/&gt;
      &lt;xs:attribute name=&quot;inital-date&quot; type=&quot;v:CalculateableValue&quot;/&gt;
      &lt;xs:anyAttribute namespace=&quot;##any&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:element name=&quot;expression&quot;&gt;
    &lt;xs:complexType mixed=&quot;true&quot;&gt;
      &lt;xs:sequence minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;
        &lt;xs:any namespace=&quot;##any&quot;/&gt;
      &lt;/xs:sequence&gt;
      &lt;xs:attribute name=&quot;language&quot; type=&quot;v:SqlName&quot; use=&quot;optional&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
  &lt;xs:element name=&quot;data-source&quot;&gt;
    &lt;xs:complexType mixed=&quot;true&quot;&gt;
      &lt;xs:choice minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;
        &lt;xs:group ref=&quot;v:EventTarget&quot;/&gt;
        &lt;xs:group ref=&quot;v:AnyVspxPageContent&quot;/&gt;
        &lt;xs:element ref=&quot;v:column&quot;/&gt;
        &lt;xs:element ref=&quot;v:param&quot;/&gt;
        &lt;xs:element ref=&quot;v:expression&quot;/&gt;
      &lt;/xs:choice&gt;
      &lt;xs:attributeGroup ref=&quot;v:SqlGenAttributes&quot;/&gt;
      &lt;xs:attribute name=&quot;expression-type&quot; type=&quot;xs:string&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;nrows&quot; type=&quot;v:CalculateableValue&quot; use=&quot;required&quot;/&gt;
      &lt;xs:attribute name=&quot;initial-offset&quot; type=&quot;v:CalculateableValue&quot; use=&quot;required&quot;/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;
&lt;/xs:schema&gt;
 </pre>
    </div>
 <br />
<table border="0" width="90%" id="navbarbottom">
    <tr>
        <td align="left" width="33%">
          <a href="vsp1.html" title="Virtuoso Server Pages (VSP)">Previous</a>
          <br />Virtuoso Server Pages (VSP)</td>
     <td align="center" width="34%">
          <a href="webappdevelopment.html">Chapter Contents</a>
     </td>
        <td align="right" width="33%">
          <a href="rthwritaspxapps.html" title="Deploying ASP.Net Web Applications">Next</a>
          <br />Deploying ASP.Net Web Applications</td>
    </tr>
    </table>
  </div>
  <div id="footer">
    <div>Copyright© 1999 - 2009 OpenLink Software All rights reserved.</div>
   <div id="validation">
    <a href="http://validator.w3.org/check/referer">
        <img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" />
    </a>
    <a href="http://jigsaw.w3.org/css-validator/">
        <img src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!" height="31" width="88" />
    </a>
   </div>
  </div>
 </body>
</html>