<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="en">

    <xsd:annotation>
	<xsd:documentation>
	    Add a ColumnAssignmentType to the schema definition for SQL data-change
	    statements in XML Query Language in XpressEngine.

	    XpressEngine is an open source framework for creating web sites.
	    http://xpressengine.org/

	    Author: Adrian Constantin, Arnia Software (adrian.constantin@arnia.ro)
	    Date:   08 mar 2012

	    Include graph:

	    +-- xml_create_table.xsd
	    +-- xml_query.xsd
		+-- xml_datachange.xsd
		    +-- xml_colassign.xsd			*****
			+-- xml_insert_generic.xsd
			|   +-- xml_insert.xsd
			|   +-- xml_insert_select.xsd
			|
			+-- xml_select.xsd
			+-- xml_update.xsd
			+-- xml_delete.xsd

	    The ColumnAssignamentType allows a column to be assigned a value, to be
	    used to describe INSERT and UPDATE statements.
	</xsd:documentation>
    </xsd:annotation>

    <!--
	The main schema definition for the SQL data-change statements in XML
	Query language (this in turn includes the generic schema definition
	for the language).
    -->
    <xsd:include schemaLocation="xml_datachange.xsd" />

    <xsd:complexType name="BaseColumnAssignamentType">
	<xsd:annotation>
	    <xsd:documentation>
		Basic type for a column assignament in an
		UPDATE/INSERT.

		Maybe an expression sub-query could be allowed here as the new
		column value.
	    </xsd:documentation>
	</xsd:annotation>

	<xsd:complexContent>
	    <xsd:restriction base="ColumnType">
		<xsd:attribute name="name" type="xsd:string" use="required" />
		<xsd:attribute name="alias" use="prohibited" />
		<xsd:attribute name="click_count" use="prohibited" />
	    </xsd:restriction>
	</xsd:complexContent>
    </xsd:complexType>

    <xsd:complexType name="ColumnAssignamentType">
	<xsd:annotation>
	    <xsd:documentation>
		A column in a column assignament for an SQL UPDATE/INSERT 
		statement.

		"var" attribute is optional, if omitted the column name is
		the variable name.
	    </xsd:documentation>
	</xsd:annotation>

	<xsd:complexContent>
	    <xsd:extension base="BaseColumnAssignamentType">
		<xsd:attribute name="var" type="xsd:string" use="optional"  />
		<xsd:attributeGroup ref="argumentAttrs" />
	    </xsd:extension>
	</xsd:complexContent>
    </xsd:complexType>

    <xsd:complexType name="ColumnsAssignamentType">
	<xsd:annotation>
	    <xsd:documentation>
		The list of column assignaments in an INSERT/UPDATE statement.
	    </xsd:documentation>
	</xsd:annotation>

	<xsd:sequence>
	    <xsd:element name="column" type="ColumnAssignamentType" minOccurs="1" maxOccurs="unbounded" />
	</xsd:sequence>
    </xsd:complexType>
</xsd:schema>
