Click here to Skip to main content
Click here to Skip to main content
Add your own
alternative version

Simple "Contact Book" web application using VisualJS.NET, Fluent NHibernate and ASP.NET Web Forms on MS SQL Server 2012

, 5 Oct 2012
Simple "Contact Book" web application using VisualJS.NET, Fluent NHibernate and ASP.NET Web Forms on MS SQL Server 2012

Editorial Note

This article appears in the Third Party Products and Tools section. Articles in this section are for the members only and must not be used to promote or advertise products in any way, shape or form. Please report any spam or advertising.

visualjsnetsample-noexe.zip
VisualJSnetSample
packages
FluentNHibernate.1.3.0.733
FluentNHibernate.1.3.0.733.nupkg
lib
Iesi.Collections.3.2.0.4000
Iesi.Collections.3.2.0.4000.nupkg
lib
Net35
NHibernate.3.3.1.4000
ConfigurationTemplates
lib
Net35
NHibernate.3.3.1.4000.nupkg
VisualJSnetSample
Entities
Global.asax
Mappings
Properties
Scripts
Styles
VisualJSApp
Helper
License
VisualJS.NET.license
Style
VisualJSnetSample.csproj.user
visualjsnetsample.zip
FluentNHibernate.1.3.0.733.nupkg
FluentNHibernate.dll
Iesi.Collections.3.2.0.4000.nupkg
Iesi.Collections.dll
NHibernate.dll
NHibernate.3.3.1.4000.nupkg
Global.asax
VisualJS.NET.license
VisualJSnetSample.csproj.user
<xs:schema targetNamespace="urn:nhibernate-mapping-2.2" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="urn:nhibernate-mapping-2.2" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:element name="any">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="meta" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="meta-value" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="column" maxOccurs="unbounded" />
			</xs:sequence>
			<xs:attribute name="column" type="xs:string" />
			<xs:attribute name="id-type" use="required" type="xs:string" />
			<xs:attribute name="meta-type" type="xs:string" />
			<xs:attribute name="name" use="required" type="xs:string" />
			<xs:attribute name="access" type="xs:string" />
			<xs:attribute name="insert" default="true" type="xs:boolean" />
			<xs:attribute name="update" default="true" type="xs:boolean" />
			<xs:attribute name="cascade" type="xs:string" />
			<xs:attribute name="index" type="xs:string" />
			<xs:attribute name="optimistic-lock" default="true" type="xs:boolean" />
			<xs:attribute name="lazy" default="false" type="xs:boolean" />
			<xs:attribute name="node" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="array">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="meta" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="subselect" minOccurs="0" />
				<xs:element ref="cache" minOccurs="0" />
				<xs:element ref="synchronize" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="comment" minOccurs="0" />
				<xs:element ref="key" />
				<xs:choice>
					<xs:element ref="index" />
					<xs:element ref="list-index" />
				</xs:choice>
				<xs:choice>
					<xs:element ref="element" />
					<xs:element ref="one-to-many" />
					<xs:element ref="many-to-many" />
					<xs:element ref="composite-element" />
					<xs:element ref="many-to-any" />
				</xs:choice>
				<xs:element ref="loader" minOccurs="0" />
				<xs:element ref="sql-insert" minOccurs="0" />
				<xs:element ref="sql-update" minOccurs="0" />
				<xs:element ref="sql-delete" minOccurs="0" />
				<xs:element ref="sql-delete-all" minOccurs="0" />
			</xs:sequence>
			<xs:attribute name="name" use="required" type="xs:string" />
			<xs:attribute name="access" type="xs:string" />
			<xs:attribute name="table" type="xs:string" />
			<xs:attribute name="schema" type="xs:string" />
			<xs:attribute name="catalog" type="xs:string" />
			<xs:attribute name="subselect" type="xs:string" />
			<xs:attribute name="inverse" default="false" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="mutable" default="true" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="element-class" type="xs:string" />
			<xs:attribute name="cascade" type="xs:string" />
			<xs:attribute name="where" type="xs:string" />
			<xs:attribute name="batch-size" type="xs:int" />
			<xs:attribute name="outer-join" type="outerJoinStrategy">
			</xs:attribute>
			<xs:attribute name="fetch" type="collectionFetchMode">
			</xs:attribute>
			<xs:attribute name="persister" type="xs:string" />
			<xs:attribute name="collection-type" type="xs:string" />
			<xs:attribute name="check" type="xs:string" />
			<xs:attribute name="optimistic-lock" default="true" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="node" type="xs:string" />
			<xs:attribute name="embed-xml" default="true" type="xs:boolean">
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="bag">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="meta" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="subselect" minOccurs="0" />
				<xs:element ref="cache" minOccurs="0" />
				<xs:element ref="synchronize" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="comment" minOccurs="0" />
				<xs:element ref="key" />
				<xs:choice>
					<xs:element ref="element" />
					<xs:element ref="one-to-many" />
					<xs:element ref="many-to-many" />
					<xs:element ref="composite-element" />
					<xs:element ref="many-to-any" />
				</xs:choice>
				<xs:element ref="loader" minOccurs="0" />
				<xs:element ref="sql-insert" minOccurs="0" />
				<xs:element ref="sql-update" minOccurs="0" />
				<xs:element ref="sql-delete" minOccurs="0" />
				<xs:element ref="sql-delete-all" minOccurs="0" />
				<xs:element ref="filter" minOccurs="0" maxOccurs="unbounded" />
			</xs:sequence>
			<xs:attributeGroup ref="baseCollectionAttributes" />
		</xs:complexType>
	</xs:element>
	<xs:element name="cache">
		<xs:complexType>
			<xs:attribute name="usage" use="required">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:enumeration value="read-only" />
						<xs:enumeration value="read-write" />
						<xs:enumeration value="nonstrict-read-write" />
						<xs:enumeration value="transactional" />
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="region" type="xs:string" use="optional">
			</xs:attribute>
			<xs:attribute name="include" default="all">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:enumeration value="all" />
						<xs:enumeration value="non-lazy" />
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="class">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="meta" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="subselect" minOccurs="0" />
				<xs:element ref="cache" minOccurs="0" />
				<xs:element ref="synchronize" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="comment" minOccurs="0" />
				<xs:element ref="tuplizer" minOccurs="0" maxOccurs="unbounded" />
				<xs:choice>
					<xs:element ref="id" />
					<xs:element ref="composite-id" />
				</xs:choice>
				<xs:element ref="discriminator" minOccurs="0" />
				<xs:element ref="natural-id" minOccurs="0" />
				<xs:choice minOccurs="0">
					<xs:element ref="version" />
					<xs:element ref="timestamp" />
				</xs:choice>
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element ref="property" />
					<xs:element ref="many-to-one" />
					<xs:element ref="one-to-one" />
					<xs:element ref="component" />
					<xs:element ref="dynamic-component" />
					<xs:element ref="properties" />
					<xs:element ref="any" />
					<xs:element ref="map" />
					<xs:element ref="set" />
					<xs:element ref="list" />
					<xs:element ref="bag" />
					<xs:element ref="idbag" />
					<xs:element ref="array" />
					<xs:element ref="primitive-array" />
				</xs:choice>
				<xs:choice>
					<xs:sequence>
						<xs:element ref="join" minOccurs="0" maxOccurs="unbounded" />
						<xs:element ref="subclass" minOccurs="0" maxOccurs="unbounded" />
					</xs:sequence>
					<xs:element ref="joined-subclass" minOccurs="0" maxOccurs="unbounded" />
					<xs:element ref="union-subclass" minOccurs="0" maxOccurs="unbounded" />
				</xs:choice>
				<xs:element ref="loader" minOccurs="0" />
				<xs:element ref="sql-insert" minOccurs="0" />
				<xs:element ref="sql-update" minOccurs="0" />
				<xs:element ref="sql-delete" minOccurs="0" />
				<xs:element ref="filter" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="resultset" minOccurs="0" maxOccurs="unbounded" />
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element ref="query" />
					<xs:element ref="sql-query" />
				</xs:choice>
			</xs:sequence>
			<xs:attribute name="entity-name" type="xs:string">
			</xs:attribute>
			<xs:attribute name="name" type="xs:string" />
			<xs:attribute name="proxy" type="xs:string" />
			<xs:attribute name="lazy" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="schema-action" type="xs:string" />
			<xs:attribute name="table" type="xs:string" />
			<xs:attribute name="schema" type="xs:string" />
			<xs:attribute name="catalog" type="xs:string" />
			<xs:attribute name="subselect" type="xs:string" />
			<xs:attribute name="discriminator-value" type="xs:string" />
			<xs:attribute name="mutable" default="true" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="abstract" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="polymorphism" default="implicit" type="polymorphismType">
			</xs:attribute>
			<xs:attribute name="where" type="xs:string" />
			<xs:attribute name="persister" type="xs:string" />
			<xs:attribute name="dynamic-update" default="false" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="dynamic-insert" default="false" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="batch-size" type="xs:int" />
			<xs:attribute name="select-before-update" default="false" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="optimistic-lock" default="version" type="optimisticLockMode">
			</xs:attribute>
			<xs:attribute name="check" type="xs:string" />
			<xs:attribute name="rowid" type="xs:string" />
			<xs:attribute name="node" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="collection-id">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="meta" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="column" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="generator" />
			</xs:sequence>
			<xs:attribute name="column" use="required" type="xs:string" />
			<xs:attribute name="type" use="required" type="xs:string" />
			<xs:attribute name="length" type="xs:positiveInteger" />
		</xs:complexType>
	</xs:element>
	<xs:element name="column">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="comment" minOccurs="0" />
			</xs:sequence>
			<xs:attribute name="name" use="required" type="xs:string">
			</xs:attribute>
			<xs:attribute name="length" type="xs:positiveInteger" />
			<xs:attribute name="precision" type="xs:positiveInteger" />
			<xs:attribute name="scale" type="xs:nonNegativeInteger" />
			<xs:attribute name="not-null" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="unique" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="unique-key" type="xs:string" />
			<xs:attribute name="sql-type" type="xs:string" />
			<xs:attribute name="index" type="xs:string" />
			<xs:attribute name="check" type="xs:string" />
			<xs:attribute name="default" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="comment">
		<xs:complexType mixed="true">
		</xs:complexType>
	</xs:element>
	<xs:element name="component">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="meta" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="tuplizer" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="parent" minOccurs="0" />
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element ref="property" />
					<xs:element ref="many-to-one" />
					<xs:element ref="one-to-one" />
					<xs:element ref="component" />
					<xs:element ref="dynamic-component" />
					<xs:element ref="any" />
					<xs:element ref="map" />
					<xs:element ref="set" />
					<xs:element ref="list" />
					<xs:element ref="bag" />
					<xs:element ref="idbag" />
					<xs:element ref="array" />
					<xs:element ref="primitive-array" />
				</xs:choice>
			</xs:sequence>
			<xs:attribute name="class" type="xs:string" />
			<xs:attribute name="name" use="required" type="xs:string" />
			<xs:attribute name="access" type="xs:string" />
			<xs:attribute name="unique" default="false" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="update" default="true" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="insert" default="true" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="lazy" default="false" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="optimistic-lock" default="true" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="node" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="composite-element">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="meta" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="parent" minOccurs="0" />
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element ref="property" />
					<xs:element ref="many-to-one" />
					<xs:element ref="any" />
					<xs:element ref="nested-composite-element" />
				</xs:choice>
			</xs:sequence>
			<xs:attribute name="class" use="required" type="xs:string" />
			<xs:attribute name="node" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="composite-id">
		<xs:annotation>
			<xs:documentation>A composite key may be modelled by a .NET class with a property for each key column. The class must be Serializable and override equals() and hashCode()</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="meta" minOccurs="0" maxOccurs="unbounded" />
				<xs:choice maxOccurs="unbounded">
					<xs:element ref="key-property" />
					<xs:element ref="key-many-to-one" />
				</xs:choice>
			</xs:sequence>
			<xs:attribute name="class" type="xs:string" />
			<xs:attribute name="mapped" default="false" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="name" type="xs:string" />
			<xs:attribute name="node" type="xs:string" />
			<xs:attribute name="access" type="xs:string" />
			<xs:attribute name="unsaved-value" default="undefined" type="unsavedValueType">
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="composite-index">
		<xs:complexType>
			<xs:sequence>
				<xs:choice maxOccurs="unbounded">
					<xs:element ref="key-property" />
					<xs:element ref="key-many-to-one" />
				</xs:choice>
			</xs:sequence>
			<xs:attribute name="class" use="required" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="composite-map-key">
		<xs:complexType>
			<xs:sequence>
				<xs:choice maxOccurs="unbounded">
					<xs:element ref="key-property" />
					<xs:element ref="key-many-to-one" />
				</xs:choice>
			</xs:sequence>
			<xs:attribute name="class" use="required" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="create">
		<xs:complexType mixed="true">
		</xs:complexType>
	</xs:element>
	<xs:element name="database-object">
		<xs:complexType>
			<xs:sequence>
				<xs:choice>
					<xs:element ref="definition" />
					<xs:sequence>
						<xs:element ref="create" />
						<xs:element ref="drop" />
					</xs:sequence>
				</xs:choice>
				<xs:element ref="dialect-scope" minOccurs="0" maxOccurs="unbounded" />
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="definition">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="param" minOccurs="0" maxOccurs="unbounded" />
			</xs:sequence>
			<xs:attribute name="class" use="required" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="dialect-scope">
		<xs:complexType mixed="true">
			<xs:attribute name="name" use="required" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="discriminator">
		<xs:complexType>
			<xs:sequence>
				<xs:choice minOccurs="0">
					<xs:element ref="column" />
					<xs:element ref="formula" />
				</xs:choice>
			</xs:sequence>
			<xs:attribute name="column" type="xs:string" />
			<xs:attribute name="formula" type="xs:string" />
			<xs:attribute name="type" default="string" type="xs:string" />
			<xs:attribute name="not-null" default="true" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="length" type="xs:positiveInteger" />
			<xs:attribute name="force" default="false" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="insert" default="true" type="xs:boolean">
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="drop">
		<xs:complexType mixed="true">
		</xs:complexType>
	</xs:element>
	<xs:element name="dynamic-component">
		<xs:complexType>
			<xs:sequence>
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element ref="property" />
					<xs:element ref="many-to-one" />
					<xs:element ref="one-to-one" />
					<xs:element ref="component" />
					<xs:element ref="dynamic-component" />
					<xs:element ref="any" />
					<xs:element ref="map" />
					<xs:element ref="set" />
					<xs:element ref="list" />
					<xs:element ref="bag" />
					<xs:element ref="array" />
					<xs:element ref="primitive-array" />
				</xs:choice>
			</xs:sequence>
			<xs:attribute name="name" use="required" type="xs:string" />
			<xs:attribute name="access" type="xs:string" />
			<xs:attribute name="unique" default="false" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="update" default="true" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="insert" default="true" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="optimistic-lock" default="true" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="node" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="element">
		<xs:complexType>
			<xs:sequence>
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element ref="column" />
					<xs:element ref="formula" />
				</xs:choice>
				<xs:element ref="type" minOccurs="0" />
			</xs:sequence>
			<xs:attribute name="column" type="xs:string" />
			<xs:attribute name="node" type="xs:string" />
			<xs:attribute name="formula" type="xs:string" />
			<xs:attribute name="type" type="xs:string" />
			<xs:attribute name="length" type="xs:positiveInteger" />
			<xs:attribute name="precision" type="xs:positiveInteger" />
			<xs:attribute name="scale" type="xs:nonNegativeInteger" />
			<xs:attribute name="not-null" default="false" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="unique" default="false" type="xs:boolean">
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="filter">
		<xs:complexType mixed="true">
			<xs:attribute name="name" use="required" type="xs:string" />
			<xs:attribute name="condition" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="filter-def">
		<xs:complexType mixed="true">
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="filter-param" />
			</xs:choice>
			<xs:attribute name="name" use="required" type="xs:string" />
			<xs:attribute name="condition" type="xs:string" />
			<xs:attribute name="use-many-to-one" default="true" type="xs:boolean"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="filter-param">
		<xs:complexType>
			<xs:attribute name="name" use="required" type="xs:string" />
			<xs:attribute name="type" use="required" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="formula">
		<xs:complexType mixed="true">
		</xs:complexType>
	</xs:element>
	<xs:element name="generator">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="param" minOccurs="0" maxOccurs="unbounded" />
			</xs:sequence>
			<xs:attribute name="class" use="required" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="hibernate-mapping">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="meta" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="typedef" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="import" minOccurs="0" maxOccurs="unbounded" />
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element ref="class" />
					<xs:element ref="subclass" />
					<xs:element ref="joined-subclass" />
					<xs:element ref="union-subclass" />
				</xs:choice>
				<xs:element ref="resultset" minOccurs="0" maxOccurs="unbounded" />
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element ref="query" />
					<xs:element ref="sql-query" />
				</xs:choice>
				<xs:element ref="filter-def" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="database-object" minOccurs="0" maxOccurs="unbounded" />
			</xs:sequence>
			<xs:attribute name="schema" type="xs:string" />
			<xs:attribute name="catalog" type="xs:string" />
			<xs:attribute name="default-cascade" default="none" type="xs:string" />
			<xs:attribute name="default-access" default="property" type="xs:string" />
			<xs:attribute name="default-lazy" default="true" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="auto-import" default="true" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="namespace" type="xs:string" use="optional">
				<xs:annotation>
					<xs:documentation>Namespace used to find not-Fully Qualified Type Names</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="assembly" type="xs:string" use="optional">
				<xs:annotation>
					<xs:documentation>Assembly used to find not-Fully Qualified Type Names</xs:documentation>
				</xs:annotation>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="id">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="meta" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="column" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="type" minOccurs="0" />
				<xs:element ref="generator" minOccurs="0" />
			</xs:sequence>
			<xs:attribute name="name" type="xs:string" />
			<xs:attribute name="node" type="xs:string" />
			<xs:attribute name="access" type="xs:string" />
			<xs:attribute name="column" type="xs:string" />
			<xs:attribute name="type" type="xs:string" />
			<xs:attribute name="length" type="xs:positiveInteger" />
			<xs:attribute name="unsaved-value" type="xs:string" />
			<xs:attribute name="generator" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="idbag">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="meta" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="subselect" minOccurs="0" />
				<xs:element ref="cache" minOccurs="0" />
				<xs:element ref="synchronize" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="comment" minOccurs="0" />
				<xs:element ref="collection-id" />
				<xs:element ref="key" />
				<xs:choice>
					<xs:element ref="element" />
					<xs:element ref="many-to-many" />
					<xs:element ref="composite-element" />
					<xs:element ref="many-to-any" />
				</xs:choice>
				<xs:element ref="loader" minOccurs="0" />
				<xs:element ref="sql-insert" minOccurs="0" />
				<xs:element ref="sql-update" minOccurs="0" />
				<xs:element ref="sql-delete" minOccurs="0" />
				<xs:element ref="sql-delete-all" minOccurs="0" />
				<xs:element ref="filter" minOccurs="0" maxOccurs="unbounded" />
			</xs:sequence>
			<xs:attributeGroup ref="baseCollectionAttributes" />
		</xs:complexType>
	</xs:element>
	<xs:element name="import">
		<xs:complexType>
			<xs:attribute name="class" use="required" type="xs:string" />
			<xs:attribute name="rename" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="index">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="column" minOccurs="0" maxOccurs="unbounded" />
			</xs:sequence>
			<xs:attribute name="column" type="xs:string" />
			<xs:attribute name="type" type="xs:string" />
			<xs:attribute name="length" type="xs:positiveInteger" />
		</xs:complexType>
	</xs:element>
	<xs:element name="index-many-to-any">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="column" maxOccurs="unbounded" />
			</xs:sequence>
			<xs:attribute name="id-type" use="required" type="xs:string" />
			<xs:attribute name="meta-type" type="xs:string" />
			<xs:attribute name="column" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="index-many-to-many">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="column" minOccurs="0" maxOccurs="unbounded" />
			</xs:sequence>
			<xs:attribute name="class" use="required" type="xs:string" />
			<xs:attribute name="entity-name" type="xs:string" />
			<xs:attribute name="column" type="xs:string" />
			<xs:attribute name="foreign-key" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="join">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="subselect" minOccurs="0" />
				<xs:element ref="comment" minOccurs="0" />
				<xs:element ref="key" />
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element ref="property" />
					<xs:element ref="many-to-one" />
					<xs:element ref="component" />
					<xs:element ref="dynamic-component" />
					<xs:element ref="any" />
					<xs:element ref="map" />
					<xs:element ref="set" />
					<xs:element ref="list" />
					<xs:element ref="bag" />
					<xs:element ref="idbag" />
					<xs:element ref="array" />
					<xs:element ref="primitive-array" />
				</xs:choice>
				<xs:element ref="sql-insert" minOccurs="0" />
				<xs:element ref="sql-update" minOccurs="0" />
				<xs:element ref="sql-delete" minOccurs="0" />
			</xs:sequence>
			<xs:attribute name="table" use="required" type="xs:string" />
			<xs:attribute name="schema" type="xs:string" />
			<xs:attribute name="catalog" type="xs:string" />
			<xs:attribute name="subselect" type="xs:string" />
			<xs:attribute name="fetch" default="join">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:enumeration value="join" />
						<xs:enumeration value="select" />
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="inverse" default="false" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="optional" default="false" type="xs:boolean">
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="joined-subclass">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="meta" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="subselect" minOccurs="0" />
				<xs:element ref="synchronize" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="comment" minOccurs="0" />
				<xs:element ref="tuplizer" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="key" />
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element ref="property" />
					<xs:element ref="many-to-one" />
					<xs:element ref="one-to-one" />
					<xs:element ref="component" />
					<xs:element ref="dynamic-component" />
					<xs:element ref="properties" />
					<xs:element ref="any" />
					<xs:element ref="map" />
					<xs:element ref="set" />
					<xs:element ref="list" />
					<xs:element ref="bag" />
					<xs:element ref="idbag" />
					<xs:element ref="array" />
					<xs:element ref="primitive-array" />
				</xs:choice>
				<xs:element ref="joined-subclass" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="loader" minOccurs="0" />
				<xs:element ref="sql-insert" minOccurs="0" />
				<xs:element ref="sql-update" minOccurs="0" />
				<xs:element ref="sql-delete" minOccurs="0" />
				<xs:element ref="resultset" minOccurs="0" maxOccurs="unbounded" />
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element ref="query" />
					<xs:element ref="sql-query" />
				</xs:choice>
			</xs:sequence>
			<xs:attribute name="entity-name" type="xs:string">
			</xs:attribute>
			<xs:attribute name="name" type="xs:string" />
			<xs:attribute name="proxy" type="xs:string" />
			<xs:attribute name="table" type="xs:string" />
			<xs:attribute name="schema-action" type="xs:string" />
			<xs:attribute name="schema" type="xs:string" />
			<xs:attribute name="catalog" type="xs:string" />
			<xs:attribute name="subselect" type="xs:string" />
			<xs:attribute name="dynamic-update" default="false" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="dynamic-insert" default="false" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="select-before-update" default="false" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="extends" type="xs:string" />
			<xs:attribute name="lazy" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="abstract" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="persister" type="xs:string" />
			<xs:attribute name="check" type="xs:string" />
			<xs:attribute name="batch-size" type="xs:positiveInteger" />
			<xs:attribute name="node" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="key">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="column" minOccurs="0" maxOccurs="unbounded" />
			</xs:sequence>
			<xs:attribute name="column" type="xs:string" />
			<xs:attribute name="property-ref" type="xs:string" />
			<xs:attribute name="foreign-key" type="xs:string" />
			<xs:attribute name="on-delete" default="noaction" type="ondelete">
			</xs:attribute>
			<xs:attribute name="not-null" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="update" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="unique" type="xs:boolean">
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="key-many-to-one">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="meta" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="column" minOccurs="0" maxOccurs="unbounded" />
			</xs:sequence>
			<xs:attribute name="name" use="required" type="xs:string" />
			<xs:attribute name="access" type="xs:string" />
			<xs:attribute name="class" type="xs:string" />
			<xs:attribute name="entity-name" type="xs:string" />
			<xs:attribute name="column" type="xs:string" />
			<xs:attribute name="foreign-key" type="xs:string" />
			<xs:attribute name="lazy" type="restrictedLaziness">
			</xs:attribute>
			<xs:attribute name="not-found" default="exception" type="notFoundMode"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="key-property">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="meta" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="column" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="type" minOccurs="0" />
			</xs:sequence>
			<xs:attribute name="name" use="required" type="xs:string" />
			<xs:attribute name="access" type="xs:string" />
			<xs:attribute name="type" type="xs:string" />
			<xs:attribute name="column" type="xs:string" />
			<xs:attribute name="length" type="xs:positiveInteger" />
			<xs:attribute name="node" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="list">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="meta" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="subselect" minOccurs="0" />
				<xs:element ref="cache" minOccurs="0" />
				<xs:element ref="synchronize" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="comment" minOccurs="0" />
				<xs:element ref="key" />
				<xs:choice>
					<xs:element ref="index" />
					<xs:element ref="list-index" />
				</xs:choice>
				<xs:choice>
					<xs:element ref="element" />
					<xs:element ref="one-to-many" />
					<xs:element ref="many-to-many" />
					<xs:element ref="composite-element" />
					<xs:element ref="many-to-any" />
				</xs:choice>
				<xs:element ref="loader" minOccurs="0" />
				<xs:element ref="sql-insert" minOccurs="0" />
				<xs:element ref="sql-update" minOccurs="0" />
				<xs:element ref="sql-delete" minOccurs="0" />
				<xs:element ref="sql-delete-all" minOccurs="0" />
				<xs:element ref="filter" minOccurs="0" maxOccurs="unbounded" />
			</xs:sequence>
			<xs:attributeGroup ref="baseCollectionAttributes" />
		</xs:complexType>
	</xs:element>
	<xs:element name="list-index">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="column" minOccurs="0" />
			</xs:sequence>
			<xs:attribute name="column" type="xs:string" />
			<xs:attribute name="base" type="xs:positiveInteger" use="optional" />
		</xs:complexType>
	</xs:element>
	<xs:element name="load-collection">
		<xs:complexType>
			<xs:sequence minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="return-property" />
			</xs:sequence>
			<xs:attribute name="alias" use="required" type="xs:string" />
			<xs:attribute name="role" use="required" type="xs:string" />
			<xs:attribute name="lock-mode" default="read" type="lockMode">
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="loader">
		<xs:complexType>
			<xs:attribute name="query-ref" use="required" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="many-to-any">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="meta-value" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="column" maxOccurs="unbounded" />
			</xs:sequence>
			<xs:attribute name="column" type="xs:string" />
			<xs:attribute name="id-type" use="required" type="xs:string" />
			<xs:attribute name="meta-type" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="many-to-many">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="meta" minOccurs="0" maxOccurs="unbounded" />
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element ref="column" />
					<xs:element ref="formula" />
				</xs:choice>
				<xs:element ref="filter" minOccurs="0" maxOccurs="unbounded" />
			</xs:sequence>
			<xs:attribute name="class" type="xs:string" />
			<xs:attribute name="node" type="xs:string" />
			<xs:attribute name="embed-xml" default="true" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="entity-name" type="xs:string" />
			<xs:attribute name="column" type="xs:string" />
			<xs:attribute name="formula" type="xs:string" />
			<xs:attribute name="not-found" default="exception" type="notFoundMode">
			</xs:attribute>
			<xs:attribute name="outer-join" type="outerJoinStrategy">
			</xs:attribute>
			<xs:attribute name="fetch" type="fetchMode">
			</xs:attribute>
			<xs:attribute name="lazy" type="restrictedLaziness">
			</xs:attribute>
			<xs:attribute name="foreign-key" type="xs:string" />
			<xs:attribute name="unique" default="false" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="where" type="xs:string" />
			<xs:attribute name="order-by" type="xs:string" />
			<xs:attribute name="property-ref" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="many-to-one">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="meta" minOccurs="0" maxOccurs="unbounded" />
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element ref="column" />
					<xs:element ref="formula" />
				</xs:choice>
			</xs:sequence>
			<xs:attribute name="name" use="required" type="xs:string" />
			<xs:attribute name="access" type="xs:string" />
			<xs:attribute name="class" type="xs:string" />
			<xs:attribute name="entity-name" type="xs:string" />
			<xs:attribute name="column" type="xs:string" />
			<xs:attribute name="not-null" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="unique" default="false" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="unique-key" type="xs:string" />
			<xs:attribute name="index" type="xs:string" />
			<xs:attribute name="cascade" type="xs:string" />
			<xs:attribute name="outer-join" type="outerJoinStrategy">
			</xs:attribute>
			<xs:attribute name="fetch" type="fetchMode">
			</xs:attribute>
			<xs:attribute name="update" default="true" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="insert" default="true" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="optimistic-lock" default="true" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="foreign-key" type="xs:string" />
			<xs:attribute name="property-ref" type="xs:string" />
			<xs:attribute name="formula" type="xs:string" />
			<xs:attribute name="lazy" type="laziness">
			</xs:attribute>
			<xs:attribute name="not-found" default="exception" type="notFoundMode">
			</xs:attribute>
			<xs:attribute name="node" type="xs:string" />
			<xs:attribute name="embed-xml" default="true" type="xs:boolean">
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="map">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="meta" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="subselect" minOccurs="0" />
				<xs:element ref="cache" minOccurs="0" />
				<xs:element ref="synchronize" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="comment" minOccurs="0" />
				<xs:element ref="key" />
				<xs:choice>
					<xs:element ref="map-key" />
					<xs:element ref="composite-map-key" />
					<xs:element ref="map-key-many-to-many" />
					<xs:element ref="index" />
					<xs:element ref="composite-index" />
					<xs:element ref="index-many-to-many" />
					<xs:element ref="index-many-to-any" />
				</xs:choice>
				<xs:choice>
					<xs:element ref="element" />
					<xs:element ref="one-to-many" />
					<xs:element ref="many-to-many" />
					<xs:element ref="composite-element" />
					<xs:element ref="many-to-any" />
				</xs:choice>
				<xs:element ref="loader" minOccurs="0" />
				<xs:element ref="sql-insert" minOccurs="0" />
				<xs:element ref="sql-update" minOccurs="0" />
				<xs:element ref="sql-delete" minOccurs="0" />
				<xs:element ref="sql-delete-all" minOccurs="0" />
				<xs:element ref="filter" minOccurs="0" maxOccurs="unbounded" />
			</xs:sequence>
			<xs:attributeGroup ref="baseCollectionAttributes" />
			<xs:attribute name="sort" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="map-key">
		<xs:complexType>
			<xs:sequence>
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element ref="column" />
					<xs:element ref="formula" />
				</xs:choice>
			</xs:sequence>
			<xs:attribute name="column" type="xs:string" />
			<xs:attribute name="formula" type="xs:string" />
			<xs:attribute name="type" use="required" type="xs:string" />
			<xs:attribute name="length" type="xs:positiveInteger" />
			<xs:attribute name="node" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="map-key-many-to-many">
		<xs:complexType>
			<xs:sequence>
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element ref="column" />
					<xs:element ref="formula" />
				</xs:choice>
			</xs:sequence>
			<xs:attribute name="class" type="xs:string" />
			<xs:attribute name="entity-name" type="xs:string" />
			<xs:attribute name="column" type="xs:string" />
			<xs:attribute name="formula" type="xs:string" />
			<xs:attribute name="foreign-key" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="meta">
		<xs:complexType mixed="true">
			<xs:attribute name="attribute" use="required" type="xs:string" />
			<xs:attribute name="inherit" default="true" type="xs:boolean" />
		</xs:complexType>
	</xs:element>
	<xs:element name="meta-value">
		<xs:complexType>
			<xs:attribute name="value" use="required" type="xs:string" />
			<xs:attribute name="class" use="required" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="natural-id">
		<xs:complexType>
			<xs:sequence>
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element ref="property" />
					<xs:element ref="many-to-one" />
					<xs:element ref="component" />
					<xs:element ref="dynamic-component" />
					<xs:element ref="any" />
				</xs:choice>
			</xs:sequence>
			<xs:attribute name="mutable" default="false" type="xs:boolean">
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="nested-composite-element">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="parent" minOccurs="0" />
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element ref="property" />
					<xs:element ref="many-to-one" />
					<xs:element ref="any" />
					<xs:element ref="nested-composite-element" />
				</xs:choice>
			</xs:sequence>
			<xs:attribute name="class" use="required" type="xs:string" />
			<xs:attribute name="name" use="required" type="xs:string" />
			<xs:attribute name="access" type="xs:string" />
			<xs:attribute name="node" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="one-to-many">
		<xs:complexType>
			<xs:attribute name="class" type="xs:string" />
			<xs:attribute name="not-found" default="exception" type="notFoundMode">
			</xs:attribute>
			<xs:attribute name="node" type="xs:string" />
			<xs:attribute name="embed-xml" default="true" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="entity-name" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="one-to-one">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="meta" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="formula" minOccurs="0" maxOccurs="unbounded" />
			</xs:sequence>
			<xs:attribute name="name" use="required" type="xs:string" />
			<xs:attribute name="formula" type="xs:string" />
			<xs:attribute name="access" type="xs:string" />
			<xs:attribute name="class" type="xs:string" />
			<xs:attribute name="entity-name" type="xs:string" />
			<xs:attribute name="cascade" type="xs:string" />
			<xs:attribute name="outer-join" type="outerJoinStrategy">
			</xs:attribute>
			<xs:attribute name="fetch" type="fetchMode">
			</xs:attribute>
			<xs:attribute name="constrained" default="false" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="foreign-key" type="xs:string" />
			<xs:attribute name="property-ref" type="xs:string" />
			<xs:attribute name="lazy" type="laziness">
			</xs:attribute>
			<xs:attribute name="node" type="xs:string" />
			<xs:attribute name="embed-xml" default="true" type="xs:boolean">
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="param">
		<xs:complexType mixed="true">
			<xs:attribute name="name" use="required" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="parent">
		<xs:complexType>
			<xs:attribute name="name" use="required" type="xs:string" />
			<xs:attribute name="access" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="primitive-array">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="meta" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="subselect" minOccurs="0" />
				<xs:element ref="cache" minOccurs="0" />
				<xs:element ref="synchronize" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="comment" minOccurs="0" />
				<xs:element ref="key" />
				<xs:choice>
					<xs:element ref="index" />
					<xs:element ref="list-index" />
				</xs:choice>
				<xs:element ref="element" />
				<xs:element ref="loader" minOccurs="0" />
				<xs:element ref="sql-insert" minOccurs="0" />
				<xs:element ref="sql-update" minOccurs="0" />
				<xs:element ref="sql-delete" minOccurs="0" />
				<xs:element ref="sql-delete-all" minOccurs="0" />
			</xs:sequence>
			<xs:attribute name="name" use="required" type="xs:string">
			</xs:attribute>
			<xs:attribute name="access" type="xs:string" />
			<xs:attribute name="table" type="xs:string" />
			<xs:attribute name="schema" type="xs:string" />
			<xs:attribute name="catalog" type="xs:string" />
			<xs:attribute name="subselect" type="xs:string" />
			<xs:attribute name="mutable" default="true" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="where" type="xs:string" />
			<xs:attribute name="batch-size" type="xs:positiveInteger" />
			<xs:attribute name="outer-join">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:enumeration value="true" />
						<xs:enumeration value="false" />
						<xs:enumeration value="auto" />
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="fetch">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:enumeration value="join" />
						<xs:enumeration value="select" />
						<xs:enumeration value="subselect" />
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="persister" type="xs:string" />
			<xs:attribute name="collection-type" type="xs:string" />
			<xs:attribute name="check" type="xs:string" />
			<xs:attribute name="optimistic-lock" default="true" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="node" type="xs:string" />
			<xs:attribute name="embed-xml" default="true" type="xs:boolean">
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="properties">
		<xs:complexType>
			<xs:sequence>
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element ref="property" />
					<xs:element ref="many-to-one" />
					<xs:element ref="component" />
					<xs:element ref="dynamic-component" />
				</xs:choice>
			</xs:sequence>
			<xs:attribute name="name" use="required" type="xs:string" />
			<xs:attribute name="unique" default="false" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="insert" default="true" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="update" default="true" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="optimistic-lock" default="true" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="node" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="property">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="meta" minOccurs="0" maxOccurs="unbounded" />
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element ref="column" />
					<xs:element ref="formula" />
				</xs:choice>
				<xs:element ref="type" minOccurs="0" />
			</xs:sequence>
			<xs:attribute name="name" use="required" type="xs:string" />
			<xs:attribute name="node" type="xs:string" />
			<xs:attribute name="access" type="xs:string" />
			<xs:attribute name="type" type="xs:string" />
			<xs:attribute name="column" type="xs:string" />
			<xs:attribute name="length" type="xs:positiveInteger" />
			<xs:attribute name="precision" type="xs:positiveInteger" />
			<xs:attribute name="scale" type="xs:nonNegativeInteger" />
			<xs:attribute name="not-null" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="unique" default="false" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="unique-key" type="xs:string" />
			<xs:attribute name="index" type="xs:string" />
			<xs:attribute name="update" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="insert" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="optimistic-lock" default="true" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="formula" type="xs:string" />
			<xs:attribute name="lazy" default="false" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="generated" default="never" type="propertyGeneration">
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="query">
		<xs:complexType mixed="true">
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="query-param" />
			</xs:choice>
			<xs:attribute name="name" use="required" type="xs:string" />
			<xs:attribute name="flush-mode" type="flushMode">
			</xs:attribute>
			<xs:attribute name="cacheable" default="false" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="cache-region" type="xs:string" />
			<xs:attribute name="fetch-size" type="xs:int" />
			<xs:attribute name="timeout" type="xs:positiveInteger" />
			<xs:attribute name="cache-mode" type="cacheMode">
			</xs:attribute>
			<xs:attribute name="read-only" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="comment" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="query-param">
		<xs:complexType>
			<xs:attribute name="name" use="required" type="xs:string" />
			<xs:attribute name="type" use="required" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="resultset">
		<xs:complexType>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="return-scalar" />
				<xs:element ref="return" />
				<xs:element ref="return-join" />
				<xs:element ref="load-collection" />
			</xs:choice>
			<xs:attribute name="name" use="required" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="return">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="return-discriminator" minOccurs="0" maxOccurs="1" />
				<xs:element ref="return-property" minOccurs="0" maxOccurs="unbounded" />
			</xs:sequence>
			<xs:attribute name="alias" type="xs:string" />
			<xs:attribute name="entity-name" type="xs:string" />
			<xs:attribute name="class" type="xs:string" />
			<xs:attribute name="lock-mode" default="read" type="lockMode">
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="return-column">
		<xs:complexType>
			<xs:attribute name="name" use="required" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="return-discriminator">
		<xs:complexType>
			<xs:attribute name="column" use="required" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="return-join">
		<xs:complexType>
			<xs:sequence minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="return-property" />
			</xs:sequence>
			<xs:attribute name="alias" use="required" type="xs:string" />
			<xs:attribute name="property" use="required" type="xs:string" />
			<xs:attribute name="lock-mode" default="read" type="lockMode">
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="return-property">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="return-column" minOccurs="0" maxOccurs="unbounded" />
			</xs:sequence>
			<xs:attribute name="name" use="required" type="xs:string" />
			<xs:attribute name="column" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="return-scalar">
		<xs:complexType>
			<xs:attribute name="column" use="required" type="xs:string" />
			<xs:attribute name="type" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="set">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="meta" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="subselect" minOccurs="0" />
				<xs:element ref="cache" minOccurs="0" />
				<xs:element ref="synchronize" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="comment" minOccurs="0" />
				<xs:element ref="key" />
				<xs:choice>
					<xs:element ref="element" />
					<xs:element ref="one-to-many" />
					<xs:element ref="many-to-many" />
					<xs:element ref="composite-element" />
					<xs:element ref="many-to-any" />
				</xs:choice>
				<xs:element ref="loader" minOccurs="0" />
				<xs:element ref="sql-insert" minOccurs="0" />
				<xs:element ref="sql-update" minOccurs="0" />
				<xs:element ref="sql-delete" minOccurs="0" />
				<xs:element ref="sql-delete-all" minOccurs="0" />
				<xs:element ref="filter" minOccurs="0" maxOccurs="unbounded" />
			</xs:sequence>
			<xs:attributeGroup ref="baseCollectionAttributes" />
			<xs:attribute name="sort" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="sql-delete" type="customSQL">
	</xs:element>
	<xs:element name="sql-delete-all" type="customSQL">
	</xs:element>
	<xs:element name="sql-insert" type="customSQL">
	</xs:element>
	<xs:element name="sql-query">
		<xs:complexType mixed="true">
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="return-scalar" />
				<xs:element ref="return" />
				<xs:element ref="return-join" />
				<xs:element ref="load-collection" />
				<xs:element ref="synchronize" />
				<xs:element ref="query-param" />
			</xs:choice>
			<xs:attribute name="name" use="required" type="xs:string" />
			<xs:attribute name="resultset-ref" type="xs:string" />
			<xs:attribute name="flush-mode" type="flushMode">
			</xs:attribute>
			<xs:attribute name="cacheable" default="false" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="cache-region" type="xs:string" />
			<xs:attribute name="fetch-size" type="xs:int" />
			<xs:attribute name="timeout" type="xs:positiveInteger" />
			<xs:attribute name="cache-mode" type="cacheMode">
			</xs:attribute>
			<xs:attribute name="read-only" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="comment" type="xs:string" />
			<xs:attribute name="callable" default="false" type="xs:boolean">
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="sql-update" type="customSQL">
	</xs:element>
	<xs:element name="subclass">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="meta" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="tuplizer" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="synchronize" minOccurs="0" maxOccurs="unbounded" />
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element ref="property" />
					<xs:element ref="many-to-one" />
					<xs:element ref="one-to-one" />
					<xs:element ref="component" />
					<xs:element ref="dynamic-component" />
					<xs:element ref="properties" />
					<xs:element ref="any" />
					<xs:element ref="map" />
					<xs:element ref="set" />
					<xs:element ref="list" />
					<xs:element ref="bag" />
					<xs:element ref="idbag" />
					<xs:element ref="array" />
					<xs:element ref="primitive-array" />
				</xs:choice>
				<xs:element ref="join" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="subclass" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="loader" minOccurs="0" />
				<xs:element ref="sql-insert" minOccurs="0" />
				<xs:element ref="sql-update" minOccurs="0" />
				<xs:element ref="sql-delete" minOccurs="0" />
				<xs:element ref="resultset" minOccurs="0" maxOccurs="unbounded" />
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element ref="query" />
					<xs:element ref="sql-query" />
				</xs:choice>
			</xs:sequence>
			<xs:attribute name="entity-name" type="xs:string" />
			<xs:attribute name="name" type="xs:string" />
			<xs:attribute name="proxy" type="xs:string" />
			<xs:attribute name="discriminator-value" type="xs:string" />
			<xs:attribute name="dynamic-update" default="false" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="dynamic-insert" default="false" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="select-before-update" default="false" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="extends" type="xs:string" />
			<xs:attribute name="lazy" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="abstract" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="persister" type="xs:string" />
			<xs:attribute name="batch-size" type="xs:positiveInteger" />
			<xs:attribute name="node" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="subselect">
		<xs:complexType mixed="true">
		</xs:complexType>
	</xs:element>
	<xs:element name="synchronize">
		<xs:complexType>
			<xs:attribute name="table" use="required" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="timestamp">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="meta" minOccurs="0" maxOccurs="unbounded" />
			</xs:sequence>
			<xs:attribute name="name" use="required" type="xs:string" />
			<xs:attribute name="node" type="xs:string" />
			<xs:attribute name="column" type="xs:string" />
			<xs:attribute name="access" type="xs:string" />
			<xs:attribute name="unsaved-value">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:enumeration value="null" />
						<xs:enumeration value="undefined" />
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="source" default="vm">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:enumeration value="vm" />
						<xs:enumeration value="db" />
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="generated" default="never" type="versionGeneration">
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:element name="tuplizer">
		<xs:complexType>
			<xs:attribute name="entity-mode">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:enumeration value="poco" />
						<xs:enumeration value="xml" />
						<xs:enumeration value="dynamic-map" />
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
			<xs:attribute name="class" use="required" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="type">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="param" minOccurs="0" maxOccurs="unbounded" />
			</xs:sequence>
			<xs:attribute name="name" use="required" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="typedef">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="param" minOccurs="0" maxOccurs="unbounded" />
			</xs:sequence>
			<xs:attribute name="class" use="required" type="xs:string" />
			<xs:attribute name="name" use="required" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="union-subclass">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="meta" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="subselect" minOccurs="0" />
				<xs:element ref="synchronize" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="comment" minOccurs="0" />
				<xs:element ref="tuplizer" minOccurs="0" maxOccurs="unbounded" />
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element ref="property" />
					<xs:element ref="many-to-one" />
					<xs:element ref="one-to-one" />
					<xs:element ref="component" />
					<xs:element ref="dynamic-component" />
					<xs:element ref="properties" />
					<xs:element ref="any" />
					<xs:element ref="map" />
					<xs:element ref="set" />
					<xs:element ref="list" />
					<xs:element ref="bag" />
					<xs:element ref="idbag" />
					<xs:element ref="array" />
					<xs:element ref="primitive-array" />
				</xs:choice>
				<xs:element ref="union-subclass" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="loader" minOccurs="0" />
				<xs:element ref="sql-insert" minOccurs="0" />
				<xs:element ref="sql-update" minOccurs="0" />
				<xs:element ref="sql-delete" minOccurs="0" />
				<xs:element ref="resultset" minOccurs="0" maxOccurs="unbounded" />
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element ref="query" />
					<xs:element ref="sql-query" />
				</xs:choice>
			</xs:sequence>
			<xs:attribute name="entity-name" type="xs:string" />
			<xs:attribute name="name" type="xs:string" />
			<xs:attribute name="proxy" type="xs:string" />
			<xs:attribute name="table" type="xs:string" />
			<xs:attribute name="schema" type="xs:string" />
			<xs:attribute name="catalog" type="xs:string" />
			<xs:attribute name="subselect" type="xs:string" />
			<xs:attribute name="dynamic-update" default="false" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="dynamic-insert" default="false" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="select-before-update" default="false" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="extends" type="xs:string" />
			<xs:attribute name="lazy" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="abstract" type="xs:boolean">
			</xs:attribute>
			<xs:attribute name="persister" type="xs:string" />
			<xs:attribute name="check" type="xs:string" />
			<xs:attribute name="batch-size" type="xs:positiveInteger" />
			<xs:attribute name="node" type="xs:string" />
		</xs:complexType>
	</xs:element>
	<xs:element name="version">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="meta" minOccurs="0" maxOccurs="unbounded" />
				<xs:element ref="column" minOccurs="0" maxOccurs="unbounded" />
			</xs:sequence>
			<xs:attribute name="name" use="required" type="xs:string" />
			<xs:attribute name="node" type="xs:string" />
			<xs:attribute name="access" type="xs:string" />
			<xs:attribute name="column" type="xs:string" />
			<xs:attribute name="type" default="Int32" type="xs:string" />
			<xs:attribute name="unsaved-value" type="xs:string">
				<xs:annotation>
					<xs:documentation>undefined|any|none|null|0|-1|... </xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute name="generated" default="never" type="versionGeneration">
			</xs:attribute>
			<xs:attribute name="insert" type="xs:boolean">
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="outerJoinStrategy">
		<xs:restriction base="xs:string">
			<xs:enumeration value="auto" />
			<xs:enumeration value="true" />
			<xs:enumeration value="false" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="collectionFetchMode">
		<xs:restriction base="xs:string">
			<xs:enumeration value="select" />
			<xs:enumeration value="join" />
			<xs:enumeration value="subselect" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="collectionLazy">
		<xs:restriction base="xs:string">
			<xs:enumeration value="true" />
			<xs:enumeration value="false" />
			<xs:enumeration value="extra" />
		</xs:restriction>
	</xs:simpleType>
	<xs:attributeGroup name="baseCollectionAttributes">
		<xs:attribute name="name" use="required" type="xs:string" />
		<xs:attribute name="access" type="xs:string" />
		<xs:attribute name="table" type="xs:string" />
		<xs:attribute name="schema" type="xs:string" />
		<xs:attribute name="catalog" type="xs:string" />
		<xs:attribute name="subselect" type="xs:string" />
		<xs:attribute name="lazy" type="collectionLazy">
		</xs:attribute>
		<xs:attribute name="inverse" default="false" type="xs:boolean">
		</xs:attribute>
		<xs:attribute name="mutable" default="true" type="xs:boolean">
		</xs:attribute>
		<xs:attribute name="cascade" type="xs:string" />
		<xs:attribute name="order-by" type="xs:string" />
		<xs:attribute name="where" type="xs:string" />
		<xs:attribute name="batch-size" type="xs:int" />
		<xs:attribute name="outer-join" type="outerJoinStrategy">
		</xs:attribute>
		<xs:attribute name="fetch" type="collectionFetchMode">
		</xs:attribute>
		<xs:attribute name="persister" type="xs:string" />
		<xs:attribute name="collection-type" type="xs:string" />
		<xs:attribute name="check" type="xs:string" />
		<xs:attribute name="optimistic-lock" default="true" type="xs:boolean">
		</xs:attribute>
		<xs:attribute name="node" type="xs:string" />
		<xs:attribute name="embed-xml" default="true" type="xs:boolean">
		</xs:attribute>
		<xs:attribute name="generic" type="xs:boolean" use="optional">
			<xs:annotation>
				<xs:documentation>The concrete collection should use a generic version or an object-based version.</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:attributeGroup>
	<xs:simpleType name="optimisticLockMode">
		<xs:restriction base="xs:string">
			<xs:enumeration value="none" />
			<xs:enumeration value="version" />
			<xs:enumeration value="dirty" />
			<xs:enumeration value="all" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="polymorphismType">
		<xs:annotation>
			<xs:documentation>Types of polymorphism</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="implicit" />
			<xs:enumeration value="explicit" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="unsavedValueType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="undefined" />
			<xs:enumeration value="any" />
			<xs:enumeration value="none" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="ondelete">
		<xs:restriction base="xs:string">
			<xs:enumeration value="cascade" />
			<xs:enumeration value="noaction" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="restrictedLaziness">
		<xs:restriction base="xs:string">
			<xs:enumeration value="false" />
			<xs:enumeration value="proxy" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="lockMode">
		<xs:restriction base="xs:string">
			<xs:enumeration value="none" />
			<xs:enumeration value="read" />
			<xs:enumeration value="upgrade" />
			<xs:enumeration value="upgrade-nowait" />
			<xs:enumeration value="write" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="notFoundMode">
		<xs:restriction base="xs:string">
			<xs:enumeration value="ignore" />
			<xs:enumeration value="exception" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="fetchMode">
		<xs:restriction base="xs:string">
			<xs:enumeration value="select" />
			<xs:enumeration value="join" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="laziness">
		<xs:restriction base="xs:string">
			<xs:enumeration value="false" />
			<xs:enumeration value="proxy" />
			<xs:enumeration value="no-proxy" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="propertyGeneration">
		<xs:restriction base="xs:string">
			<xs:enumeration value="never" />
			<xs:enumeration value="insert" />
			<xs:enumeration value="always" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="flushMode">
		<xs:restriction base="xs:string">
			<xs:enumeration value="auto" />
			<xs:enumeration value="never" />
			<xs:enumeration value="always" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="cacheMode">
		<xs:restriction base="xs:string">
			<xs:enumeration value="get" />
			<xs:enumeration value="ignore" />
			<xs:enumeration value="normal" />
			<xs:enumeration value="put" />
			<xs:enumeration value="refresh" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="customSQLCheck">
		<xs:restriction base="xs:string">
			<xs:enumeration value="none" />
			<xs:enumeration value="rowcount" />
			<xs:enumeration value="param" />
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="customSQL" mixed="true">
		<xs:attribute name="callable" type="xs:boolean" />
		<xs:attribute name="check" type="customSQLCheck" use="optional" />
	</xs:complexType>
	<xs:simpleType name="versionGeneration">
		<xs:restriction base="xs:string">
			<xs:enumeration value="never" />
			<xs:enumeration value="always" />
		</xs:restriction>
	</xs:simpleType>
</xs:schema>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

Michał Maniewski
Software Developer
Poland Poland
No Biography provided

| Advertise | Privacy | Mobile
Web03 | 2.8.140721.1 | Last Updated 5 Oct 2012
Article Copyright 2012 by Michał Maniewski
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid