¶
14.4.11. XMLSchema for VSPX page
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://example.com/vspx/" xmlns:v="http://example.com/vspx/" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:simpleType name="CalculateableValue" final="restriction">
<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ButtonStyle" final="restriction">
<xs:restriction base="xs:string">
<xs:enumeration value="submit"/>
<xs:enumeration value="url"/>
<xs:enumeration value="image"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ButtonAction" final="restriction">
<xs:restriction base="xs:string">
<xs:enumeration value="simple"/>
<xs:enumeration value="submit"/>
<xs:enumeration value="delete"/>
<xs:enumeration value="browse"/>
<xs:enumeration value="return"/>
<xs:enumeration value="logout"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="SqlName" final="restriction">
<xs:restriction base="xs:string">
<xs:minLength value="1" fixed="false"/>
<xs:maxLength value="32" fixed="false"/>
<xs:pattern value="[A-Za-z0-9_]{1,32}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="SqlTableQname" final="restriction">
<xs:restriction base="xs:string">
<xs:pattern value="[A-Za-z0-9_]{1,32}\.[A-Za-z0-9_]{0,32}\.[A-Za-z0-9_]{1,32}"/>
<xs:pattern value="[A-Za-z0-9_]{1,32}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="SqlCode" final="restriction">
<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="LoginMode" final="restriction">
<xs:restriction base="xs:string">
<xs:enumeration value="digest"/>
<xs:enumeration value="url"/>
<xs:enumeration value="cookie"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Unused" final="restriction">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="TreeOrientation" final="restriction">
<xs:restriction base="xs:string">
<xs:pattern value="horizontal"/>
<xs:pattern value="vertical"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="PlCursorType" final="restriction">
<xs:restriction base="xs:string">
<xs:enumeration value="static"/>
<xs:enumeration value="dynamic"/>
<xs:enumeration value="keyset"/>
</xs:restriction>
</xs:simpleType>
<xs:attributeGroup name="HtmlGenAttributes">
<xs:anyAttribute processContents="strict"/>
</xs:attributeGroup>
<xs:attributeGroup name="SqlGenAttributes">
<xs:attribute name="name" type="v:SqlName" use="required"/>
<xs:attribute name="annotation" type="xs:string" use="optional"/>
<xs:attribute name="initial-enable" type="v:CalculateableValue" use="optional"/>
<xs:attribute name="enabled" type="v:CalculateableValue" use="optional"/>
<xs:attributeGroup ref="v:HtmlGenAttributes"/>
<xs:anyAttribute namespace="##other" processContents="skip"/>
</xs:attributeGroup>
<xs:attributeGroup name="SqlColumn">
<xs:attribute name="column" type="v:SqlName" use="optional"/>
</xs:attributeGroup>
<xs:attributeGroup name="UserInputAttributes">
<xs:attribute name="error-glyph" type="xs:string" use="optional"/>
</xs:attributeGroup>
<xs:attributeGroup name="LoginParams">
<xs:attribute name="realm" type="xs:NMTOKEN" use="required"/>
<xs:attribute name="mode" type="v:LoginMode" use="required"/>
<xs:attribute name="user-password" type="xs:NMTOKEN" use="required"/>
<xs:attribute name="user-password-check" type="xs:NMTOKEN" use="required"/>
</xs:attributeGroup>
<xs:attributeGroup name="BrowseButtonParams">
<xs:attribute name="child-window-options" type="xs:string" use="optional"/>
<xs:attribute name="browser-current" type="xs:int" use="optional" default="0"/>
<xs:attribute name="browser-filter" type="xs:string" use="optional" default="*"/>
<xs:attribute name="browser-list" type="xs:string" use="optional" default="1"/>
<xs:attribute name="browser-mode" type="xs:string" use="optional" default="RES"/>
<xs:attribute name="browser-type" type="xs:string" use="optional"/>
<xs:attribute name="browser-xfer" type="xs:string" use="optional" fixed="DOM"/>
<xs:attribute name="selector" type="xs:anyURI" use="optional"/>
</xs:attributeGroup>
<xs:group name="AnyHtmlContent">
<xs:choice>
<xs:element ref="v:style"/>
<xs:element ref="v:placeholder"/>
<xs:any namespace="##other" processContents="skip"/>
</xs:choice>
</xs:group>
<xs:complexType name="EventHandler" mixed="true">
<xs:choice minOccurs="0">
<xs:element ref="v:script"/>
</xs:choice>
</xs:complexType>
<xs:element name="after-data-bind" type="v:EventHandler"/>
<xs:element name="before-data-bind" type="v:EventHandler"/>
<xs:element name="on-post" type="v:EventHandler"/>
<xs:element name="before-render" type="v:EventHandler"/>
<xs:element name="on-init" type="v:EventHandler"/>
<xs:group name="EventTarget">
<xs:choice>
<xs:element ref="v:after-data-bind"/>
<xs:element ref="v:before-data-bind"/>
<xs:element ref="v:on-post"/>
<xs:element ref="v:before-render"/>
<xs:element ref="v:on-init"/>
</xs:choice>
</xs:group>
<xs:element name="page">
<xs:complexType mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="v:EventTarget"/>
<xs:group ref="v:AnyVspxPageContent"/>
<xs:any/>
</xs:choice>
<xs:attribute name="name" type="v:SqlName" use="required"/>
<xs:attribute name="decor" type="xs:anyURI" use="optional"/>
<xs:attribute name="style" type="xs:anyURI" use="optional"/>
<xs:attribute name="on-error-redirect" type="xs:anyURI" use="optional"/>
<xs:attribute name="on-deadlock-retry" type="xs:integer" use="optional" default="0"/>
</xs:complexType>
</xs:element>
<xs:element name="include">
<xs:complexType>
<xs:attribute name="url" type="xs:anyURI" use="required"/>
<xs:attribute name="name" type="v:Unused" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="template">
<xs:complexType mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="v:EventTarget"/>
<xs:group ref="v:AnyVspxPageContent"/>
</xs:choice>
<xs:attributeGroup ref="v:SqlGenAttributes"/>
<xs:attribute name="type" type="v:TemplateType" use="optional"/>
<xs:attribute name="redirect" type="xs:anyURI" use="optional"/>
<xs:attribute name="condition" type="v:SqlCode" use="optional"/>
<xs:attribute name="name-to-remove" type="xs:QName" use="optional"/>
<xs:attribute name="set-to-remove" type="v:TemplateSetToRemove" use="optional"/>
</xs:complexType>
</xs:element>
<xs:simpleType name="TemplateType" final="restriction">
<xs:restriction base="xs:string">
<xs:enumeration value="simple"/>
<xs:enumeration value="repeat"/>
<xs:enumeration value="row"/>
<xs:enumeration value="frame"/>
<xs:enumeration value="if-exists"/>
<xs:enumeration value="if-not-exists"/>
<xs:enumeration value="add"/>
<xs:enumeration value="browse"/>
<xs:enumeration value="edit"/>
<xs:enumeration value="if-login"/>
<xs:enumeration value="if-not-login"/>
<xs:enumeration value="tree-node"/>
<xs:enumeration value="tree-leaf"/>
<xs:enumeration value="input"/>
<xs:enumeration value="result"/>
<xs:enumeration value="error"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="TemplateSetToRemove" final="restriction">
<xs:restriction base="xs:string">
<xs:enumeration value="none"/>
<xs:enumeration value="top"/>
<xs:enumeration value="bottom"/>
<xs:enumeration value="both"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="form">
<xs:complexType mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="v:EventTarget"/>
<xs:group ref="v:FormSpecificContent"/>
<xs:group ref="v:FormNonSpecificContent"/>
<xs:group ref="v:UserInputTarget"/>
<xs:group ref="v:AnyHtmlContent"/>
<xs:element ref="v:template"/>
</xs:choice>
<xs:attributeGroup ref="v:SqlGenAttributes"/>
<xs:attribute name="type" type="v:FormType" use="optional"/>
<xs:attribute name="action" type="xs:string" use="optional"/>
<xs:attribute name="method" type="v:FormMethod" use="optional" default="POST"/>
<xs:attribute name="table" type="v:SqlTableQname" use="optional"/>
<xs:attribute name="if-not-exists" type="v:FormUpdateIfNotExists" use="optional"/>
<xs:attribute name="concurrency" type="xs:boolean" use="optional"/>
</xs:complexType>
</xs:element>
<xs:simpleType name="FormType" final="restriction">
<xs:restriction base="xs:string">
<xs:enumeration value="simple"/>
<xs:enumeration value="update"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="FormMethod" final="restriction">
<xs:restriction base="xs:string">
<xs:enumeration value="GET"/>
<xs:enumeration value="POST"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="VariableStorage" final="restriction">
<xs:restriction base="xs:string">
<xs:enumeration value="session"/>
<xs:enumeration value="pagestate"/>
<xs:enumeration value="temp"/>
<xs:enumeration value="0"/>
<xs:enumeration value="1"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="FormUpdateIfNotExists" final="restriction">
<xs:restriction base="xs:string">
<xs:enumeration value="insert"/>
<xs:enumeration value="nothing"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="tab">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="v:EventTarget"/>
<xs:group ref="v:AnyHtmlContent"/>
<xs:element ref="v:template"/>
</xs:choice>
<xs:attributeGroup ref="v:SqlGenAttributes"/>
<xs:attribute name="initial-active" type="v:SqlName" use="optional"/>
<xs:attribute name="style" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="script">
<xs:complexType mixed="true">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:any namespace="##any"/>
</xs:sequence>
<xs:attribute name="language" type="v:SqlName" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="variable">
<xs:complexType mixed="true">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:any namespace="##any"/>
</xs:sequence>
<xs:attribute name="name" type="v:SqlName" use="required"/>
<xs:attribute name="type" type="v:SqlName" use="required"/>
<xs:attribute name="default" type="v:SqlCode" use="optional"/>
<xs:attribute name="persist" type="v:VariableStorage" use="optional" default="pagestate"/>
</xs:complexType>
</xs:element>
<xs:element name="validator">
<xs:complexType>
<xs:attributeGroup ref="v:SqlGenAttributes"/>
<xs:attribute name="test" type="xs:string" use="required"/>
<xs:attribute name="min" type="xs:string" use="optional"/>
<xs:attribute name="max" type="xs:string" use="optional"/>
<xs:attribute name="regexp" type="xs:string" use="optional"/>
<xs:attribute name="empty-allowed" type="xs:boolean" use="optional"/>
<xs:attribute name="message" type="xs:string" use="required"/>
<xs:attribute name="runat" type="v:ValidatorType" use="optional" default="server"/>
</xs:complexType>
</xs:element>
<xs:simpleType name="ValidatorType" final="restriction">
<xs:restriction base="xs:string">
<xs:enumeration value="server"/>
<xs:enumeration value="client"/>
</xs:restriction>
</xs:simpleType>
<xs:group name="UserInputTarget">
<xs:choice>
<xs:element ref="v:validator"/>
</xs:choice>
</xs:group>
<xs:element name="field">
<xs:complexType>
<xs:attributeGroup ref="v:SqlGenAttributes"/>
</xs:complexType>
</xs:element>
<xs:element name="button">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="v:EventTarget"/>
<xs:element ref="v:field"/>
</xs:choice>
<xs:attributeGroup ref="v:SqlGenAttributes"/>
<xs:attributeGroup ref="v:SqlColumn"/>
<xs:attribute name="action" type="v:ButtonAction" use="required"/>
<xs:attribute name="value" type="v:CalculateableValue" use="required"/>
<xs:attribute name="style" type="v:ButtonStyle" use="optional"/>
<xs:attribute name="active" type="v:CalculateableValue" use="optional"/>
<xs:attributeGroup ref="v:BrowseButtonParams"/>
</xs:complexType>
</xs:element>
<xs:element name="radio-button">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="v:EventTarget"/>
</xs:choice>
<xs:attributeGroup ref="v:SqlGenAttributes"/>
<xs:attributeGroup ref="v:SqlColumn"/>
<xs:attributeGroup ref="v:UserInputAttributes"/>
<xs:attribute name="group-name" type="xs:NCName" use="required"/>
<xs:attribute name="value" type="v:CalculateableValue" use="required"/>
<xs:attribute name="initial-checked" type="xs:integer" use="optional" default="0"/>
</xs:complexType>
</xs:element>
<xs:element name="check-box">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="v:EventTarget"/>
</xs:choice>
<xs:attributeGroup ref="v:SqlGenAttributes"/>
<xs:attributeGroup ref="v:SqlColumn"/>
<xs:attributeGroup ref="v:UserInputAttributes"/>
<xs:attribute name="value" type="v:CalculateableValue" use="required"/>
<xs:attribute name="group-name" type="v:SqlName" use="optional"/>
<xs:attribute name="initial-checked" type="xs:integer" use="optional" default="0"/>
</xs:complexType>
</xs:element>
<xs:element name="text">
<xs:complexType mixed="false">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="v:EventTarget"/>
<xs:group ref="v:UserInputTarget"/>
</xs:choice>
<xs:attributeGroup ref="v:SqlGenAttributes"/>
<xs:attributeGroup ref="v:SqlColumn"/>
<xs:attributeGroup ref="v:UserInputAttributes"/>
<xs:attribute name="type" type="v:TextInputType" use="optional" default="plain"/>
<xs:attribute name="default" type="v:CalculateableValue" use="optional"/>
<xs:attribute name="value" type="v:CalculateableValue" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="textarea">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="v:EventTarget"/>
<xs:group ref="v:UserInputTarget"/>
</xs:choice>
<xs:attributeGroup ref="v:SqlGenAttributes"/>
<xs:attributeGroup ref="v:SqlColumn"/>
<xs:attributeGroup ref="v:UserInputAttributes"/>
<xs:attribute name="type" type="v:TextInputType" use="optional" default="plain"/>
<xs:attribute name="default" type="v:CalculateableValue" use="optional"/>
<xs:attribute name="value" type="v:CalculateableValue" use="optional"/>
</xs:complexType>
</xs:element>
<xs:simpleType name="TextInputType">
<xs:restriction base="xs:string">
<xs:enumeration value="plain"/>
<xs:enumeration value="password"/>
<xs:enumeration value="hidden"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="item">
<xs:complexType>
<xs:attribute name="name" type="v:SqlCode" use="required"/>
<xs:attribute name="value" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="select-list">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="v:EventTarget"/>
<xs:element ref="v:item"/>
</xs:choice>
<xs:attributeGroup ref="v:SqlGenAttributes"/>
<xs:attributeGroup ref="v:SqlColumn"/>
<xs:attributeGroup ref="v:UserInputAttributes"/>
</xs:complexType>
</xs:element>
<xs:element name="key">
<xs:complexType>
<xs:attribute name="column" type="v:SqlName" use="required"/>
<xs:attribute name="value" type="v:CalculateableValue" use="required"/>
<xs:attribute name="default" type="v:CalculateableValue" use="optional" default="null"/>
</xs:complexType>
</xs:element>
<xs:group name="FormSpecificContent">
<xs:choice>
<xs:element ref="v:button"/>
<xs:element ref="v:radio-group"/>
<xs:element ref="v:radio-button"/>
<xs:element ref="v:check-box"/>
<xs:element ref="v:select-list"/>
<xs:element ref="v:data-list"/>
<xs:element ref="v:textarea"/>
<xs:element ref="v:text"/>
<xs:element ref="v:key"/>
<xs:element ref="v:error-summary"/>
<xs:element ref="v:calendar"/>
</xs:choice>
</xs:group>
<xs:element name="label">
<xs:complexType>
<xs:attributeGroup ref="v:SqlGenAttributes"/>
<xs:attributeGroup ref="v:SqlColumn"/>
<xs:attribute name="value" type="v:CalculateableValue" use="required"/>
<xs:attribute name="format" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="url">
<xs:complexType>
<xs:attributeGroup ref="v:SqlGenAttributes"/>
<xs:attributeGroup ref="v:SqlColumn"/>
<xs:attribute name="value" type="v:CalculateableValue" use="required"/>
<xs:attribute name="format" type="xs:string" use="optional"/>
<xs:attribute name="url" type="v:CalculateableValue" use="required"/>
<xs:attribute name="active" type="v:CalculateableValue" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="data-list">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="v:EventTarget"/>
</xs:choice>
<xs:attributeGroup ref="v:SqlGenAttributes"/>
<xs:attributeGroup ref="v:SqlColumn"/>
<xs:attribute name="table" type="v:SqlTableQname" use="required"/>
<xs:attribute name="key" type="v:SqlName" use="required"/>
<xs:attribute name="value" type="v:SqlName" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="node">
<xs:complexType>
<xs:attribute name="void" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="tree">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="v:EventTarget"/>
<xs:element ref="v:template"/>
</xs:choice>
<xs:attributeGroup ref="v:SqlGenAttributes"/>
<xs:attribute name="show-root" type="xs:boolean" use="required"/>
<xs:attribute name="multi-branch" type="xs:boolean" use="required"/>
<xs:attribute name="orientation" type="v:TreeOrientation" use="required"/>
<xs:attribute name="root-function" type="v:SqlName" use="required"/>
<xs:attribute name="child-function" type="v:SqlName" use="required"/>
<xs:attribute name="start-path" type="v:CalculateableValue" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="error-summary">
<xs:complexType>
<xs:attribute name="match" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
<xs:group name="FormNonSpecificContent">
<xs:choice>
<xs:element ref="v:variable"/>
<xs:element ref="v:label"/>
<xs:element ref="v:url"/>
<xs:element ref="v:data-grid"/>
<xs:element ref="v:data-set"/>
<xs:element ref="v:tab"/>
<xs:element ref="v:tree"/>
<xs:element ref="v:include"/>
<xs:element ref="v:isql"/>
</xs:choice>
</xs:group>
<xs:element name="login-form">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="v:EventTarget"/>
<xs:group ref="v:AnyVspxPageContent"/>
</xs:choice>
<xs:attributeGroup ref="v:SqlGenAttributes"/>
<xs:attribute name="required" type="xs:boolean" use="required"/>
<xs:attribute name="title" type="xs:string" use="required"/>
<xs:attribute name="user-title" type="xs:string" use="required"/>
<xs:attribute name="password-title" type="xs:string" use="required"/>
<xs:attribute name="submit-title" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="login">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="v:EventTarget"/>
<xs:group ref="v:FormNonSpecificContent"/>
<xs:group ref="v:FormSpecificContent"/>
<xs:element ref="v:template"/>
<xs:element ref="v:login-form"/>
</xs:choice>
<xs:attributeGroup ref="v:SqlGenAttributes"/>
<xs:attribute name="realm" type="xs:string" use="required"/>
<xs:attribute name="mode" type="xs:string" use="required"/>
<xs:attribute name="user-password" type="xs:string" use="optional"/>
<xs:attribute name="user-password-check" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
<xs:group name="AnyVspxPageContent">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="v:FormSpecificContent"/>
<xs:group ref="v:FormNonSpecificContent"/>
<xs:group ref="v:AnyHtmlContent"/>
<xs:element ref="v:node"/>
<xs:element ref="v:form"/>
<xs:element ref="v:template"/>
<xs:element ref="v:hidden"/>
<xs:element ref="v:login"/>
<xs:element ref="v:login-form"/>
</xs:choice>
</xs:group>
<xs:element name="column">
<xs:complexType>
<xs:attribute name="name" type="v:SqlName" use="required"/>
<xs:attribute name="label" type="v:CalculateableValue" use="optional"/>
<xs:attribute name="input-format" type="xs:string" use="optional"/>
<xs:attribute name="output-format" type="xs:string" use="optional"/>
<xs:attributeGroup ref="v:HtmlGenAttributes"/>
</xs:complexType>
</xs:element>
<xs:element name="data-set">
<xs:complexType mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="v:EventTarget"/>
<xs:group ref="v:AnyVspxPageContent"/>
<xs:element ref="v:column"/>
<xs:element ref="v:param"/>
<xs:element ref="v:key"/>
</xs:choice>
<xs:attributeGroup ref="v:SqlGenAttributes"/>
<xs:attribute name="sql" type="v:SqlCode" use="optional"/>
<xs:attribute name="data-source" type="v:CalculateableValue" use="optional"/>
<xs:attribute name="nrows" type="v:CalculateableValue" use="required"/>
<xs:attribute name="scrollable" type="xs:boolean" use="required"/>
<xs:attribute name="cursor-type" type="v:PlCursorType" use="optional" default="dynamic"/>
<xs:attribute name="edit" type="xs:boolean" use="optional" default="false"/>
</xs:complexType>
</xs:element>
<xs:element name="param">
<xs:complexType>
<xs:attribute name="name" type="v:SqlName" use="required"/>
<xs:attribute name="value" type="v:CalculateableValue" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="data-grid">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="v:EventTarget"/>
<xs:group ref="v:AnyVspxPageContent"/>
<xs:element ref="v:column"/>
<xs:element ref="v:param"/>
<xs:element ref="v:key"/>
</xs:choice>
<xs:attributeGroup ref="v:SqlGenAttributes"/>
<xs:attribute name="data" type="v:CalculateableValue"/>
<xs:attribute name="meta" type="v:CalculateableValue"/>
<xs:attribute name="nrows" type="v:CalculateableValue"/>
<xs:attribute name="sql" type="v:SqlCode" use="required"/>
<xs:attribute name="scrollable" type="xs:boolean"/>
<xs:attribute name="cursor-type" type="v:PlCursorType"/>
<xs:attribute name="edit" type="xs:boolean"/>
<xs:anyAttribute namespace="##any"/>
</xs:complexType>
</xs:element>
<xs:element name="isql">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="v:EventTarget"/>
<xs:element ref="v:template"/>
</xs:choice>
<xs:attributeGroup ref="v:SqlGenAttributes"/>
<xs:attribute name="isolation" type="v:IsqlIsolation" use="optional"/>
<xs:attribute name="timeout" type="v:CalculateableValue" use="optional"/>
<xs:attribute name="maxrows" type="v:CalculateableValue" use="optional"/>
<xs:attribute name="user" type="v:CalculateableValue" use="optional"/>
<xs:attribute name="password" type="v:CalculateableValue" use="optional"/>
</xs:complexType>
</xs:element>
<xs:simpleType name="IsqlIsolation">
<xs:restriction base="xs:string">
<xs:enumeration value="committed"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="radio-group">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="v:EventTarget"/>
<xs:group ref="v:AnyVspxPageContent"/>
</xs:choice>
<xs:attributeGroup ref="v:SqlGenAttributes"/>
<xs:attributeGroup ref="v:UserInputAttributes"/>
</xs:complexType>
</xs:element>
<xs:element name="row-template">
<xs:complexType>
<xs:attributeGroup ref="v:SqlGenAttributes"/>
</xs:complexType>
</xs:element>
<xs:element name="tree-node">
<xs:complexType>
<xs:attributeGroup ref="v:SqlGenAttributes"/>
</xs:complexType>
</xs:element>
<xs:element name="hidden">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="v:AnyVspxPageContent"/>
</xs:choice>
<xs:attributeGroup ref="v:HtmlGenAttributes"/>
</xs:complexType>
</xs:element>
<xs:element name="style">
<xs:complexType mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="v:AnyVspxPageContent"/>
</xs:choice>
<xs:attribute name="name" type="xs:NMTOKEN" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="placeholder">
<xs:complexType/>
</xs:element>
<xs:element name="calendar">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="v:EventTarget"/>
<xs:group ref="v:AnyVspxPageContent"/>
<xs:element ref="v:param"/>
</xs:choice>
<xs:attributeGroup ref="v:SqlGenAttributes"/>
<xs:attribute name="inital-date" type="v:CalculateableValue"/>
<xs:anyAttribute namespace="##any"/>
</xs:complexType>
</xs:element>
<xs:element name="expression">
<xs:complexType mixed="true">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:any namespace="##any"/>
</xs:sequence>
<xs:attribute name="language" type="v:SqlName" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="data-source">
<xs:complexType mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="v:EventTarget"/>
<xs:group ref="v:AnyVspxPageContent"/>
<xs:element ref="v:column"/>
<xs:element ref="v:param"/>
<xs:element ref="v:expression"/>
</xs:choice>
<xs:attributeGroup ref="v:SqlGenAttributes"/>
<xs:attribute name="expression-type" type="xs:string" use="required"/>
<xs:attribute name="nrows" type="v:CalculateableValue" use="required"/>
<xs:attribute name="initial-offset" type="v:CalculateableValue" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>