<Schema name="BETestConfig" xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes">

<AttributeType name="filespec" dt:type="string" required="yes">
   <description>
   File specification.  Can include wildcard characters ? and *
   </description>
</AttributeType>

<AttributeType name="path" dt:type="string" required="yes">
   <description>
   Path to a file.  The path can include environment variables or
   values extracted from registry keys.
   </description>
</AttributeType>

<AttributeType name="recursive" dt:type="enumeration"
               dt:values="yes no" default="no">
   <description>
   Is path specified recursive or limited to the directory that is specified.
   </description>
</AttributeType>

<AttributeType name="alternatePath" dt:type="string" required="no">
   <description>
   For New Targets, the alternate path to which the file specification should be restored to
   </description>
</AttributeType>

<AttributeType name="logicalPath" dt:type="string">
   <description>
   Logical path for a Writer component.  This logical name uses backslash
   as separators to form a logical namespace hierarchy
   </description>
</AttributeType>

<AttributeType name="componentName" dt:type="string">
   <description>
   Name used to identify a Writer component.  May be qualified by a
   logical path.
   </description>
</AttributeType>

<AttributeType name="instanceName" dt:type="string">
    <description>
    If multiple instances of a writer are running, they must all have instance names.
    In this case, the instance name can be used to specify which writer instance should 
    receive restore events for a particular component.
    </description>
</AttributeType>

<AttributeType name="backupOptions" dt:type="string">
    <description>
    BETest can use this attribute to send a writer-specific
    string for each component being backed up
    </description>
</AttributeType>

<AttributeType name="restoreOptions" dt:type="string">
    <description>
    BETest can use this attribute to send a writer-specific
    string for each component being restored
    </description>
</AttributeType>

<AttributeType name="authoritativeRestore" dt:type="enumeration"
			dt:values = "yes no" default = "no">
    <description>
    BETest can use this attribute to specify that a component should be restored in an authoritative manner
    </description>
</AttributeType>

    <AttributeType name="rollForwardType" dt:type="enumeration" required = "no"
               dt:values="none all partial">
      <description>
        This attributes determines how far a writer should roll forward restored data
        or not.
      </description>
    </AttributeType>

    <AttributeType name="rollForwardPoint" dt:type="string" required = "no">
      <description>
        This attributes determines how far a writer should roll forward restored data
        or not.
      </description>
    </AttributeType>

    <AttributeType name="restoreName" dt:type="string" required = "no">
      <description>
      This attribute allows a requestor to rename a component at restore time.
      </description>
    </AttributeType>

<AttributeType name="additionalRestores" dt:type="enumeration"
               dt:values="yes no" default="no">
    <description>
    Indicates whether additional restores of this component should
    be expected.
    </description>
</AttributeType>

<AttributeType name="writerId" dt:type="uuid" required="yes">
    <description>
   Unique id to identify the writer.  Note that this identifies the
   writer class rather than a specific instance of the writer.
    </description>
</AttributeType>

<ElementType name="BETest" content="eltOnly" model="closed">
    <description>
    Configuration information for BETest backup/restore
    </description>
    
    <element type="Writer" minOccurs="1" maxOccurs="*" />
</ElementType>

<ElementType name="Writer" content="eltOnly" model="closed">
    <description>
    Information about a writer that is to be backed up/restored
    </description>
    
    <attribute type="writerId" required="yes"/>
    <element type="Component" minOccurs="1" maxOccurs="*" />
</ElementType>

<ElementType name="Component" content="eltOnly" model="closed">
    <description>
    Information about a component that is to be backed up/restored
    </description>
    
    <attribute type="logicalPath" required="no" />
    <attribute type="componentName" required="yes" />
    <attribute type="instanceName" required="no" />
    <attribute type="backupOptions" required="no" />
    <attribute type="restoreOptions" required="no" />
    <attribute type="authoritativeRestore" required="no" />        
    <attribute type="additionalRestores" default="no"/>
    <element type="SubComponent" minOccurs="0" maxOccurs="*" />
    <element type="NewTarget" minOccurs="0" maxOccurs="*" />
</ElementType>

<ElementType name="SubComponent" content="eltOnly" model="closed">
    <description>
    Indicates that BETest is not to restore the root component.  Rather
    BETest is to restore the list of selectable-for-restore components.
    </description>
    
    <attribute type="logicalPath" required="no" />
    <attribute type="componentName" required="yes" />
</ElementType>

<ElementType name="NewTarget" content="eltOnly" model="closed">
    <description>
    Indicates that BETest is to restore the specified file specification to an
    alternate location.
    </description>
    
    <attribute type="path" required="yes"/>
    <attribute type="filespec" required="yes"/>
    <attribute type="recursive" default="no"/>
    <attribute type="alternatePath" required="yes" />
</ElementType>

</Schema>
