<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:element name="CmsSite">
		<xs:complexType>
			<xs:all>
				<xs:element name="Channels">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Channel" maxOccurs="unbounded">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="MenuName" type="xs:string"/>
										<xs:element name="FolderName" type="xs:string"/>
										<xs:element name="Description" type="xs:string"/>
										<xs:element name="Extension" type="xs:string" minOccurs="0"/>
										<xs:element name="ServerTransfer" type="xs:boolean" minOccurs="0"/>
										<xs:element name="RenderEngine" minOccurs="0">
											<xs:complexType>
												<xs:sequence>
													<xs:element name="AssemblyName" type="xs:string"/>
													<xs:element name="ClassName" type="xs:string"/>
												</xs:sequence>
											</xs:complexType>
										</xs:element>
										<xs:element name="Hosts" minOccurs="0">
											<xs:complexType>
												<xs:sequence>
													<xs:element name="Host" type="xs:string"/>
												</xs:sequence>
											</xs:complexType>
										</xs:element>
									</xs:sequence>
									<xs:attribute name="axid" type="xs:string" use="required"/>
									<xs:attribute name="isDefault" type="xs:boolean" use="required"/>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="HtmlCodeTemplates">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="CodeTemplate" maxOccurs="unbounded">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="Code" type="xs:string"/>
									</xs:sequence>
									<xs:attribute name="axid" type="xs:string" use="required"/>
									<xs:attribute name="image" type="xs:string" use="required"/>
									<xs:attribute name="hint" type="xs:string" use="required"/>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="HtmlRules">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="HtmlRule" maxOccurs="unbounded">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="Tag" maxOccurs="unbounded">
											<xs:complexType>
												<xs:sequence minOccurs="0">
													<xs:element name="Attribute" maxOccurs="unbounded">
														<xs:complexType>
															<xs:attribute name="name" type="xs:string" use="required"/>
															<xs:attribute name="values" type="xs:string" use="required"/>
														</xs:complexType>
													</xs:element>
												</xs:sequence>
												<xs:attribute name="name" type="xs:string" use="required"/>
												<xs:attribute name="attributes" type="xs:string" use="optional"/>
												<xs:attribute name="styles" type="xs:string" use="optional"/>
											</xs:complexType>
										</xs:element>
									</xs:sequence>
									<xs:attribute name="axid" type="xs:string" use="required"/>
									<xs:attribute name="tags" type="xs:string" use="required"/>
								</xs:complexType>
							</xs:element>
							<xs:element name="StyleDefinition" maxOccurs="unbounded">
								<xs:complexType>
									<xs:sequence minOccurs="0">
										<xs:element name="Value" maxOccurs="unbounded">
											<xs:complexType>
												<xs:attribute name="value" type="xs:string" use="required"/>
												<xs:attribute name="property" type="xs:string" use="required"/>
												<xs:attribute name="ribbonImage" type="xs:string" use="optional"/>
											</xs:complexType>
										</xs:element>
									</xs:sequence>
									<xs:attribute name="axid" type="xs:string" use="required"/>
									<xs:attribute name="values" type="xs:string"/>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="ImageFormats">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="ImageFormat" maxOccurs="unbounded">
								<xs:complexType>
									<xs:all>
										<xs:element name="Width">
											<xs:complexType>
												<xs:attribute name="minSize" type="xs:unsignedByte" use="optional"/>
												<xs:attribute name="maxSize" type="xs:unsignedShort" use="optional"/>
												<xs:attribute name="size" type="xs:unsignedShort" use="optional"/>
											</xs:complexType>
										</xs:element>
										<xs:element name="Height">
											<xs:complexType>
												<xs:attribute name="size" type="xs:unsignedShort" use="optional"/>
												<xs:attribute name="minSize" type="xs:unsignedByte" use="optional"/>
												<xs:attribute name="maxSize" type="xs:unsignedShort" use="optional"/>
											</xs:complexType>
										</xs:element>
									</xs:all>
									<xs:attribute name="axid" type="xs:string" use="required"/>
									<xs:attribute name="formats" type="xs:string"/>
									<xs:attribute name="name" type="xs:string" use="optional"/>
									<xs:attribute name="alwaysGenerate" type="xs:boolean" use="optional"/>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="PageTemplates">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="PageTemplate" maxOccurs="unbounded">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="Files" minOccurs="0">
											<xs:complexType>
												<xs:sequence>
													<xs:element name="File" maxOccurs="unbounded">
														<xs:complexType>
															<xs:simpleContent>
																<xs:extension base="xs:string">
																	<xs:attribute name="channel" type="xs:string" use="required"/>
																	<xs:attribute name="axid" type="xs:string" use="optional"/>
																</xs:extension>
															</xs:simpleContent>
														</xs:complexType>
													</xs:element>
												</xs:sequence>
											</xs:complexType>
										</xs:element>
										<xs:element name="File" type="xs:string" minOccurs="0"/>
										<xs:element name="PropertiesFile" type="xs:string" minOccurs="0"/>
										<xs:element name="PageType" type="xs:unsignedByte" minOccurs="0"/>
										<xs:element name="Placeholders" minOccurs="0">
											<xs:complexType mixed="true">
												<xs:sequence minOccurs="0">
													<xs:element name="Placeholder" maxOccurs="unbounded">
														<xs:complexType>
															<xs:attribute name="axid" type="xs:string" use="required"/>
															<xs:attribute name="type" type="xs:string" use="optional"/>
														</xs:complexType>
													</xs:element>
												</xs:sequence>
											</xs:complexType>
										</xs:element>
										<xs:element name="Frames" minOccurs="0"/>
									</xs:sequence>
									<xs:attribute name="axid" type="xs:string" use="required"/>
									<xs:attribute name="description" type="xs:string" use="required"/>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="PlaceholderDefinitions">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="PlaceholderDefinition" maxOccurs="unbounded">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="ContentRules" minOccurs="0">
											<xs:complexType>
												<xs:sequence minOccurs="0">
													<xs:element name="Allow" maxOccurs="unbounded">
														<xs:complexType>
															<xs:simpleContent>
																<xs:extension base="xs:string">
																	<xs:attribute name="atLeast" type="xs:unsignedByte" use="optional"/>
																	<xs:attribute name="atMost" type="xs:unsignedByte" use="optional"/>
																	<xs:attribute name="exactly" type="xs:unsignedByte" use="optional"/>
																</xs:extension>
															</xs:simpleContent>
														</xs:complexType>
													</xs:element>
												</xs:sequence>
											</xs:complexType>
										</xs:element>
										<xs:element name="ElementTemplates">
											<xs:complexType mixed="true">
												<xs:sequence minOccurs="0">
													<xs:element name="ElementTemplate" maxOccurs="unbounded">
														<xs:complexType>
															<xs:simpleContent>
																<xs:extension base="xs:string">
																	<xs:attribute name="axid" type="xs:string"/>
																	<xs:attribute name="groupID" type="xs:string"/>
																	<xs:attribute name="atLeast" type="xs:unsignedByte" use="optional"/>
																	<xs:attribute name="atMost" type="xs:unsignedByte" use="optional"/>
																</xs:extension>
															</xs:simpleContent>
														</xs:complexType>
													</xs:element>
												</xs:sequence>
											</xs:complexType>
										</xs:element>
									</xs:sequence>
									<xs:attribute name="axid" type="xs:string" use="required"/>
									<xs:attribute name="description" type="xs:string" use="required"/>
									<xs:attribute name="imageFormat" type="xs:string" use="optional"/>
									<xs:attribute name="htmlrule" type="xs:string" use="optional"/>
									<xs:attribute name="codetemplates" type="xs:string" use="optional"/>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="ElementTemplateDefinitions">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="ElementTemplateDefinition" maxOccurs="unbounded">
								<xs:complexType>
									<xs:sequence>
										<xs:choice maxOccurs="unbounded">
											<xs:element name="Behaviour" type="xs:string"/>
											<xs:element name="IsCompiled" type="xs:boolean"/>
											<xs:element name="Description" type="xs:string"/>
											<xs:element name="Files">
												<xs:complexType>
													<xs:sequence>
														<xs:element name="File" maxOccurs="unbounded">
															<xs:complexType>
																<xs:simpleContent>
																	<xs:extension base="xs:string">
																		<xs:attribute name="axid" type="xs:string" use="optional"/>
																		<xs:attribute name="channel" type="xs:string" use="required"/>
																	</xs:extension>
																</xs:simpleContent>
															</xs:complexType>
														</xs:element>
													</xs:sequence>
												</xs:complexType>
											</xs:element>
											<xs:element name="File" type="xs:string"/>
											<xs:element name="RibbonImage">
												<xs:complexType>
													<xs:attribute name="file" type="xs:string" use="required"/>
												</xs:complexType>
											</xs:element>
											<xs:element name="TagPrefix" type="xs:string"/>
											<xs:element name="TagName" type="xs:string"/>
											<xs:element name="Namespace" type="xs:string"/>
											<xs:element name="Editor" type="xs:string"/>
											<xs:element name="Placeholders">
												<xs:complexType>
													<xs:sequence minOccurs="0">
														<xs:element name="Placeholder" maxOccurs="unbounded">
															<xs:complexType>
																<xs:attribute name="axid" type="xs:string" use="required"/>
																<xs:attribute name="type" type="xs:string"/>
																<xs:attribute name="renderMode" type="xs:string" use="optional"/>
															</xs:complexType>
														</xs:element>
													</xs:sequence>
												</xs:complexType>
											</xs:element>
											<xs:element name="Parameters">
												<xs:complexType>
													<xs:sequence minOccurs="0">
														<xs:element name="Parameter" type="xs:string" maxOccurs="unbounded"/>
													</xs:sequence>
												</xs:complexType>
											</xs:element>
											<xs:element name="RequireEditor" type="xs:boolean"/>
										</xs:choice>
									</xs:sequence>
									<xs:attribute name="axid" type="xs:string" use="required"/>
									<xs:attribute name="description" type="xs:string" use="required"/>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="ElementGroupDefinitions">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="ElementGroupDefinition" maxOccurs="unbounded">
								<xs:complexType>
									<xs:sequence minOccurs="0">
										<xs:element name="ElementTemplates">
											<xs:complexType mixed="true">
												<xs:sequence minOccurs="0">
													<xs:element name="ElementTemplate" maxOccurs="unbounded">
														<xs:complexType>
															<xs:attribute name="axid" use="required"/>
															<xs:attribute name="atMost" type="xs:unsignedByte" use="required"/>
															<xs:attribute name="atLeast" type="xs:unsignedByte"/>
														</xs:complexType>
													</xs:element>
												</xs:sequence>
											</xs:complexType>
										</xs:element>
									</xs:sequence>
									<xs:attribute name="axid" type="xs:string" use="required"/>
									<xs:attribute name="name" type="xs:string" use="required"/>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:all>
			<xs:attribute name="version" type="xs:decimal" use="required"/>
		</xs:complexType>
	</xs:element>
</xs:schema>

