8 Appendix C: XML Schema of XML Document Stored in msDFS-TargetListv2 Attribute

For more information about XML and XML schemas, see [XML] and [XMLSCHEMA], respectively.

 <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
             xmlns="http://schemas.microsoft.com/dfs/2007/03"
             targetNamespace="http://schemas.microsoft.com/dfs/2007/03"
             elementFormDefault="qualified">
   <xsd:annotation>
     <xsd:documentation xml:lang="en">
       Schema document for DFS targets (root or link) for use by the 
       domainV2 code in the DFS service. An XML document conforming 
       to this schema is stored as the value of an attribute of the 
       LDAP entry corresponding to a DFS namespace root or DFS link 
       and contains the information on the targets of that DFS 
       namespace root or DFS link.
  
       Conventions:
       - There is a target namespace for this schema document. 
           This means instances instances must also declare the same 
           namespace for them to be validated using this schema.
       - The elementFormDefault attribute is set to qualified so 
           that an instance conforming to this schema can set this 
           schema document's namespace as its default namespace and 
           have all all unqualified element-type names be considered 
           part of the default namespace.
       - Data are in elements, metadata in attributes.
  
     </xsd:documentation>
   </xsd:annotation>
  
   <xsd:attributeGroup name="VersionGroup">
      <xsd:attribute name="majorVersion" use="required">
       <xsd:simpleType>
         <xsd:restriction base="xsd:unsignedByte">
           <xsd:minInclusive value="2"/>
         </xsd:restriction>
       </xsd:simpleType>
     </xsd:attribute>
     <xsd:attribute name="minorVersion" type="xsd:unsignedByte" 
                    use="required"/>
  
   </xsd:attributeGroup>
  
   <xsd:simpleType name="TargetStateType">
     <xsd:annotation>
       <xsd:documentation xml:lang="en">
         Type used for specifying the state of a target.
  
         This is global to support extension or redefinition.
       </xsd:documentation>
     </xsd:annotation>
     <xsd:restriction base="xsd:token">
       <xsd:enumeration value="online"/>
       <xsd:enumeration value="offline"/>
     </xsd:restriction>
   </xsd:simpleType>
  
   <xsd:simpleType name="TargetPriorityClassType">
     <xsd:annotation>
       <xsd:documentation xml:lang="en">
         Type used for specifying the priority class of a target.
  
         This is global to support extension or redefinition.
       </xsd:documentation>
     </xsd:annotation>
     <xsd:restriction base="xsd:token">
       <xsd:enumeration value="siteCostNormal"/>
       <xsd:enumeration value="globalHigh"/>
       <xsd:enumeration value="siteCostHigh"/>
       <xsd:enumeration value="siteCostLow"/>
       <xsd:enumeration value="globalLow"/>
     </xsd:restriction>
   </xsd:simpleType>
  
   <xsd:simpleType name="TargetPriorityRankType">
     <xsd:annotation>
       <xsd:documentation xml:lang="en">
         Type used for specifying the priority rank of a target.
  
         This is global to support extension or redefinition.
       </xsd:documentation>
     </xsd:annotation>
     <xsd:restriction base="xsd:unsignedByte">
       <xsd:maxInclusive value="31"/>
     </xsd:restriction>
   </xsd:simpleType>
  
   <xsd:element name="targets">
     <xsd:complexType>
  
       <xsd:sequence>
  
         <xsd:element name="target" maxOccurs="unbounded">
           <xsd:complexType>
             <xsd:annotation>
               <xsd:documentation xml:lang="en">
                 This is an anonymous complex type with simple content: 
                 i.e. it allows character data only with no children. 
                 Of course, attributes are allowed.
  
                 A pattern restriction is used to ensure a UNC path. 
                 Pathname components cannot have embedded forward 
                 slashes (/).
               </xsd:documentation>
             </xsd:annotation>
  
             <xsd:simpleContent>
               <xsd:restriction base="xsd:anyType">
                 <xsd:simpleType>
                   <xsd:restriction base="xsd:string">
                     <xsd:pattern 
                          value="\\\\([^/\\])+(\\([^/\\])+)+(\\)?"/>
                   </xsd:restriction>
                 </xsd:simpleType>
  
                 <xsd:attribute name="state" type="TargetStateType" 
                                default="online"/>
                 <xsd:attribute name="priorityClass" 
                                type="TargetPriorityClassType" 
                                default="siteCostNormal"/>
                 <xsd:attribute name="priorityRank" 
                                type="TargetPriorityRankType" 
                                default="0"/>
  
               </xsd:restriction>
  
             </xsd:simpleContent>
  
           </xsd:complexType>
         </xsd:element>
  
       </xsd:sequence>
  
       <xsd:attributeGroup ref="VersionGroup"/>
  
       <xsd:attribute name="targetCount" use="required">
         <xsd:simpleType>
           <xsd:restriction base="xsd:unsignedInt">
             <xsd:minInclusive value="1"/>
           </xsd:restriction>
         </xsd:simpleType>
       </xsd:attribute>
  
       <xsd:attribute name="totalStringLengthInBytes" 
                      type="xsd:unsignedInt" use="required">
         <xsd:annotation>
           <xsd:documentation>
             To permit a single-pass parsing, this attribute contains 
             the length (in bytes) of all strings (including NULL 
             termination) that will be retained in that form in an 
             in-memory representation.
           </xsd:documentation>
         </xsd:annotation>
       </xsd:attribute>
  
     </xsd:complexType>
   </xsd:element>
  
 </xsd:schema>
  
 <!-- Editor settings. DO NOT delete -->
 <!-- vi: set ts=2 sw=2 filetype=xml: -->