<?xml version="1.0" encoding="utf-8"?>
<!--

        ** OAGIS® Revision: 9.1  **
        ** Date: 11 May 2007 **
        ** Copyright 1997-2007, All Rights Reserved **

        This is an OAGIS® BOD XML Schema (XSD) Definition.

       License information for this file is provided in the file **OAGi License Agreement.txt** that is provided with this download package.

        For support, more information, or to report implementation bugs, please contact the Open Applications Group at xml@openapplications.org.

        XML Schema

-->

<!--
© Copyright 2007 Infor Global Solutions Technology GmbH and/or its affiliates and subsidiaries. All rights reserved. The
word and design marks set forth herein are trademarks and/or registered trademarks of Infor Global Solutions
Technology GmbH and/or its affiliates and subsidiaries. All rights reserved. All other trademarks listed herein
are the property of their respective owners.

-->

<!--    *****     Update Log     *****

Date          By      Note
10 Apr 2008    JB      Added correct Copyright and update comments to schema.

        *****     Update End     *****

-->

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns="http://schema.infor.com/InforOAGIS/2"
  targetNamespace="http://schema.infor.com/InforOAGIS/2" elementFormDefault="qualified"
    attributeFormDefault="unqualified">

  <xsd:include schemaLocation="../Common/Components.xsd"/>

  <xsd:complexType name="NounMetadataType">
    <xsd:annotation>
      <xsd:documentation/>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element ref="SchemaItems" minOccurs="0" maxOccurs="unbounded">
        <xsd:annotation>
          <xsd:documentation>Top-level Type and Group definitions.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element ref="Customization" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element ref="LocalizedText" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element ref="NounData" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element ref="NounLocalizedText" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element ref="BusinessKey" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:element name="NounMetadata" type="NounMetadataType"/>

  <xsd:complexType name="NounType">
    <xsd:annotation>
      <xsd:documentation>A ComplexType representing Nouns
        used along with pre-defined verbs to define BOD messages. Essentially an element of a larger
        domain model for an application. </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="ComplexTypeType">
        <xsd:sequence>
          <xsd:element ref="BusinessKey" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
        <xsd:attribute name="version" type="StringType"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="Noun" type="NounType"/>

  <xsd:attributeGroup name="LevelAware">
    <xsd:attribute name="path" type="StringType" use="required">
      <xsd:annotation>
        <xsd:documentation>The path includes an indicator
          of the level of the text, either at the noun, instance, level or at the component, class
          level. </xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <xsd:attribute name="tenant" type="StringType" use="required"/>
    <xsd:attribute name="level" type="CustomizationLevelEnum" use="required"/>
    <xsd:attribute name="levelDetail" type="StringType" use="optional"/>
    <xsd:attribute name="bodVersion" type="StringType" />
    <xsd:attribute name="nounName" type="StringType" />
  </xsd:attributeGroup>

  <xsd:attributeGroup name="MinMaxOccurs">
    <xsd:attribute name="minOccurs" type="StringType" use="optional" default="1"/>
    <xsd:attribute name="maxOccurs" type="StringType" use="optional" default="1"/>
  </xsd:attributeGroup>

  <xsd:complexType name="LocalizedTextType">
    <xsd:annotation>
      <xsd:documentation>Localized text (labels, help,
        etc.) for a Noun, Type, or use of a Type. </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="Text" type="TextItemType" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="languageID" type="xsd:language" use="required"/>
    <xsd:attributeGroup ref="LevelAware"/>
  </xsd:complexType>
  <xsd:element name="LocalizedText" type="LocalizedTextType"/>
  <xsd:element name="NounLocalizedText" type="LocalizedTextType"/>

  <xsd:complexType name="TextItemType">
    <xsd:simpleContent>
      <xsd:extension base="xsd:string">
        <xsd:attribute name="kind" type="TextEnum" use="required"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  <xsd:element name="TextItem" type="TextItemType"/>

  <xsd:complexType name="GeneralizationType">
    <xsd:annotation>
      <xsd:documentation>Describes how a sub-type derives
        from a super-type. </xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="general" type="StringType" use="required"/>
    <xsd:attribute name="kind" type="GeneralizationEnum" use="required"/>
  </xsd:complexType>
  <xsd:element name="Generalization" type="GeneralizationType"/>

  <xsd:complexType name="SchemaItemCollectionType">
    <xsd:choice maxOccurs="unbounded">
      <xsd:element ref="ComplexType"/>
      <xsd:element ref="SimpleType"/>
      <xsd:element ref="GroupDef"/>
      <xsd:element ref="AttributeGroupDef"/>
      <xsd:element ref="SubstitutionGroup"/>
      <xsd:element ref="Noun"/>
    </xsd:choice>
    <xsd:attribute name="namespace" type="xsd:string" use="optional"/>
  </xsd:complexType>
  <xsd:element name="SchemaItems" type="SchemaItemCollectionType"/>

  <xsd:complexType name="SchemaItemType" abstract="true">
    <xsd:sequence>
      <xsd:element ref="Description" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="name" type="xsd:string" use="required"/>
    <xsd:attribute name="namespace" type="xsd:string" use="optional"/>
    <xsd:attribute name="schemaFile" type="xsd:string" use="required">
      <xsd:annotation>
        <xsd:documentation>The pointer to the file that
          contains the schema element. </xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>

  <xsd:complexType name="SimpleTypeType">
    <xsd:complexContent>
      <xsd:extension base="SchemaItemType">
        <xsd:sequence>
          <xsd:element ref="Generalization" minOccurs="0"/>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="SimpleType" type="SimpleTypeType"/>

  <xsd:group name="ContainerGroup">
    <xsd:choice>
      <xsd:element ref="Choice" minOccurs="0"/>
      <xsd:element ref="Group" minOccurs="0"/>
      <xsd:element ref="SchemaElement" minOccurs="0"/>
      <xsd:element ref="SequenceContainer" minOccurs="0"/>
    </xsd:choice>
  </xsd:group>

  <xsd:complexType name="ComplexTypeType">
    <xsd:annotation>
      <xsd:documentation> Describes a complexType of a
        schema. </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="SimpleTypeType">
        <xsd:sequence>
          <xsd:element ref="Attribute" minOccurs="0" maxOccurs="unbounded"/>
          <xsd:element ref="AttributeGroup" minOccurs="0" maxOccurs="unbounded"/>
          <xsd:group ref="ContainerGroup" maxOccurs="unbounded"/>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="ComplexType" type="ComplexTypeType"/>

  <xsd:group name="CustomizeGroup">
    <xsd:sequence>
      <xsd:element ref="Customization" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element ref="LocalizedText" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
  </xsd:group>

  <xsd:complexType name="PropertyNode" abstract="true">
    <xsd:complexContent>
      <xsd:extension base="NodeType">
        <xsd:sequence>
          <xsd:group ref="CustomizeGroup"/>
        </xsd:sequence>
        <xsd:attribute name="minOccurs" type="StringType" use="optional" default="1"/>
        <xsd:attribute name="name" type="StringType" use="required"/>
        <xsd:attribute name="type" type="StringType" use="required"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="AttributeType">
    <xsd:complexContent>
      <xsd:extension base="PropertyNode"/>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="Attribute" type="AttributeType"/>

  <xsd:complexType name="SchemaElementType">
    <xsd:complexContent>
      <xsd:extension base="PropertyNode">
        <xsd:attribute name="maxOccurs" type="StringType" use="optional" default="1"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="SchemaElement" type="SchemaElementType"/>

  <xsd:complexType name="NodeType" abstract="true"> </xsd:complexType>

  <xsd:complexType name="ReferenceNodeType">
    <xsd:complexContent>
      <xsd:extension base="NodeType">
        <xsd:attribute name="ref" type="StringType" use="required"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:element name="AttributeGroup" type="ReferenceNodeType"/>
  <xsd:element name="Group" type="ReferenceNodeType"/>

  <xsd:complexType name="ContainerNodeType" abstract="true">
    <xsd:complexContent>
      <xsd:extension base="NodeType">
        <xsd:group ref="ContainerGroup" maxOccurs="unbounded"/>
        <xsd:attributeGroup ref="MinMaxOccurs"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="ChoiceType">
    <xsd:annotation>
      <xsd:documentation>A container in which a choice of
        only one of the items can appear. </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="ContainerNodeType"/>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="Choice" type="ChoiceType"/>

  <xsd:complexType name="SequenceContainerType">
    <xsd:annotation>
      <xsd:documentation> Container in which all elements
        must appear in the order listed. </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="ContainerNodeType"/>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="SequenceContainer" type="SequenceContainerType"/>

  <xsd:complexType name="GroupType">
    <xsd:annotation>
      <xsd:documentation>Defines a named group of elements
        to be defined once and references from many places by name (like a macro.)
      </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="SchemaItemType">
        <xsd:choice minOccurs="0" maxOccurs="unbounded">
          <xsd:element ref="SequenceContainer"/>
          <xsd:element ref="Choice"/>
        </xsd:choice>
        <xsd:attributeGroup ref="MinMaxOccurs"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="GroupDef" type="GroupType"/>

  <xsd:complexType name="AttributeGroupType">
    <xsd:annotation>
      <xsd:documentation>Defines a named group of
        attributes to be defined once and references from many places by name (like a macro.)
      </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="SchemaItemType">
        <xsd:choice minOccurs="0" maxOccurs="unbounded">
          <xsd:element ref="Attribute"/>
          <xsd:element ref="AttributeGroup"/>
        </xsd:choice>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="AttributeGroupDef" type="AttributeGroupType"/>

  <xsd:complexType name="CustomizationType">
    <xsd:annotation>
      <xsd:documentation> A customization to the available
        metadata about a Type or usage of a Type. Metadata is merged from various sources. Any
        "global" metadata associated with a Type definition is applied first. Next any point-of-use
        metadata is overlaid. Each kind of metadata also can be defined at various levels. From the
        most general standard OAGIS to the most specific for a given customer deployment. We start
        with general and overlay each available level up to the most specific. </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element ref="Mandatory" minOccurs="0"/>
      <xsd:element ref="NotUsed" minOccurs="0"/>
      <xsd:element ref="MinInclusive" minOccurs="0"/>
      <xsd:element ref="MaxInclusive" minOccurs="0"/>
      <xsd:element ref="DefaultValue" minOccurs="0"/>
      <xsd:element ref="Length" minOccurs="0"/>
      <xsd:element ref="MaxLength" minOccurs="0"/>
      <xsd:element ref="MinLength" minOccurs="0"/>
      <xsd:element ref="Pattern" minOccurs="0"/>
      <xsd:element ref="Enumeration" minOccurs="0"/>
      <xsd:element ref="TotalDigits" minOccurs="0"/>
      <xsd:element ref="FractionDigits" minOccurs="0"/>
      <xsd:element ref="FlattenPoint" minOccurs="0"/>
			<xsd:element ref="InstanceValue" minOccurs="0"/>
    </xsd:sequence>
    <xsd:attributeGroup ref="LevelAware"/>
    <xsd:attribute name="requiredOnDimension" type="xsd:boolean" use="optional"/>
    <xsd:attribute name="eligibleForExtensionField" type="xsd:boolean" use="optional"/>
  </xsd:complexType>
  <xsd:element name="Customization" type="CustomizationType"/>

  <xsd:complexType name="BusinessKeyType">
    <xsd:annotation>
      <xsd:documentation> Gives details on the business
        key(s) of a Noun. </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element ref="KeyProperty" minOccurs="1" maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="name" type="StringType" use="required"/>
    <xsd:attributeGroup ref="LevelAware"/>
    <xsd:attribute name="kind" type="KeyKindEnum" use="required"/>
    <xsd:attribute name="unique" type="xsd:boolean" use="required"/>
  </xsd:complexType>
  <xsd:element name="BusinessKey" type="BusinessKeyType"/>

  <xsd:complexType name="KeyPropertyType">
    <xsd:annotation>
      <xsd:documentation> Identifies a property that is
        part of a Key. </xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="sequence" type="xsd:int" use="required"/>
    <xsd:attribute name="path" type="StringType"/>
  </xsd:complexType>
  <xsd:element name="KeyProperty" type="KeyPropertyType"/>

  <xsd:complexType name="NounDataType">
    <xsd:annotation>
      <xsd:documentation>Customized (Infor-level only)
        metadata about a Noun. Must be kept in sync with the POJO:
        com.infor.oagis.nouns.metadata.NounData
        </xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element name="CodePropertyPath" type="StringType" minOccurs="0" />
      <xsd:element name="DocumentIdPropertyPath" type="StringType" minOccurs="0" />
      <xsd:element name="NamePropertyPath" type="StringType" minOccurs="0" />
      <xsd:element name="ShortNamePropertyPath" type="StringType" minOccurs="0" />
      <xsd:element name="EffectiveDatePropertyPath" type="StringType" minOccurs="0" />
      <xsd:element name="StatusPropertyPath" type="StringType" minOccurs="0" />
      <xsd:element name="DimensionRequired" type="IndicatorType" minOccurs="0"/>
      <xsd:element name="DimensionRequiredPerInstance" type="IndicatorType" minOccurs="0"/>
    </xsd:sequence>
    <xsd:attribute name="tenant" type="StringType" use="required"/>
    <xsd:attribute name="bodVersion" type="StringType" />
    <xsd:attribute name="nounName" type="StringType" />
    <xsd:attribute name="nounKind" type="NounKindEnum" />
  </xsd:complexType>
  <xsd:element name="NounData" type="NounDataType"/>

  <xsd:complexType name="SubstitutionGroupType">
    <xsd:annotation>
      <xsd:documentation> Describes situation in which an
        alternate element is allowed to appear. </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="SchemaItemType">
        <xsd:sequence>
          <xsd:element name="NewElement" type="StringType"/>
          <xsd:element name="SubstitutedElement" type="StringType"/>
          <xsd:element name="NewElementType" type="StringType"/>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="SubstitutionGroup" type="SubstitutionGroupType"/>


  <xsd:element name="Enumeration" type="IndicatorType">
    <xsd:annotation>
      <xsd:documentation>Indicates if this elements values
        myust come from an enumerated list.</xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="Mandatory" type="IndicatorType">
    <xsd:annotation>
      <xsd:documentation>Default is False. Mandatory
        indicates that the element is required for a Sync BOD only. </xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="NotUsed" type="IndicatorType">
    <xsd:annotation>
      <xsd:documentation>Default is False. Indicates that
        this element should never be used in an Infor BOD.</xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="FlattenPoint" type="StringType">
    <xsd:annotation>
      <xsd:documentation>If set indicates that
        this element represents a sensible point at which to flatten for creating a simpler view of the data.
        The value is the path within the Noun to the key property that, when combined with key data "above"
        the flattening point, make the data below the flattening point unique.  For example consider a
        SalesOrder Noun with a OrderLine Element as a flattening point that calls out the LineNumber property as
        it key.
      </xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="Length" type="PositiveIntegerNumericType">
    <xsd:annotation>
      <xsd:documentation>Only used when the value has a
        fixed length.</xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="FractionDigits" type="PositiveIntegerNumericType">
    <xsd:annotation>
      <xsd:documentation>Total number of digits to the
        right of the decimal indicator.</xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="MaxLength" type="PositiveIntegerNumericType"/>
  <xsd:element name="MinLength" type="PositiveIntegerNumericType"/>
  <xsd:element name="TotalDigits" type="PositiveIntegerNumericType">
    <xsd:annotation>
      <xsd:documentation>Total number of digits allowed in
        a numeric value.</xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="CodeValue" type="StringType">
    <xsd:annotation>
      <xsd:documentation>This element is not used when the
        valid values of the code are defined in the code fortress. They are only used when the codes
        are defined in a code list or through documentation.</xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="DefaultValue" type="StringType">
    <xsd:annotation>
      <xsd:documentation>The default value for an element
        when the element is not included.</xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="InstanceValue" type="StringType">
		<xsd:annotation>
			<xsd:documentation source="http://schema.infor.com/Infor1.0">The value used when an instance
			of an element is created for a template.</xsd:documentation>
	  </xsd:annotation>
	</xsd:element>

  <xsd:element name="MaxInclusive" type="StringType">
    <xsd:annotation>
      <xsd:documentation>Minimum value for an element. The
        value entered is valid.</xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="MinInclusive" type="StringType">
    <xsd:annotation>
      <xsd:documentation>Minimum value for an element. The
        value entered is valid.</xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:element name="Pattern" type="StringType">
    <xsd:annotation>
      <xsd:documentation>A regular expression that can be
        used to validate data on input.</xsd:documentation>
    </xsd:annotation>
  </xsd:element>


  <xsd:simpleType name="CodeValidationEnum">
    <xsd:annotation>
      <xsd:documentation>Identifies the source of the
        valid values for a code. Local means that the customer can define the values, CodeList means
        that the valid values are in either the Infor or OAGIS CodeList.xsd file, Documentation
        means that the values are by convention and are only documented as the valid
      values.</xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Local"/>
      <xsd:enumeration value="CodeList"/>
      <xsd:enumeration value="Documentation"/>
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:element name="CodeValidationType" type="CodeValidationEnum"/>

  <xsd:simpleType name="CustomizationLevelEnum">
    <xsd:annotation>
      <xsd:documentation>Metadata customizations can be
        defined at various levels. INFOR - Additional standard metadata as defined by Infor BOD
        Librarians. APPLICATION - Metadata used by a specific application. CUSTOMER - Metadata
        specific to a given customer deployment. This is typically added by Infor PSO, but may
        possibily be added by the customer themselves.</xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="OAGIS"/>
      <xsd:enumeration value="Infor"/>
      <xsd:enumeration value="Application"/>
      <xsd:enumeration value="Customer"/>
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:simpleType name="GeneralizationEnum">
    <xsd:annotation>
      <xsd:documentation> Kind of generalization possible
        in XSD schemas. Extension in which additions to base are listed. Restriction in which
        differences from base are listed.</xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Extension"/>
      <xsd:enumeration value="Restriction"/>
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:simpleType name="TextEnum">
    <xsd:annotation>
      <xsd:documentation> Different kinds of localized
        text that can be defined. Label - UI label. ColumnLabel - UI grid column header. Description
        - General description. Help - Help text. </xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Label"/>
      <xsd:enumeration value="ColumnLabel"/>
      <xsd:enumeration value="Description"/>
      <xsd:enumeration value="Help"/>
      <xsd:enumeration value="FlattenPoint"/>
      <xsd:enumeration value="ShortLabel"/>
      <xsd:enumeration value="Note"/>
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:simpleType name="NounKindEnum">
    <xsd:annotation>
      <xsd:documentation>Category of noun.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Master"><xsd:annotation><xsd:documentation
         >Master data such as ItemMaster.</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="Transactional"><xsd:annotation><xsd:documentation
         >Transactional data such as PurchaseOrder.</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="Balance"><xsd:annotation><xsd:documentation
         >Balance data such as InventoryBalance.</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:simpleType name="KeyKindEnum">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="User"/>
      <xsd:enumeration value="System"/>
      <xsd:enumeration value="ParentToChild"/>
      <xsd:enumeration value="ChildToParent"/>
      <xsd:enumeration value="FlattenPoint"/>
    </xsd:restriction>
  </xsd:simpleType>

</xsd:schema>