XSF-skjema i InfoPath

Microsoft Office InfoPath

Vis alt Vis alt

XSF-skjema i InfoPath

Microsofts Office InfoPath 2003-skjemadefinisjonsfilen (.xsf) er en XML-skjemafil (.xsd) som brukes til å validere .xsf-filen i en InfoPath-skjemamal.

Nedenfor finner du en komplett oversikt over innholdet i .xsf-skjemafilen.

    <?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsf="http://schemas.microsoft.com/office/infopath/2003/solutionDefinition"
	targetNamespace="http://schemas.microsoft.com/office/infopath/2003/solutionDefinition" elementFormDefault="qualified"
	attributeFormDefault="unqualified">
	<!-- xdTitle type -->
	<xsd:simpleType name="xdTitle">
		<xsd:restriction base="xsd:string">
			<xsd:minLength value="1" />
			<xsd:maxLength value="255" />
			<xsd:pattern value="([^\p{Z}\p{Cc}\p{Cf}\p{Cn}])(([^\p{Zl}\p{Zp}\p{Cc}])*([^\p{Z}\p{Cc}\p{Cf}\p{Cn}]))?" />
		</xsd:restriction>
	</xsd:simpleType>
	<!-- xdViewName type -->
	<xsd:simpleType name="xdViewName">
		<xsd:restriction base="xsd:string">
			<xsd:minLength value="1" />
			<xsd:maxLength value="255" />
			<xsd:pattern value="([^\p{Z}\p{C}/\\#&amp;&quot;&gt;&lt;])(([^\p{Zl}\p{Zp}\p{C}/\\#&amp;&quot;&gt;&lt;])*([^\p{Z}\p{C}/\\#&amp;&quot;&gt;&lt;]))?" />
		</xsd:restriction>
	</xsd:simpleType>
	<!-- xdRoleName type -->
	<!-- uses xdViewName as base -->
	<xsd:simpleType name="xdRoleName">
		<xsd:restriction base="xsf:xdViewName"></xsd:restriction>
	</xsd:simpleType>
	<!-- xdYesNo type -->
	<xsd:simpleType name="xdYesNo">
		<xsd:restriction base="xsd:NMTOKEN">
			<xsd:enumeration value="yes" />
			<xsd:enumeration value="no" />
		</xsd:restriction>
	</xsd:simpleType>
	<!-- xdEnabledDisabled type -->
	<xsd:simpleType name="xdEnabledDisabled">
		<xsd:restriction base="xsd:NMTOKEN">
			<xsd:enumeration value="enabled" />
			<xsd:enumeration value="disabled" />
		</xsd:restriction>
	</xsd:simpleType>
	<!-- xdManualAuto type -->
	<xsd:simpleType name="xdManualAuto">
		<xsd:restriction base="xsd:NMTOKEN">
			<xsd:enumeration value="manual" />
			<xsd:enumeration value="automatic" />
		</xsd:restriction>
	</xsd:simpleType>
	<!-- xdExpressionLiteral type -->
	<xsd:simpleType name="xdExpressionLiteral">
		<xsd:restriction base="xsd:NMTOKEN">
			<xsd:enumeration value="expression" />
			<xsd:enumeration value="literal" />
		</xsd:restriction>
	</xsd:simpleType>
	<!-- xdFileName type -->
	<xsd:simpleType name="xdFileName">
		<xsd:restriction base="xsd:string">
			<xsd:minLength value="1" />
			<xsd:maxLength value="64" />
		</xsd:restriction>
	</xsd:simpleType>
	<!-- xdScriptLanguage type -->
	<xsd:simpleType name="xdScriptLanguage">
		<xsd:restriction base="xsd:NMTOKEN">
			<xsd:pattern value="(([Jj][Aa][Vv][Aa]|(([Jj])|([Vv][Bb]))([Ss][Cc][Rr][Ii][Pp][Tt]))([.][Ee][Nn][Cc][Oo][Dd][Ee]))|([Jj][Aa][Vv][Aa]|(([Jj])|([Vv][Bb]))([Ss][Cc][Rr][Ii][Pp][Tt]))|([Mm][Aa][Nn][Aa][Gg][Ee][Dd][Cc][Oo][Dd][Ee])" />
		</xsd:restriction>
	</xsd:simpleType>
	<!-- xdSolutionVersion type -->
	<xsd:simpleType name="xdSolutionVersion">
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="(([0-9]{1,4}.){3}[0-9]{1,4})" />
		</xsd:restriction>
	</xsd:simpleType>
	<!-- xdEmptyString type -->
	<xsd:simpleType name="xdEmptyString">
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="0" />
		</xsd:restriction>
	</xsd:simpleType>
	<!-- xdErrorMessage type -->
	<xsd:simpleType name="xdErrorMessage">
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="1023" />
		</xsd:restriction>
	</xsd:simpleType>
	<!-- xdDesignMode type -->
	<xsd:simpleType name="xdDesignMode">
		<xsd:restriction base="xsd:NMTOKEN">
			<xsd:enumeration value="normal" />
			<xsd:enumeration value="protected" />
		</xsd:restriction>
	</xsd:simpleType>
	<!-- xdTrustLevel type -->
	<xsd:simpleType name="xdTrustLevel">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="restricted" />
			<xsd:enumeration value="domain" />
		</xsd:restriction>
	</xsd:simpleType>
	<!-- xdSignedDataBlockName type -->
	<xsd:simpleType name="xdSignedDataBlockName">
		<xsd:restriction base="xsd:ID">
			<xsd:minLength value="1" />
			<xsd:maxLength value="255" />
		</xsd:restriction>
	</xsd:simpleType>
	<!-- xdSignedDataBlockMessage type -->
	<xsd:simpleType name="xdSignedDataBlockMessage">
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="255" />
		</xsd:restriction>
	</xsd:simpleType>
	<!-- xdSignatureRelationEnum type -->
	<xsd:simpleType name="xdSignatureRelationEnum">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="countersign" />
			<xsd:enumeration value="cosign" />
			<xsd:enumeration value="single" />
		</xsd:restriction>
	</xsd:simpleType>
	<!-- xdHWSname type -->
	<xsd:simpleType name="xdHWSname">
		<xsd:restriction base="xsd:NCName">
			<xsd:pattern value="[^-^\.^\\^\[^\]^\|^\+^?^\*^@^\{^\}^\(^\)^&gt;^&lt;^=^;^,]*" />
		</xsd:restriction>
	</xsd:simpleType>
	<!-- xdHWSCaption type -->
	<xsd:simpleType name="xdHWSCaption">
		<xsd:restriction base="xsd:string">
			<xsd:minLength value="1" />
			<xsd:maxLength value="255" />
		</xsd:restriction>
	</xsd:simpleType>
	<!-- xDocumentClass -->
	<xsd:element name="xDocumentClass">
		<xsd:complexType>
			<xsd:all>
				<xsd:element ref="xsf:package" minOccurs="1" />
				<xsd:element ref="xsf:permissions" minOccurs="0" />
				<xsd:element ref="xsf:views" minOccurs="1" />
				<xsd:element ref="xsf:hwsWorkflow" minOccurs="0" />
				<xsd:element ref="xsf:externalViews" minOccurs="0" />
				<xsd:element ref="xsf:scripts" minOccurs="0" />
				<xsd:element ref="xsf:schemaErrorMessages" minOccurs="0" />
				<xsd:element ref="xsf:documentSchemas" minOccurs="0" />
				<xsd:element ref="xsf:applicationParameters" minOccurs="0" />
				<xsd:element ref="xsf:featureRestrictions" minOccurs="0" />
				<xsd:element ref="xsf:fileNew" minOccurs="0" />
				<xsd:element ref="xsf:customValidation" minOccurs="0" />
				<xsd:element ref="xsf:domEventHandlers" minOccurs="0" />
				<xsd:element ref="xsf:importParameters" minOccurs="0" />
				<xsd:element ref="xsf:listProperties" minOccurs="0" />
				<xsd:element ref="xsf:taskpane" minOccurs="0" />
				<xsd:element ref="xsf:documentSignatures" minOccurs="0" />
				<xsd:element ref="xsf:dataObjects" minOccurs="0" />
				<xsd:element ref="xsf:dataAdapters" minOccurs="0" />
				<xsd:element ref="xsf:query" minOccurs="0" />
				<xsd:element ref="xsf:submit" minOccurs="0" />
				<xsd:element ref="xsf:save" minOccurs="0" />
				<xsd:element ref="xsf:roles" minOccurs="0" />
				<xsd:element ref="xsf:onLoad" minOccurs="0" />
				<xsd:element ref="xsf:documentVersionUpgrade" minOccurs="0" />
				<xsd:element ref="xsf:extensions" minOccurs="0" />
				<xsd:element ref="xsf:ruleSets" minOccurs="0" />
				<xsd:element ref="xsf:calculations" minOccurs="0" />
			</xsd:all>
			<xsd:attribute name="name" type="xsd:string" use="optional" />
			<xsd:attribute name="author" type="xsd:string" use="optional" />
			<xsd:attribute name="description" use="optional">
				<xsd:simpleType>
					<xsd:restriction base="xsd:string">
						<xsd:maxLength value="255" />
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:attribute>
			<xsd:attribute name="solutionVersion" type="xsf:xdSolutionVersion" use="optional" />
			<xsd:attribute name="productVersion" type="xsd:string" use="optional" />
			<xsd:attribute name="solutionFormatVersion" type="xsf:xdSolutionVersion" use="required" />
			<xsd:attribute name="dataFormSolution" type="xsf:xdYesNo" use="optional" />
			<xsd:attribute name="requireFullTrust" type="xsf:xdYesNo" use="optional" />
			<xsd:attribute name="trustLevel" type="xsf:xdTrustLevel" use="optional" />
			<xsd:attribute name="trustSetting" type="xsf:xdManualAuto" use="optional" />
			<xsd:attribute name="publishUrl" type="xsd:string" use="optional" />
		</xsd:complexType>
		<xsd:key name="view_name_key">
			<xsd:selector xpath="./xsf:views/xsf:view" />
			<xsd:field xpath="@name" />
		</xsd:key>
		<xsd:key name="externalView_name_key">
			<xsd:selector xpath="./xsf:externalViews/xsf:externalView" />
			<xsd:field xpath="@name" />
		</xsd:key>
		<xsd:key name="view_or_externalView_name_key">
			<xsd:selector xpath="./xsf:views/xsf:view | ./xsf:externalViews/xsf:externalView" />
			<xsd:field xpath="@name" />
		</xsd:key>
		<xsd:key name="ruleset_name_key">
			<xsd:selector xpath="./xsf:ruleSets/xsf:ruleSet" />
			<xsd:field xpath="@name" />
		</xsd:key>
		<xsd:key name="dataObject_name_key">
			<xsd:selector xpath="./xsf:dataObjects/xsf:dataObject" />
			<xsd:field xpath="@name" />
		</xsd:key>
		<xsd:unique name="adapter_name_unique">
			<xsd:selector xpath="./xsf:dataObjects/xsf:dataObject/xsf:query/* | ./xsf:query/* | ./xsf:dataAdapters/* | ./xsf:submit/xsf:webServiceAdapter | ./xsf:submit/xsf:davAdapter | ./xsf:submit/xsf:emailAdapter" />
			<xsd:field xpath="@name" />
		</xsd:unique>
		<xsd:key name="adapter_name_key">
			<xsd:selector xpath="./xsf:dataAdapters/*" />
			<xsd:field xpath="@name" />
		</xsd:key>
		<xsd:unique name="view_external_name_unique">
			<xsd:selector xpath="./xsf:views/xsf:view | ./xsf:externalViews/xsf:externalView" />
			<xsd:field xpath="@name" />
		</xsd:unique>
	</xsd:element>
	<!-- schemaErrorMessages -->
	<xsd:element name="schemaErrorMessages">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="xsf:override" minOccurs="0" maxOccurs="unbounded" />
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<!-- override -->
	<xsd:element name="override">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="xsf:errorMessage" />
			</xsd:sequence>
			<xsd:attribute name="match" type="xsd:string" use="required" />
		</xsd:complexType>
	</xsd:element>
	<!-- applicationParameters -->
	<xsd:element name="applicationParameters">
		<xsd:complexType>
			<xsd:all>
				<xsd:element ref="xsf:solutionProperties" minOccurs="0" />
			</xsd:all>
			<xsd:attribute name="application" use="required">
				<xsd:simpleType>
					<xsd:restriction base="xsd:string">
						<xsd:enumeration value="InfoPath Design Mode" />
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:attribute>
		</xsd:complexType>
	</xsd:element>
	<!-- solutionProperties -->
	<xsd:element name="solutionProperties">
		<xsd:complexType>
			<xsd:attribute name="allowCustomization" type="xsf:xdYesNo" use="optional" />
			<xsd:attribute name="lastOpenView" use="optional" />
			<xsd:attribute name="scriptLanguage" type="xsf:xdScriptLanguage" use="optional" />
			<xsd:attribute name="automaticallyCreateNodes" type="xsf:xdYesNo" use="optional" />
			<xsd:attribute name="lastVersionNeedingTransform" type="xsf:xdSolutionVersion" use="optional" />
			<xsd:attribute name="fullyEditableNamespace" type="xsd:anyURI" use="optional" />
			<xsd:attribute name="publishSaveUrl" type="xsd:string" use="optional" />
		</xsd:complexType>
	</xsd:element>
	<!-- featureRestrictions -->
	<xsd:element name="featureRestrictions">
		<xsd:complexType>
			<xsd:all>
				<xsd:element name="save" minOccurs="0">
					<xsd:complexType>
						<xsd:attribute name="ui" type="xsf:xdEnabledDisabled" use="required" />
					</xsd:complexType>
				</xsd:element>
				<xsd:element ref="xsf:exportToWeb" minOccurs="0" />
				<xsd:element ref="xsf:exportToExcel" minOccurs="0" />
				<xsd:element ref="xsf:print" minOccurs="0" />
				<xsd:element ref="xsf:sendMail" minOccurs="0" />
				<xsd:element ref="xsf:autoRecovery" minOccurs="0" />
			</xsd:all>
		</xsd:complexType>
	</xsd:element>
	<!-- exportToWeb -->
	<xsd:element name="exportToWeb">
		<xsd:complexType>
			<xsd:attribute name="ui" type="xsf:xdEnabledDisabled" use="required" />
		</xsd:complexType>
	</xsd:element>
	<!-- exportToExcel -->
	<xsd:element name="exportToExcel">
		<xsd:complexType>
			<xsd:attribute name="ui" type="xsf:xdEnabledDisabled" use="required" />
		</xsd:complexType>
	</xsd:element>
	<!-- print -->
	<xsd:element name="print">
		<xsd:complexType>
			<xsd:attribute name="ui" type="xsf:xdEnabledDisabled" use="required" />
		</xsd:complexType>
	</xsd:element>
	<!-- sendMail -->
	<xsd:element name="sendMail">
		<xsd:complexType>
			<xsd:attribute name="ui" type="xsf:xdEnabledDisabled" use="required" />
		</xsd:complexType>
	</xsd:element>
	<!-- autoRecovery -->
	<xsd:element name="autoRecovery">
		<xsd:complexType>
			<xsd:attribute name="feature" type="xsf:xdEnabledDisabled" use="required" />
		</xsd:complexType>
	</xsd:element>
	<!-- query -->
	<xsd:element name="query">
		<xsd:complexType>
			<xsd:choice>
				<xsd:element ref="xsf:queryAction" />
				<xsd:element ref="xsf:adoAdapter" />
				<xsd:element ref="xsf:webServiceAdapter" />
				<xsd:element ref="xsf:xmlFileAdapter" />
				<xsd:element ref="xsf:sharepointListAdapter" />
			</xsd:choice>
		</xsd:complexType>
	</xsd:element>
	<!-- scripts -->
	<xsd:element name="scripts">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="xsf:script" minOccurs="0" maxOccurs="unbounded" />
			</xsd:sequence>
			<xsd:attribute name="language" type="xsf:xdScriptLanguage" use="required" />
			<xsd:attribute name="enforceScriptTimeout" type="xsf:xdYesNo" use="optional" default="yes" />
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="script">
		<xsd:complexType>
			<xsd:attribute name="src" type="xsf:xdFileName" use="required" />
		</xsd:complexType>
	</xsd:element>
	<!-- dataObjects -->
	<xsd:element name="dataObjects">
		<xsd:complexType>
			<xsd:choice minOccurs="0" maxOccurs="unbounded">
				<xsd:element ref="xsf:dataObject" />
			</xsd:choice>
		</xsd:complexType>
		<xsd:unique name="dataObjects_name_unique">
			<xsd:selector xpath="./xsf:dataObject" />
			<xsd:field xpath="@name" />
		</xsd:unique>
	</xsd:element>
	<xsd:element name="dataObject">
		<xsd:complexType>
			<xsd:choice>
				<xsd:element name="query">
					<xsd:complexType>
						<xsd:choice>
							<xsd:element ref="xsf:adoAdapter" />
							<xsd:element ref="xsf:webServiceAdapter" />
							<xsd:element ref="xsf:xmlFileAdapter" />
							<xsd:element ref="xsf:sharepointListAdapter" />
						</xsd:choice>
					</xsd:complexType>
				</xsd:element>
			</xsd:choice>
			<xsd:attribute name="name" type="xsf:xdTitle" use="required" />
			<xsd:attribute name="schema" type="xsd:string" use="optional" />
			<xsd:attribute name="initOnLoad" type="xsf:xdYesNo" use="optional" />
		</xsd:complexType>
	</xsd:element>
	<!-- dataAdapters -->
	<xsd:element name="adoAdapter">
		<xsd:complexType>
			<xsd:attribute name="name" type="xsf:xdTitle" use="optional" />
			<xsd:attribute name="connectionString" type="xsd:string" use="required" />
			<xsd:attribute name="commandText" type="xsd:string" use="required" />
			<xsd:attribute name="queryAllowed" type="xsf:xdYesNo" use="optional" />
			<xsd:attribute name="submitAllowed" type="xsf:xdYesNo" use="optional" />
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="webServiceAdapter">
		<xsd:complexType>
			<xsd:choice>
				<xsd:element ref="xsf:operation" />
			</xsd:choice>
			<xsd:attribute name="name" type="xsf:xdTitle" use="optional" />
			<xsd:attribute name="wsdlUrl" type="xsd:string" use="required" />
			<xsd:attribute name="queryAllowed" type="xsf:xdYesNo" use="optional" />
			<xsd:attribute name="submitAllowed" type="xsf:xdYesNo" use="optional" />
			<xsd:attribute name="useDataSet" type="xsf:xdYesNo" use="optional" />
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="hwsAdapter">
		<xsd:complexType>
			<xsd:choice>
				<xsd:element ref="xsf:hwsOperation" />
			</xsd:choice>
			<xsd:attribute name="name" type="xsf:xdTitle" use="required" />
			<xsd:attribute name="wsdlUrl" type="xsd:string" use="required" />
			<xsd:attribute name="queryAllowed" type="xsf:xdYesNo" use="optional" />
			<xsd:attribute name="submitAllowed" type="xsf:xdYesNo" use="optional" />
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="operation">
		<xsd:complexType>
			<xsd:choice>
				<xsd:element ref="xsf:input" minOccurs="0" />
			</xsd:choice>
			<xsd:attribute name="name" type="xsd:string" use="required" />
			<xsd:attribute name="soapAction" type="xsd:string" use="required" />
			<xsd:attribute name="serviceUrl" type="xsd:string" use="required" />
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="hwsOperation">
		<xsd:complexType>
			<xsd:choice>
				<xsd:element ref="xsf:input" />
			</xsd:choice>
			<xsd:attribute name="type" type="xsd:string" use="required" />
			<xsd:attribute name="typeID" type="xsd:string" use="required" />
			<xsd:attribute name="serviceUrl" type="xsd:string" use="required" />
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="input">
		<xsd:complexType>
			<xsd:choice minOccurs="0" maxOccurs="unbounded">
				<xsd:element ref="xsf:partFragment" />
			</xsd:choice>
			<xsd:attribute name="source" type="xsd:string" use="required" />
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="partFragment">
		<xsd:complexType>
			<xsd:attribute name="match" type="xsd:string" use="required" />
			<xsd:attribute name="replaceWith" type="xsd:string" use="required" />
			<xsd:attribute name="sendAsString" type="xsf:xdYesNo" use="optional" />
			<xsd:attribute name="dataObject" type="xsd:string" use="optional" />
			<xsd:attribute name="filter" type="xsd:string" use="optional" />
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="xmlFileAdapter">
		<xsd:complexType>
			<xsd:attribute name="name" type="xsf:xdTitle" use="optional" />
			<xsd:attribute name="fileUrl" type="xsd:anyURI" use="required" />
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="sharepointListAdapter">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="field" minOccurs="0" maxOccurs="unbounded">
					<xsd:complexType>
						<xsd:attribute name="sharepointName" type="xsd:string" use="required" />
						<xsd:attribute name="infopathName" type="xsd:string" use="required" />
						<xsd:attribute name="isLookup" type="xsf:xdYesNo" use="optional" />
					</xsd:complexType>
				</xsd:element>
			</xsd:sequence>
			<xsd:attribute name="name" type="xsf:xdTitle" use="required" />
			<xsd:attribute name="siteUrl" type="xsd:string" use="required" />
			<xsd:attribute name="sharepointGuid" type="xsd:string" use="required" />
			<xsd:attribute name="infopathGroup" type="xsd:string" use="required" />
			<xsd:attribute name="queryAllowed" type="xsf:xdYesNo" use="optional" />
			<xsd:attribute name="submitAllowed" type="xsf:xdYesNo" use="optional" />
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="davAdapter">
		<xsd:complexType>
			<xsd:all>
				<xsd:element name="folderURL">
					<xsd:complexType>
						<xsd:attribute name="value" type="xsd:string" use="required" />
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="fileName">
					<xsd:complexType>
						<xsd:attribute name="value" type="xsd:string" use="required" />
						<xsd:attribute name="valueType" type="xsf:xdExpressionLiteral" use="optional" />
					</xsd:complexType>
				</xsd:element>
			</xsd:all>
			<xsd:attribute name="name" type="xsf:xdTitle" use="required" />
			<xsd:attribute name="overwriteAllowed" type="xsf:xdYesNo" use="optional" />
			<xsd:attribute name="queryAllowed" type="xsf:xdYesNo" use="optional" />
			<xsd:attribute name="submitAllowed" type="xsf:xdYesNo" use="optional" />
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="emailAdapter">
		<xsd:complexType>
			<xsd:all>
				<xsd:element name="to" minOccurs="0">
					<xsd:complexType>
						<xsd:attribute name="value" type="xsd:string" use="required" />
						<xsd:attribute name="valueType" type="xsf:xdExpressionLiteral" use="optional" />
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="cc" minOccurs="0">
					<xsd:complexType>
						<xsd:attribute name="value" type="xsd:string" use="required" />
						<xsd:attribute name="valueType" type="xsf:xdExpressionLiteral" use="optional" />
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="bcc" minOccurs="0">
					<xsd:complexType>
						<xsd:attribute name="value" type="xsd:string" use="required" />
						<xsd:attribute name="valueType" type="xsf:xdExpressionLiteral" use="optional" />
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="subject" minOccurs="0">
					<xsd:complexType>
						<xsd:attribute name="value" type="xsd:string" use="required" />
						<xsd:attribute name="valueType" type="xsf:xdExpressionLiteral" use="optional" />
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="intro" minOccurs="0">
					<xsd:complexType>
						<xsd:attribute name="value" type="xsd:string" use="required" />
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="attachmentFileName" minOccurs="0">
					<xsd:complexType>
						<xsd:attribute name="value" type="xsd:string" use="required" />
						<xsd:attribute name="valueType" type="xsf:xdExpressionLiteral" use="optional" />
					</xsd:complexType>
				</xsd:element>
			</xsd:all>
			<xsd:attribute name="name" type="xsf:xdTitle" use="required" />
			<xsd:attribute name="queryAllowed" type="xsf:xdYesNo" use="optional" />
			<xsd:attribute name="submitAllowed" type="xsf:xdYesNo" use="optional" />
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="dataAdapters">
		<xsd:complexType>
			<xsd:choice minOccurs="0" maxOccurs="unbounded">
				<xsd:element ref="xsf:adoAdapter" />
				<xsd:element ref="xsf:webServiceAdapter" />
				<xsd:element ref="xsf:xmlFileAdapter" />
				<xsd:element ref="xsf:sharepointListAdapter" />
				<xsd:element ref="xsf:davAdapter" />
				<xsd:element ref="xsf:emailAdapter" />
				<xsd:element ref="xsf:hwsAdapter" />
			</xsd:choice>
		</xsd:complexType>
	</xsd:element>
	<!-- documentSchemas -->
	<xsd:element name="documentSchemas">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="xsf:documentSchema" maxOccurs="unbounded" />
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="documentSchema">
		<xsd:complexType>
			<xsd:attribute name="location" type="xsd:string" use="required" />
			<xsd:attribute name="rootSchema" type="xsf:xdYesNo" />
		</xsd:complexType>
	</xsd:element>
	<!-- customValidation -->
	<xsd:element name="customValidation">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="xsf:errorCondition" minOccurs="0" maxOccurs="unbounded" />
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="errorCondition">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="xsf:errorMessage" />
			</xsd:sequence>
			<xsd:attribute name="match" type="xsd:string" use="required" />
			<xsd:attribute name="expression" type="xsd:string" use="required" />
			<xsd:attribute name="expressionContext" type="xsd:string" use="optional" />
			<xsd:attribute name="showErrorOn" type="xsd:string" use="optional" />
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="errorMessage">
		<xsd:complexType>
			<xsd:simpleContent>
				<xsd:extension base="xsf:xdErrorMessage">
					<xsd:attribute name="type" use="optional">
						<xsd:simpleType>
							<xsd:restriction base="xsd:NMTOKEN">
								<xsd:enumeration value="modal" />
								<xsd:enumeration value="modeless" />
							</xsd:restriction>
						</xsd:simpleType>
					</xsd:attribute>
					<xsd:attribute name="shortMessage" use="required">
						<xsd:simpleType>
							<xsd:restriction base="xsd:string">
								<xsd:maxLength value="127" />
							</xsd:restriction>
						</xsd:simpleType>
					</xsd:attribute>
				</xsd:extension>
			</xsd:simpleContent>
		</xsd:complexType>
	</xsd:element>
	<!-- domEventHandlers -->
	<xsd:element name="domEventHandlers">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="xsf:domEventHandler" minOccurs="0" maxOccurs="unbounded" />
			</xsd:sequence>
		</xsd:complexType>
		<xsd:unique name="domEventHandler_handlerObject_unique">
			<xsd:selector xpath="." />
			<xsd:field xpath="@handlerObject" />
		</xsd:unique>
	</xsd:element>
	<xsd:element name="domEventHandler">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="xsf:ruleSetAction" minOccurs="0" maxOccurs="1" />
			</xsd:sequence>
			<xsd:attribute name="dataObject" type="xsd:string" use="optional" />
			<xsd:attribute name="match" type="xsd:string" use="required" />
			<xsd:attribute name="handlerObject" type="xsd:string" use="optional" />
		</xsd:complexType>
		<xsd:keyref name="domEventHandler_ruleSetAction" refer="xsf:ruleset_name_key">
			<xsd:selector xpath="./xsf:ruleSetAction" />
			<xsd:field xpath="@ruleSet" />
		</xsd:keyref>
	</xsd:element>
	<!-- importParameters -->
	<xsd:element name="importParameters">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="xsf:importSource" minOccurs="0" maxOccurs="unbounded" />
			</xsd:sequence>
			<xsd:attribute name="enabled" type="xsf:xdYesNo" use="required" />
			<xsd:attribute name="useScriptHandler" type="xsf:xdYesNo" use="optional" />
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="importSource">
		<xsd:complexType>
			<xsd:attribute name="name" type="xsd:string" use="required" />
			<xsd:attribute name="schema" type="xsf:xdFileName" use="required" />
			<xsd:attribute name="transform" type="xsf:xdFileName" use="required" />
			<xsd:attribute name="authoringOfTransform" type="xsf:xdManualAuto" use="optional" />
		</xsd:complexType>
	</xsd:element>
	<!-- listProperties -->
	<xsd:element name="listProperties">
		<xsd:complexType>
			<xsd:all>
				<xsd:element ref="xsf:fields" />
			</xsd:all>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="fields">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="xsf:field" minOccurs="0" maxOccurs="unbounded" />
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="field">
		<xsd:complexType>
			<xsd:attribute name="type" type="xsd:NMTOKEN" use="required" />
			<xsd:attribute name="name" type="xsf:xdTitle" use="required" />
			<xsd:attribute name="columnName" type="xsf:xdTitle" use="required" />
			<xsd:attribute name="required" type="xsf:xdYesNo" use="optional" />
			<xsd:attribute name="viewable" type="xsf:xdYesNo" use="optional" />
			<xsd:attribute name="node" type="xsd:string" use="required" />
			<xsd:attribute name="maxLength" type="xsd:byte" />
			<xsd:attribute name="aggregation" use="optional">
				<xsd:simpleType>
					<xsd:restriction base="xsd:NMTOKEN">
						<xsd:enumeration value="sum" />
						<xsd:enumeration value="count" />
						<xsd:enumeration value="average" />
						<xsd:enumeration value="min" />
						<xsd:enumeration value="max" />
						<xsd:enumeration value="first" />
						<xsd:enumeration value="last" />
						<xsd:enumeration value="merge" />
						<xsd:enumeration value="plaintext" />
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:attribute>
		</xsd:complexType>
	</xsd:element>
	<!-- submit -->
	<xsd:element name="submit">
		<xsd:complexType>
			<xsd:all>
				<xsd:element name="submitAction" minOccurs="0">
					<xsd:complexType>
						<xsd:attribute name="adapter" type="xsf:xdTitle" use="required" />
					</xsd:complexType>
					<xsd:keyref name="submitAdapter_name_keyref" refer="xsf:adapter_name_key">
						<xsd:selector xpath="." />
						<xsd:field xpath="@adapter" />
					</xsd:keyref>
				</xsd:element>
				<xsd:element ref="xsf:useHttpHandler" minOccurs="0" />
				<xsd:element ref="xsf:useScriptHandler" minOccurs="0" />
				<xsd:element ref="xsf:ruleSetAction" minOccurs="0" />
				<xsd:element ref="xsf:useQueryAdapter" minOccurs="0" />
				<xsd:element ref="xsf:webServiceAdapter" minOccurs="0" />
				<xsd:element ref="xsf:davAdapter" minOccurs="0" />
				<xsd:element ref="xsf:emailAdapter" minOccurs="0" />
				<xsd:element name="successMessage" type="xsd:string" minOccurs="0" />
				<xsd:element name="errorMessage" type="xsd:string" minOccurs="0" />
			</xsd:all>
			<xsd:attribute name="caption" type="xsd:string" use="optional" />
			<xsd:attribute name="onAfterSubmit" use="optional">
				<xsd:simpleType>
					<xsd:restriction base="xsd:NMTOKEN">
						<xsd:enumeration value="close" />
						<xsd:enumeration value="keepOpen" />
						<xsd:enumeration value="openNew" />
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:attribute>
			<xsd:attribute name="showStatusDialog" type="xsf:xdYesNo" use="optional" />
			<xsd:attribute name="showSignatureReminder" type="xsf:xdYesNo" use="optional" />
			<xsd:attribute name="disableMenuItem" type="xsf:xdYesNo" use="optional" />
		</xsd:complexType>
		<xsd:keyref name="submit_ruleSetAction" refer="xsf:ruleset_name_key">
			<xsd:selector xpath="./xsf:ruleSetAction" />
			<xsd:field xpath="@ruleSet" />
		</xsd:keyref>
	</xsd:element>
	<xsd:element name="useHttpHandler">
		<xsd:complexType>
			<xsd:attribute name="method" use="required">
				<xsd:simpleType>
					<xsd:restriction base="xsd:NMTOKEN">
						<xsd:enumeration value="POST" />
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:attribute>
			<xsd:attribute name="href" type="xsd:anyURI" use="required" />
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="useScriptHandler" />
	<xsd:element name="useQueryAdapter" />
	<!-- onLoad -->
	<xsd:element name="onLoad">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="xsf:ruleSetAction" minOccurs="1" maxOccurs="1" />
			</xsd:sequence>
		</xsd:complexType>
		<xsd:keyref name="load_ruleSetAction" refer="xsf:ruleset_name_key">
			<xsd:selector xpath="./xsf:ruleSetAction" />
			<xsd:field xpath="@ruleSet" />
		</xsd:keyref>
	</xsd:element>
	<!-- save -->
	<xsd:element name="save">
		<xsd:complexType>
			<xsd:choice minOccurs="0" maxOccurs="1">
				<xsd:element ref="xsf:useScriptHandler" />
			</xsd:choice>
		</xsd:complexType>
	</xsd:element>
	<!-- roles -->
	<xsd:element name="roles">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="xsf:role" minOccurs="1" maxOccurs="unbounded" />
				<xsd:element ref="xsf:membership" minOccurs="0" maxOccurs="1" />
			</xsd:sequence>
			<xsd:attribute name="default" type="xsd:string" use="required" />
			<xsd:attribute name="initiator" type="xsd:string" use="optional" />
			<xsd:attribute name="hideStatusBarDisplay" type="xsf:xdYesNo" use="optional" />
		</xsd:complexType>
		<!-- role names must be unique -->
		<xsd:unique name="roles_name_unique">
			<xsd:selector xpath="./xsf:role" />
			<xsd:field xpath="@name" />
		</xsd:unique>
		<!-- fields must reference existing role -->
		<xsd:key name="role_name_key">
			<xsd:selector xpath="./xsf:role" />
			<xsd:field xpath="@name" />
		</xsd:key>
		<xsd:keyref name="role_default" refer="xsf:role_name_key">
			<xsd:selector xpath="." />
			<xsd:field xpath="@default" />
		</xsd:keyref>
		<xsd:keyref name="role_initiator" refer="xsf:role_name_key">
			<xsd:selector xpath="." />
			<xsd:field xpath="@initiator" />
		</xsd:keyref>
		<xsd:keyref name="role_membership" refer="xsf:role_name_key">
			<xsd:selector xpath="./xsf:membership/*" />
			<xsd:field xpath="@memberOf" />
		</xsd:keyref>
	</xsd:element>
	<xsd:element name="role">
		<xsd:complexType>
			<xsd:attribute name="name" type="xsf:xdRoleName" use="required" />
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="membership">
		<xsd:complexType>
			<xsd:choice minOccurs="1" maxOccurs="unbounded">
				<xsd:element ref="xsf:getUserNameFromData" />
				<xsd:element ref="xsf:userName" />
				<xsd:element ref="xsf:group" />
			</xsd:choice>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="getUserNameFromData">
		<xsd:complexType>
			<xsd:attribute name="dataObject" type="xsd:string" use="optional" />
			<xsd:attribute name="select" type="xsd:string" use="required" />
			<xsd:attribute name="memberOf" type="xsd:string" use="required" />
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="userName">
		<xsd:complexType>
			<xsd:attribute name="name" type="xsd:string" use="required" />
			<xsd:attribute name="memberOf" type="xsd:string" use="required" />
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="group">
		<xsd:complexType>
			<xsd:attribute name="name" type="xsd:string" use="required" />
			<xsd:attribute name="memberOf" type="xsd:string" use="required" />
		</xsd:complexType>
	</xsd:element>
	<!-- hwsWorkflow -->
	<xsd:element name="hwsWorkflow">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="xsf:location" minOccurs="1" maxOccurs="1" />
				<xsd:element ref="xsf:allowedActions" minOccurs="1" maxOccurs="1" />
				<xsd:element ref="xsf:allowedTasks" minOccurs="0" maxOccurs="1" />
			</xsd:sequence>
			<xsd:attribute name="taskpaneVisible" type="xsf:xdYesNo" />
		</xsd:complexType>
		<xsd:unique name="hws_actiontask_name">
			<xsd:selector xpath="./xsf:allowedActions/xsf:action|./xsf:allowedTasks/xsf:task" />
			<xsd:field xpath="@name" />
		</xsd:unique>
	</xsd:element>
	<!-- location -->
	<xsd:element name="location">
		<xsd:complexType>
			<xsd:attribute name="url" type="xsd:string" use="required" />
		</xsd:complexType>
	</xsd:element>
	<!-- allowedActions -->
	<xsd:element name="allowedActions">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="xsf:action" minOccurs="1" maxOccurs="20" />
			</xsd:sequence>
		</xsd:complexType>
		<xsd:unique name="hws_actionTypeID_unique">
			<xsd:selector xpath="./xsf:action" />
			<xsd:field xpath="@actionTypeID" />
		</xsd:unique>
	</xsd:element>
	<!-- action -->
	<xsd:element name="action">
		<xsd:complexType>
			<xsd:attribute name="name" type="xsf:xdHWSname" use="required" />
			<xsd:attribute name="actionTypeID" type="xsd:string" use="required" />
			<xsd:attribute name="canInitiateWorkflow" type="xsf:xdYesNo" use="required" />
			<xsd:attribute name="caption" type="xsf:xdHWSCaption" use="optional" />
		</xsd:complexType>
	</xsd:element>
	<!-- allowedTasks -->
	<xsd:element name="allowedTasks">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="xsf:task" minOccurs="1" maxOccurs="20" />
			</xsd:sequence>
		</xsd:complexType>
		<xsd:unique name="hws_taskID_unique">
			<xsd:selector xpath="./xsf:task" />
			<xsd:field xpath="@taskTypeID" />
		</xsd:unique>
	</xsd:element>
	<!-- task -->
	<xsd:element name="task">
		<xsd:complexType>
			<xsd:attribute name="name" type="xsf:xdHWSname" use="required" />
			<xsd:attribute name="taskTypeID" type="xsd:string" use="required" />
			<xsd:attribute name="caption" type="xsf:xdHWSCaption" use="optional" />
		</xsd:complexType>
	</xsd:element>
	<!-- fileNew -->
	<xsd:element name="fileNew">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="xsf:initialXmlDocument" />
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="initialXmlDocument">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="xsf:customCategory" minOccurs="0" />
			</xsd:sequence>
			<xsd:attribute name="caption" type="xsf:xdTitle" use="required" />
			<xsd:attribute name="href" type="xsf:xdFileName" use="required" />
		</xsd:complexType>
	</xsd:element>
	<!-- customCategory -->
	<xsd:element name="customCategory">
		<xsd:complexType>
			<xsd:attribute name="name" type="xsf:xdTitle" use="required" />
		</xsd:complexType>
	</xsd:element>
	<!-- package -->
	<xsd:element name="package">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="xsf:files" />
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="files">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="xsf:file" minOccurs="0" maxOccurs="unbounded" />
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="file">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="xsf:fileProperties" minOccurs="0" maxOccurs="1" />
			</xsd:sequence>
			<xsd:attribute name="name" type="xsf:xdFileName" use="required" />
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="fileProperties">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="xsf:property" minOccurs="0" maxOccurs="unbounded" />
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="property">
		<xsd:complexType>
			<xsd:attribute name="name" type="xsd:string" use="required" />
			<xsd:attribute name="value" type="xsd:string" use="required" />
			<xsd:attribute name="type" type="xsd:QName" use="required" />
		</xsd:complexType>
	</xsd:element>
	<!-- permissions -->
	<xsd:element name="permissions">
		<xsd:complexType>
			<xsd:choice minOccurs="0" maxOccurs="unbounded">
				<xsd:element ref="xsf:allowedControl" />
			</xsd:choice>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="allowedControl">
		<xsd:complexType>
			<xsd:attribute name="cabFile" type="xsd:string" use="optional" />
			<xsd:attribute name="clsid" type="xsd:string" use="required" />
			<xsd:attribute name="version" type="xsd:string" use="optional" />
		</xsd:complexType>
	</xsd:element>
	<!-- View and Context-Driven Editing definitions -->
	<!-- External Views -->
	<xsd:element name="externalViews">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="xsf:externalView" minOccurs="1" maxOccurs="unbounded" />
			</xsd:sequence>
			<xsd:attribute name="default" type="xsd:string" />
		</xsd:complexType>
		<xsd:unique name="externalViews_name_unique">
			<xsd:selector xpath="./xsf:externalView" />
			<xsd:field xpath="@default" />
		</xsd:unique>
		<xsd:keyref name="external_views_printView" refer="xsf:externalView_name_key">
			<xsd:selector xpath="." />
			<xsd:field xpath="@default" />
		</xsd:keyref>
	</xsd:element>
	<xsd:element name="externalView">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="xsf:mainpane" />
			</xsd:sequence>
			<xsd:attribute name="target" type="xsd:string" />
			<xsd:attribute name="name" type="xsf:xdViewName" use="required" />
			<xsd:attribute name="designMode" type="xsf:xdDesignMode" />
		</xsd:complexType>
	</xsd:element>
	<!-- attributeData -->
	<xsd:element name="attributeData">
		<xsd:complexType>
			<xsd:attribute name="attribute" type="xsd:string" use="required" />
			<xsd:attribute name="value" type="xsd:string" use="required" />
		</xsd:complexType>
	</xsd:element>
	<!-- button -->
	<xsd:element name="button">
		<xsd:complexType>
			<xsd:attribute name="caption" type="xsf:xdTitle" />
			<xsd:attribute name="icon" type="xsd:string" />
			<xsd:attribute name="tooltip" type="xsf:xdTitle" />
			<xsd:attribute name="name" type="xsd:NMTOKEN" />
			<xsd:attribute name="xmlToEdit" type="xsd:NMTOKEN" />
			<xsd:attribute name="action">
				<xsd:simpleType>
					<xsd:restriction base="xsd:NMTOKEN">
						<xsd:enumeration value="xCollection::insert" />
						<xsd:enumeration value="xCollection::insertBefore" />
						<xsd:enumeration value="xCollection::insertAfter" />
						<xsd:enumeration value="xCollection::remove" />
						<xsd:enumeration value="xCollection::refreshFilter" />
						<xsd:enumeration value="xCollection::removeAll" />
						<xsd:enumeration value="xOptional::insert" />
						<xsd:enumeration value="xOptional::remove" />
						<xsd:enumeration value="xReplace::replace" />
						<xsd:enumeration value="xFileAttachment::attach" />
						<xsd:enumeration value="xFileAttachment::open" />
						<xsd:enumeration value="xFileAttachment::saveAs" />
						<xsd:enumeration value="xFileAttachment::remove" />
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:attribute>
			<xsd:attribute name="showIf">
				<xsd:simpleType>
					<xsd:restriction base="xsd:NMTOKEN">
						<xsd:enumeration value="always" />
						<xsd:enumeration value="enabled" />
						<xsd:enumeration value="immediate" />
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:attribute>
		</xsd:complexType>
	</xsd:element>
	<!-- chooseFragment -->
	<xsd:element name="chooseFragment">
		<xsd:complexType mixed="true">
			<xsd:sequence>
				<xsd:any minOccurs="0" maxOccurs="unbounded" processContents="skip" />
			</xsd:sequence>
			<xsd:attribute name="parent" type="xsd:string" />
			<xsd:attribute name="followingSiblings" type="xsd:string" use="optional" />
			<xsd:attribute name="innerFragment" type="xsd:string" use="optional" />
		</xsd:complexType>
	</xsd:element>
	<!-- editWith -->
	<xsd:element name="editWith">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="xsf:masterDetail" minOccurs="0" maxOccurs="1" />
				<xsd:element ref="xsf:fragmentToInsert" minOccurs="0" maxOccurs="1" />
			</xsd:sequence>
			<xsd:attribute name="component" use="required">
				<xsd:simpleType>
					<xsd:restriction base="xsd:NMTOKEN">
						<xsd:enumeration value="xCollection" />
						<xsd:enumeration value="xOptional" />
						<xsd:enumeration value="xReplace" />
						<xsd:enumeration value="xTextList" />
						<xsd:enumeration value="xField" />
						<xsd:enumeration value="xImage" />
						<xsd:enumeration value="xFileAttachment" />
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:attribute>
			<xsd:attribute name="caption" type="xsf:xdTitle" use="optional" />
			<xsd:attribute name="autoComplete" type="xsf:xdYesNo" use="optional" />
			<xsd:attribute name="proofing" type="xsf:xdYesNo" use="optional" />
			<xsd:attribute name="type" use="optional">
				<xsd:simpleType>
					<xsd:restriction base="xsd:NMTOKEN">
						<xsd:enumeration value="plain" />
						<xsd:enumeration value="formatted" />
						<xsd:enumeration value="plainMultiline" />
						<xsd:enumeration value="formattedMultiline" />
						<xsd:enumeration value="rich" />
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:attribute>
			<xsd:attribute name="useFilter" use="optional">
				<xsd:simpleType>
					<xsd:restriction base="xsd:string">
						<xsd:enumeration value="yes" />
						<xsd:enumeration value="no" />
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:attribute>
			<xsd:attribute name="widgetIcon" use="optional">
				<xsd:simpleType>
					<xsd:restriction base="xsd:string">
						<xsd:enumeration value="standard" />
						<xsd:enumeration value="filter" />
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:attribute>
			<xsd:attribute name="filterDependency" type="xsd:string" use="optional" />
			<xsd:attribute name="field" type="xsd:string" use="optional" />
			<xsd:attribute name="removeAncestors" type="xsd:nonNegativeInteger" use="optional" />
			<xsd:attribute name="maxLength" use="optional">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="-1" />
						<xsd:maxInclusive value="9999" />
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:attribute>
			<xsd:attribute name="allowedFileTypes" type="xsd:string" use="optional" />
			<xsd:anyAttribute namespace="http://schemas.microsoft.com/office/infopath/2003" processContents="skip" />
		</xsd:complexType>
	</xsd:element>
	<!-- unboundControls -->
	<xsd:element name="unboundControls">
		<xsd:complexType>
			<xsd:sequence>
				<!-- button -->
				<xsd:element name="button" minOccurs="0" maxOccurs="unbounded">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element ref="xsf:ruleSetAction" minOccurs="0" maxOccurs="1" />
						</xsd:sequence>
						<xsd:attribute name="name" use="required">
							<xsd:simpleType>
								<!-- type of name is non qualified name, but NCName also accepts '.' and '-', 
								so these characters are	disabled by pattern restriction -->
								<xsd:restriction base="xsd:NCName">
									<xsd:pattern value="[^\.\^-]*" />
								</xsd:restriction>
							</xsd:simpleType>
						</xsd:attribute>
					</xsd:complexType>
					<xsd:keyref name="button_ruleSetAction" refer="xsf:ruleset_name_key">
						<xsd:selector xpath="./xsf:ruleSetAction" />
						<xsd:field xpath="@ruleSet" />
					</xsd:keyref>
				</xsd:element>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<!-- editing -->
	<xsd:element name="editing">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="xsf:xmlToEdit" minOccurs="0" maxOccurs="unbounded" />
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<!-- Master Detail -->
	<xsd:element name="masterDetail">
		<xsd:complexType>
			<xsd:attribute name="master" type="xsd:string" />
			<xsd:attribute name="masterViewContext" type="xsd:string" />
			<xsd:attribute name="masterKey" type="xsd:string" />
			<xsd:attribute name="detailKey" type="xsd:string" />
		</xsd:complexType>
	</xsd:element>
	<!-- fragmentToInsert -->
	<xsd:element name="fragmentToInsert">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="xsf:chooseFragment" minOccurs="1" maxOccurs="unbounded" />
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<!-- mainpane -->
	<xsd:element name="mainpane">
		<xsd:complexType>
			<xsd:attribute name="transform" type="xsf:xdFileName" use="required" />
		</xsd:complexType>
	</xsd:element>
	<!-- printSettings -->
	<xsd:element name="printSettings">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="xsf:header" minOccurs="0" maxOccurs="1" />
				<xsd:element ref="xsf:footer" minOccurs="0" maxOccurs="1" />
			</xsd:sequence>
			<xsd:attribute name="orientation">
				<xsd:simpleType>
					<xsd:restriction base="xsd:NMTOKEN">
						<xsd:enumeration value="portrait" />
						<xsd:enumeration value="landscape" />
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:attribute>
			<xsd:attribute name="header">
				<xsd:simpleType>
					<xsd:restriction base="xsd:string">
						<xsd:maxLength value="255" />
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:attribute>
			<xsd:attribute name="footer">
				<xsd:simpleType>
					<xsd:restriction base="xsd:string">
						<xsd:maxLength value="255" />
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:attribute>
			<xsd:attribute name="marginUnitsType">
				<xsd:simpleType>
					<xsd:restriction base="xsd:NMTOKEN">
						<xsd:enumeration value="in" />
						<xsd:enumeration value="cm" />
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:attribute>
			<xsd:attribute name="rightMargin">
				<xsd:simpleType>
					<xsd:restriction base="xsd:float">
						<xsd:minInclusive value="0" />
						<xsd:maxInclusive value="100" />
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:attribute>
			<xsd:attribute name="leftMargin">
				<xsd:simpleType>
					<xsd:restriction base="xsd:float">
						<xsd:minInclusive value="0" />
						<xsd:maxInclusive value="100" />
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:attribute>
			<xsd:attribute name="topMargin">
				<xsd:simpleType>
					<xsd:restriction base="xsd:float">
						<xsd:minInclusive value="0" />
						<xsd:maxInclusive value="100" />
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:attribute>
			<xsd:attribute name="bottomMargin">
				<xsd:simpleType>
					<xsd:restriction base="xsd:float">
						<xsd:minInclusive value="0" />
						<xsd:maxInclusive value="100" />
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:attribute>
			<xsd:attribute name="printerName">
				<xsd:simpleType>
					<xsd:restriction base="xsd:string">
						<xsd:maxLength value="255" />
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:attribute>
			<xsd:attribute name="paperSize">
				<xsd:simpleType>
					<xsd:restriction base="xsd:string">
						<xsd:maxLength value="255" />
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:attribute>
			<xsd:attribute name="paperSource">
				<xsd:simpleType>
					<xsd:restriction base="xsd:string">
						<xsd:maxLength value="255" />
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:attribute>
			<xsd:attribute name="copies">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="1" />
						<xsd:maxInclusive value="9999" />
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:attribute>
			<xsd:attribute name="collate" type="xsf:xdYesNo" />
			<xsd:attribute name="pageRangeStart">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="1" />
						<xsd:maxInclusive value="32000" />
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:attribute>
			<xsd:attribute name="pageRangeEnd">
				<xsd:simpleType>
					<xsd:restriction base="xsd:integer">
						<xsd:minInclusive value="1" />
						<xsd:maxInclusive value="32000" />
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:attribute>
			<xsd:attribute name="printerSpecificSettings">
				<xsd:simpleType>
					<xsd:restriction base="xsd:string">
						<xsd:maxLength value="255" />
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:attribute>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="header">
		<xsd:complexType mixed="true">
			<xsd:sequence>
				<xsd:any minOccurs="0" maxOccurs="unbounded" processContents="skip" />
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="footer">
		<xsd:complexType mixed="true">
			<xsd:sequence>
				<xsd:any minOccurs="0" maxOccurs="unbounded" processContents="skip" />
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<!-- toolbar -->
	<xsd:element name="toolbar">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:group ref="xsf:UIItem" minOccurs="0" maxOccurs="unbounded" />
			</xsd:sequence>
			<xsd:attribute name="name" type="xsf:xdTitle" use="required" />
			<xsd:attribute name="caption" type="xsf:xdTitle" use="required" />
		</xsd:complexType>
	</xsd:element>
	<!-- menu -->
	<xsd:element name="menu">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:group ref="xsf:UIItem" minOccurs="0" maxOccurs="unbounded" />
			</xsd:sequence>
			<xsd:attribute name="caption" type="xsf:xdTitle" use="required" />
		</xsd:complexType>
	</xsd:element>
	<!-- menuArea -->
	<xsd:element name="menuArea">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:group ref="xsf:UIItem" minOccurs="0" maxOccurs="unbounded" />
			</xsd:sequence>
			<xsd:attribute name="name" use="required">
				<xsd:simpleType>
					<xsd:restriction base="xsd:NMTOKEN">
						<xsd:enumeration value="msoFileMenu" />
						<xsd:enumeration value="msoEditMenu" />
						<xsd:enumeration value="msoInsertMenu" />
						<xsd:enumeration value="msoViewMenu" />
						<xsd:enumeration value="msoFormatMenu" />
						<xsd:enumeration value="msoToolsMenu" />
						<xsd:enumeration value="msoTableMenu" />
						<xsd:enumeration value="msoHelpMenu" />
						<xsd:enumeration value="msoStructuralEditingContextMenu" />
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:attribute>
		</xsd:complexType>
	</xsd:element>
	<!-- UIContainer -->
	<xsd:group name="UIContainer">
		<xsd:choice>
			<xsd:element ref="xsf:toolbar" />
			<xsd:element ref="xsf:menu" />
			<xsd:element ref="xsf:menuArea" />
		</xsd:choice>
	</xsd:group>
	<!-- UIItem -->
	<xsd:group name="UIItem">
		<xsd:choice>
			<xsd:element ref="xsf:button" />
			<xsd:element ref="xsf:menu" />
		</xsd:choice>
	</xsd:group>
	<!-- taskpane -->
	<xsd:element name="taskpane">
		<xsd:complexType>
			<xsd:attribute name="caption" type="xsd:string" use="required" />
			<xsd:attribute name="href" type="xsd:string" use="required" />
		</xsd:complexType>
	</xsd:element>
	<!-- views -->
	<xsd:element name="views">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="xsf:view" minOccurs="1" maxOccurs="unbounded" />
			</xsd:sequence>
			<xsd:attribute name="default" type="xsd:string" />
		</xsd:complexType>
		<xsd:unique name="views_name_unique">
			<xsd:selector xpath="./xsf:view" />
			<xsd:field xpath="@name" />
		</xsd:unique>
		<xsd:keyref name="view_printView" refer="xsf:view_or_externalView_name_key">
			<xsd:selector xpath="./xsf:view" />
			<xsd:field xpath="@printView" />
		</xsd:keyref>
		<xsd:keyref name="views_default" refer="xsf:view_name_key">
			<xsd:selector xpath="." />
			<xsd:field xpath="@default" />
		</xsd:keyref>
	</xsd:element>
	<!-- ViewContent -->
	<xsd:group name="ViewContent">
		<xsd:choice>
			<xsd:element ref="xsf:editing" minOccurs="0" />
			<xsd:element ref="xsf:mainpane" minOccurs="0" />
			<xsd:element ref="xsf:printSettings" minOccurs="0" />
			<xsd:group ref="xsf:UIContainer" minOccurs="0" maxOccurs="unbounded" />
			<xsd:element ref="xsf:unboundControls" minOccurs="0" />
		</xsd:choice>
	</xsd:group>
	<!-- view -->
	<xsd:element name="view">
		<xsd:complexType>
			<xsd:group ref="xsf:ViewContent" minOccurs="0" maxOccurs="unbounded" />
			<xsd:attribute name="caption" type="xsf:xdViewName" />
			<xsd:attribute name="name" type="xsf:xdViewName" use="required" />
			<xsd:attribute name="showMenuItem" type="xsf:xdYesNo" use="optional" />
			<xsd:attribute name="printView" type="xsd:string" />
			<xsd:attribute name="designMode" type="xsf:xdDesignMode" />
		</xsd:complexType>
		<xsd:unique name="toolbar_name_unique">
			<xsd:selector xpath="./xsf:toolbar" />
			<xsd:field xpath="@name" />
		</xsd:unique>
		<xsd:unique name="menuArea_name_unique">
			<xsd:selector xpath="./xsf:menuArea" />
			<xsd:field xpath="@name" />
		</xsd:unique>
		<xsd:unique name="xmlToEdit_name_unique">
			<xsd:selector xpath="./xsf:editing/xsf:xmlToEdit" />
			<xsd:field xpath="@name" />
		</xsd:unique>
		<xsd:key name="xmlToEdit_name_key">
			<xsd:selector xpath="./xsf:editing/xsf:xmlToEdit" />
			<xsd:field xpath="@name" />
		</xsd:key>
		<xsd:keyref name="button_xmlToEdit_reference" refer="xsf:xmlToEdit_name_key">
			<xsd:selector xpath="./xsf:menuArea/xsf:button | ./xsf:menu/xsf:button | ./xsf:toolbar/xsf:button" />
			<xsd:field xpath="@xmlToEdit" />
		</xsd:keyref>
	</xsd:element>
	<!-- xmlToEdit -->
	<xsd:element name="xmlToEdit">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="xsf:editWith" minOccurs="0" maxOccurs="1" />
			</xsd:sequence>
			<xsd:attribute name="name" type="xsd:NMTOKEN" use="required" />
			<xsd:attribute name="item" type="xsd:string" use="required" />
			<xsd:attribute name="container" type="xsd:string" />
			<xsd:attribute name="viewContext">
				<xsd:simpleType>
					<xsd:restriction base="xsd:string">
						<xsd:pattern value="((\.|\#|[a-zA-Z0-9_])[a-zA-Z0-9_]*)(\s((\.|\#|[a-zA-Z0-9_])[a-zA-Z0-9_]*))*" />
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:attribute>
		</xsd:complexType>
	</xsd:element>
	<!-- Digital Signatures -->
	<xsd:element name="documentSignatures">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="xsf:signedDataBlock" minOccurs="0" maxOccurs="unbounded" />
			</xsd:sequence>
			<xsd:attribute name="signatureLocation" type="xsd:string" use="optional" />
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="signedDataBlock">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="message" type="xsf:xdSignedDataBlockMessage" minOccurs="0" />
			</xsd:sequence>
			<xsd:attribute name="name" type="xsf:xdSignedDataBlockName" use="required" />
			<xsd:attribute name="data" type="xsd:string" use="required" />
			<xsd:attribute name="signatureLocation" type="xsd:string" use="required" />
			<xsd:attribute name="mode" type="xsf:xdSignatureRelationEnum" use="required" />
		</xsd:complexType>
		<xsd:unique name="signedDataBlock_name_unique">
			<xsd:selector xpath="." />
			<xsd:field xpath="@name" />
		</xsd:unique>
	</xsd:element>
	<!-- Version Upgrade -->
	<xsd:element name="documentVersionUpgrade">
		<xsd:complexType>
			<xsd:choice>
				<xsd:element ref="xsf:useScriptHandler" />
				<xsd:element ref="xsf:useTransform" />
			</xsd:choice>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="useTransform">
		<xsd:complexType>
			<xsd:attribute name="transform" use="required">
				<xsd:simpleType>
					<xsd:union memberTypes="xsf:xdFileName xsf:xdEmptyString" />
				</xsd:simpleType>
			</xsd:attribute>
			<xsd:attribute name="minVersionToUpgrade" type="xsf:xdSolutionVersion" use="required" />
			<xsd:attribute name="maxVersionToUpgrade" type="xsf:xdSolutionVersion" />
		</xsd:complexType>
	</xsd:element>
	<!-- XSF Extensions -->
	<xsd:element name="extensions">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="xsf:extension" minOccurs="0" maxOccurs="unbounded" />
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="extension">
		<xsd:complexType mixed="true">
			<xsd:sequence>
				<xsd:any minOccurs="0" maxOccurs="unbounded" processContents="skip" />
			</xsd:sequence>
			<xsd:attribute name="name" type="xsd:NMTOKEN" use="required" />
			<xsd:anyAttribute processContents="skip" />
		</xsd:complexType>
	</xsd:element>
	<!-- Rules -->
	<xsd:element name="ruleSetAction">
		<xsd:complexType>
			<xsd:attribute name="ruleSet" type="xsd:string" use="required" />
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="rule">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:choice minOccurs="0" maxOccurs="unbounded">
					<xsd:element ref="xsf:dialogBoxMessageAction" />
					<xsd:element ref="xsf:dialogBoxExpressionAction" />
					<xsd:element ref="xsf:switchViewAction" />
					<xsd:element ref="xsf:assignmentAction" />
					<xsd:element ref="xsf:queryAction" />
					<xsd:element name="submitAction">
						<xsd:complexType>
							<xsd:attribute name="adapter" type="xsf:xdTitle" use="required" />
						</xsd:complexType>
					</xsd:element>
					<xsd:element ref="xsf:openNewDocumentAction" />
					<xsd:element ref="xsf:closeDocumentAction" />
				</xsd:choice>
				<xsd:element name="exitRuleSet" minOccurs="0">
					<xsd:complexType />
				</xsd:element>
			</xsd:sequence>
			<xsd:attribute name="caption" type="xsd:string" use="required" />
			<xsd:attribute name="condition" type="xsd:string" use="optional" />
			<xsd:attribute name="isEnabled" type="xsf:xdYesNo" use="optional" default="yes" />
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="dialogBoxMessageAction">
		<xsd:simpleType>
			<xsd:restriction base="xsd:string">
				<xsd:maxLength value="1024" />
			</xsd:restriction>
		</xsd:simpleType>
	</xsd:element>
	<xsd:element name="dialogBoxExpressionAction" type="xsd:string" />
	<xsd:element name="switchViewAction">
		<xsd:complexType>
			<xsd:attribute name="view" type="xsf:xdViewName" use="required" />
		</xsd:complexType>
		<xsd:keyref name="switchViewAction_view_keyref" refer="xsf:view_name_key">
			<xsd:selector xpath="." />
			<xsd:field xpath="@view" />
		</xsd:keyref>
	</xsd:element>
	<xsd:element name="assignmentAction">
		<xsd:complexType>
			<xsd:attribute name="targetField" type="xsd:string" use="required" />
			<xsd:attribute name="expression" type="xsd:string" use="required" />
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="queryAction">
		<xsd:complexType>
			<xsd:attribute name="adapter" type="xsd:string" use="required" />
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="openNewDocumentAction">
		<xsd:complexType>
			<xsd:attribute name="solutionURI" type="xsd:anyURI" use="required" />
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="closeDocumentAction">
		<xsd:complexType>
			<xsd:attribute name="promptToSaveChanges" type="xsf:xdYesNo" use="required" />
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="ruleSet">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="xsf:rule" minOccurs="1" maxOccurs="unbounded" />
			</xsd:sequence>
			<xsd:attribute name="name" type="xsd:string" use="required" />
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="ruleSets">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="xsf:ruleSet" minOccurs="0" maxOccurs="unbounded" />
			</xsd:sequence>
		</xsd:complexType>
		<xsd:unique name="ruleSets_name_unique">
			<xsd:selector xpath="./xsf:ruleSet" />
			<xsd:field xpath="@name" />
		</xsd:unique>
	</xsd:element>
	<!-- Declarative Calculations -->
	<xsd:element name="calculations">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="xsf:calculatedField" minOccurs="0" maxOccurs="unbounded" />
			</xsd:sequence>
			<xsd:attribute name="treatBlankValueAsZero" type="xsf:xdYesNo" use="optional" />
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="calculatedField">
		<xsd:complexType>
			<xsd:attribute name="target" type="xsd:string" use="required" />
			<xsd:attribute name="expression" type="xsd:string" use="required" />
			<xsd:attribute name="refresh" type="xsd:string" use="required" />
		</xsd:complexType>
	</xsd:element>
</xsd:schema>