home *** CD-ROM | disk | FTP | other *** search
- <?xml version="1.0" encoding="utf-8" ?>
- <xs:schema elementFormDefault="qualified"
- xmlns:xs="http://www.w3.org/2001/XMLSchema">
-
- <!--
- // This schema definition file can be used to validate
- // two types of SCW knowledge base files:
- //
- // 1. KB files - Raw knowledge base files that contain
- // no localization or registration information.
- // 2. Loc files - Raw localization files that contain no
- // knowledge base or registration information.
- //
- // This schema is included in KbRegistrationInfo.xsd which
- // validates KB Registration Info files - Prepared knowledge
- // base files that contain registration information and
- // localization text for one or more languanges.
- -->
-
-
- <!-- Including the firewall schema -->
- <xs:include schemaLocation="FirewallPolicy.xsd"/>
-
- <!-- Root element for raw KB. -->
- <xs:element name="SCWKnowledgeBase"
- type="KBDataType"/>
-
- <!-- Root element for raw localization file. -->
- <xs:element name="SCWLocalization"
- type="KBLocalizationDataType"/>
-
- <xs:complexType name="ApplicableVersionsType">
- <xs:sequence>
- <!-- A single KB can support multiple versions
- or service pack levels. -->
- <xs:element name="Version"
- type="KBExtVersionType"
- minOccurs="1"
- maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
-
- <!-- A specific Windows OS Version and Service Pack
- level that is supported by the KB extension. -->
- <xs:complexType name="KBExtVersionType">
- <xs:attribute name="OSVersionMajorInfo"
- type="xs:nonNegativeInteger"
- use="required"/>
- <xs:attribute name="OSVersionMinorInfo"
- type="xs:nonNegativeInteger"
- use="required"/>
- <xs:attribute name="ServicePackMajor"
- type="xs:nonNegativeInteger"
- use="required"/>
- <xs:attribute name="ServicePackMinor"
- type="xs:nonNegativeInteger"
- use="required"/>
- </xs:complexType>
-
- <xs:complexType name="KBDataType">
- <xs:sequence>
- <!-- Roles are displayed on the Server Roles
- or Client Roles Page -->
- <xs:element name="Roles"
- type="RolesType"
- minOccurs="0"
- maxOccurs="1"/>
-
- <!-- Tasks are displayed on the Administration
- and other Options page. -->
- <xs:element name="Tasks"
- type="TasksType"
- minOccurs="0"
- maxOccurs="1"/>
-
- <!-- The services section provides further information
- (e.g. Startup Mode) about services that are referenced
- by all roles and tasks. -->
- <xs:element name="Services"
- type="ServicesType"
- minOccurs="0"
- maxOccurs="1"/>
-
- <!-- This is where the list of Firewall rules
- referenced by all roles goes. -->
- <xs:element name="Firewall"
- type="FirewallType"
- minOccurs="0"
- maxOccurs="1">
-
- </xs:element>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="RolesType">
- <xs:sequence>
- <xs:element name="Role"
- type="RoleType"
- minOccurs="0"
- maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="RoleType">
- <xs:all>
- <!-- A Server Role can only depend on other server roles.
- A Client Role can depend on Server Roles or Client Roles. -->
- <xs:element name="DependsOn"
- type="RoleDependsOnType"
- minOccurs="0"
- maxOccurs="1"/>
-
- <!-- By default, a Role is satisfied if all services for
- the role are installed. Use the satisfiable element
- (and provide a function name and dll path) to override this
- default behavior. If Role A depends on Role B and
- Role B is not satisfied, then Role A is not satisfied. -->
- <xs:element name="Satisfiable"
- type="SatisfiableType"
- minOccurs="0"
- maxOccurs="1"/>
-
- <!-- If a role is satisfied, the selected element determines
- whether the role is checked by default. If Role A depends
- on Role B and Role B is not checked by default, then Role A
- is not checked by default. -->
- <xs:element name="Selected"
- type="SelectedType"
- minOccurs="1"
- maxOccurs="1"/>
-
- <!-- References to services that are required by the role. -->
- <xs:element name="Services"
- type="RefServicesType"
- minOccurs="0"
- maxOccurs="1"/>
-
- <!-- References to firewall rules used by the role -->
- <xs:element name="Firewall"
- type="RefFirewallType"
- minOccurs="0"
- maxOccurs="1">
- <xs:unique name="UniqueFirewallRuleRefIdConstraint">
- <xs:selector xpath="FirewallRule"/>
- <xs:field xpath="@Id"/>
- </xs:unique>
-
- </xs:element>
- </xs:all>
-
- <!-- Indicates whether the role is a Server Role, Client Role,
- or Independent Role. Independent Roles are not displayed
- by the SCW UI. -->
- <xs:attribute name="Type"
- type="RoleTypeType"
- use="required"/>
-
- <!-- Internal Name of the Role. All internal names
- are case-sensitive. -->
- <xs:attribute name="Name"
- type="NameType"
- use="required"/>
-
- <!-- Indicates whether or not the network security portion of the
- wizard is skipped when the role is selected. Default is not
- to skip. -->
- <xs:attribute name="PrecludeNetworkSecurity"
- type="PrecludeNetworkSecurityType"
- use="optional"/>
-
- <!-- Whether the role is Enabled or Disabled. -->
- <xs:attribute name="Status"
- type="StatusType"
- use="required"/>
- </xs:complexType>
-
- <xs:complexType name="SelectedType">
- <!-- If a role is satisfied, the Selected element
- determines whether the role is checked by default.
- The Value attribute for the Selected element
- must be TRUE, FALSE, DEFAULT, or CUSTOM. -->
- <xs:attribute name="Value"
- type="SelectedValueType"
- use="required"/>
-
- <!-- FunctionName and DLLPath are only required if the
- Value attribute is set to "CUSTOM". The Function
- must return Boolean. -->
- <xs:attribute name="FunctionName"
- type="xs:string"
- use="optional"/>
- <xs:attribute name="DLLPath"
- type="xs:string"
- use="optional"/>
- </xs:complexType>
-
- <xs:complexType name="SatisfiableType">
- <!-- The Satisfiable element only exists in order to
- override the default method for determining
- whether a role is satisfied.
- If the Satisfiable element exists, a Function
- Name and DLL Path are required to specify the
- code that implements the override logic.
- The function must return Boolean. -->
- <xs:attribute name="FunctionName"
- type="xs:string"
- use="required"/>
- <xs:attribute name="DLLPath"
- type="xs:string"
- use="required"/>
- </xs:complexType>
-
- <xs:complexType name="RoleDependsOnType">
- <xs:sequence>
- <!-- If the DependsOn element exists for a role,
- it must contain a Roles element. -->
- <xs:element name="Roles"
- type="RoleDependsOnRolesType"
- minOccurs="1"
- maxOccurs="1"/>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="RoleDependsOnRolesType">
- <xs:sequence>
- <!-- If the DependsOn element exists, there must be at
- least one role inside the contained Roles element. -->
- <xs:element name="Role"
- type="EntityReferenceType"
- minOccurs="1"
- maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="EntityReferenceType">
- <!-- Case-sensitive name of a role that this
- Role (or Task) Depends On -->
- <xs:attribute name="Name"
- type="NameType"
- use="required"/>
- </xs:complexType>
-
- <xs:complexType name="RefServicesType">
- <xs:sequence>
- <xs:element name="Service"
- type="RefServiceType"
- minOccurs="0"
- maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="RefServiceType">
- <!-- Service names correspond to the internal service names
- used by the Service Control Manager. Service names are
- case-insensitive with respect to the Service Control
- Manager names but are case-sensitive within the KB. -->
- <xs:attribute name="Name"
- type="NameType"
- use="required"/>
-
- <xs:attribute name="PlatformID"
- type="PlatformType"
- use="optional"/>
- </xs:complexType>
-
- <xs:complexType name="RefFirewallType">
- <xs:sequence>
- <!-- Ids (guids) pointing to the actual firewall rules -->
- <xs:element name="FirewallRule"
- type="RefFirewallRuleType"
- minOccurs="0"
- maxOccurs="unbounded">
-
- </xs:element>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="RefFirewallRuleType">
- <xs:attribute name="Id"
- type="xs:string"
- use="required"/>
- </xs:complexType>
-
- <xs:complexType name="TasksType">
- <xs:sequence>
- <xs:element name="Task"
- type="TaskType"
- minOccurs="0"
- maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="TaskType">
- <xs:all>
- <!-- Tasks appear on the "Administration and
- other Options" Page. A task is defined
- very much like a role. Exceptions noted below: -->
-
- <!-- A task cannot depend on another task. A task can
- only depend on a Server Role or Client Role. -->
- <xs:element name="DependsOn"
- type="TaskDependsOnType"
- minOccurs="0"
- maxOccurs="1"/>
-
- <!-- By default, a task is satisfied if all services required
- for the task are installed. Use the satisfiable element
- (and provide a function name and dll path) to override this
- default behavior. If Task A depends on Role A and Role A
- is not selected, then Task A is not displayed. -->
- <xs:element name="Satisfiable"
- type="SatisfiableType"
- minOccurs="0"
- maxOccurs="1"/>
-
- <!-- If a task is satisfied, the selected element determines
- whether the task is checked by default. If Task A depends
- on Role A and Role A is not selected, then Task A is not
- displayed. -->
- <xs:element name="Selected"
- type="SelectedType"
- minOccurs="1"
- maxOccurs="1"/>
-
- <!-- Services that are required by the task. -->
- <xs:element name="Services"
- type="RefServicesType"
- minOccurs="0"
- maxOccurs="1"/>
-
- <!-- Firewall rules required by the task. -->
- <xs:element name="Firewall"
- type="RefFirewallType"
- minOccurs="0"
- maxOccurs="1"/>
- </xs:all>
-
- <!-- Unlike Roles, the type attribute for a task is optional
- and the only type supported is "RemoteAdmin". -->
- <xs:attribute name="Type"
- type="TaskTypeType"
- use="optional"/>
-
- <!-- Internal Name of the Task. All internal
- names are case-sensitive. -->
- <xs:attribute name="Name"
- type="NameType"
- use="required"/>
-
- <!-- Indicates whether or not the network security portion of
- the wizard is skipped when the task is selected. Default
- is not to skip. -->
- <xs:attribute name="PrecludeNetworkSecurity"
- type="PrecludeNetworkSecurityType"
- use="optional"/>
- </xs:complexType>
-
- <xs:complexType name="TaskDependsOnType">
- <xs:sequence>
- <!-- If the DependsOn element exists for a task,
- it must contain a Roles element -->
- <xs:element name="Roles"
- type="TaskDependsOnRolesType"
- minOccurs="1"
- maxOccurs="1"/>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="TaskDependsOnRolesType">
- <xs:sequence>
- <!-- If the DependsOn element exists, it must reference
- the case-sensitive internal name of at least one role.
- A Task that DependsOn a role is displayed only if the
- corresponding role is selected. -->
- <xs:element name="Role"
- type="EntityReferenceType"
- minOccurs="1"
- maxOccurs="unbounded"/>
- </xs:sequence>
-
- <!-- The DependsOn relation for Tasks can be evaluated
- using AND or OR logic. For example, Task A DependsOn
- Role A or Role B. If not specified, AND logic is used -->
- <xs:attribute name="Logic"
- type="LogicType"
- use="optional"/>
- </xs:complexType>
-
-
- <xs:complexType name="ServicesType">
- <xs:sequence>
- <!-- The Services section contains additional information
- about the services that are associated with Roles or Tasks.
- Not every service associated with a Role or Task needs to be
- defined in the Services section. Specifically, if a service
- that ships on the Windows CD is associated with a Role or Task
- in an extension KB, then that service should not be specified
- in the Services section of the extension KB. The reason for
- this is that all services that ship on the Windows CD should
- already be defined in the root KB that the extension KB is
- extending. -->
- <xs:element name="Service"
- type="ServiceType"
- minOccurs="1"
- maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="ServiceType">
- <xs:all>
- <xs:element name="Optional"
- type="OptionalType"
- minOccurs="1"
- maxOccurs="1"/>
-
- <!-- Indicates the startup mode that should be used for the
- service when the service is enabled by a Role or task. -->
- <xs:element name="Startup_Default"
- type="Startup_DefaultType"
- minOccurs="1"
- maxOccurs="1"/>
-
- <xs:element name="Cluster_Startup_Default"
- type="Startup_DefaultType"
- minOccurs="0"
- maxOccurs="1"/>
- </xs:all>
-
- <!-- The internal name of the service as it is known to the service
- control manager. The service name is case-sensitive within the
- KB, but not with respect to the service control manager name. -->
- <xs:attribute name="Name"
- type="NameType"
- use="required"/>
- </xs:complexType>
-
- <xs:complexType name="KBLocalizationDataType">
-
- <!-- Localization information for a prepared KB. -->
- <xs:all>
-
- <!-- Localization information (Displaynames, descriptions, etc.)
- should be supplied for all Roles, Tasks, and Services
- defined in the KB. -->
- <xs:element name="RoleLocalization"
- type="RoleLocalizationType"
- minOccurs="0"
- maxOccurs="1"/>
- <xs:element name="TaskLocalization"
- type="TaskLocalizationType"
- minOccurs="0"
- maxOccurs="1"/>
- <xs:element name="ServiceLocalization"
- type="ServiceLocalizationType"
- minOccurs="0"
- maxOccurs="1"/>
- </xs:all>
-
- <xs:attribute name="CultureName"
- type="xs:string"
- use="required"/>
- </xs:complexType>
-
- <xs:complexType name="RoleLocalizationType">
- <xs:sequence>
- <!-- If the RoleLocalization element exists, there must
- be localization information for at least one role. -->
- <xs:element name="Role"
- type="RoleLocType"
- minOccurs="1"
- maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="RoleLocType">
- <xs:all>
-
- <!-- Displayname of the role. -->
- <xs:element name="DisplayName"
- type="xs:string"
- minOccurs="1"
- maxOccurs="1"/>
-
- <!-- A brief description of the role. -->
- <xs:element name="Description"
- type="xs:string"
- minOccurs="1"
- maxOccurs="1"/>
-
- <!-- Optional Advanced information about the role. -->
- <xs:element name="Details"
- type="xs:string"
- minOccurs="0"
- maxOccurs="1"/>
-
- <!-- Optional SCW-specific information about the role. -->
- <xs:element name="SCWDetails"
- type="xs:string"
- minOccurs="0"
- maxOccurs="1"/>
- </xs:all>
-
- <!-- Case-sensitive internal name of the Client or Server
- Role for which localization information is being provided. -->
- <xs:attribute name="Name"
- type="NameType"
- use="required"/>
- </xs:complexType>
-
- <xs:complexType name="TaskLocalizationType">
- <xs:sequence>
- <!-- If the TaskLocalization element exists, there must
- be localization information for at least one task. -->
- <xs:element name="Task"
- type="TaskLocType"
- minOccurs="1"
- maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="TaskLocType">
- <xs:all>
- <!-- Displayname of the task. -->
- <xs:element name="DisplayName"
- type="xs:string"
- minOccurs="1"
- maxOccurs="1"/>
-
- <!-- A brief description of the task. -->
- <xs:element name="Description"
- type="xs:string"
- minOccurs="1"
- maxOccurs="1"/>
-
- <!-- Optional Advanced information about the task. -->
- <xs:element name="Details"
- type="xs:string"
- minOccurs="0"
- maxOccurs="1"/>
-
- <!-- Optional SCW-specific information about the task. -->
- <xs:element name="SCWDetails"
- type="xs:string"
- minOccurs="0"
- maxOccurs="1"/>
- </xs:all>
-
- <!-- Case-sensitive internal name of the Task for which
- localization information is being provided. -->
- <xs:attribute name="Name"
- type="NameType"
- use="required"/>
- </xs:complexType>
-
- <xs:complexType name="ServiceLocalizationType">
- <xs:sequence>
- <!-- If the ServiceLocalization element exists, there must
- be localization information for at least one service. -->
- <xs:element name="Service"
- type="ServiceLocType"
- minOccurs="1"
- maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
-
- <xs:complexType name="ServiceLocType">
- <xs:all>
- <!-- Display Name of the service. Should be the same as
- the Display Name exposed in service control manager. -->
- <xs:element name="DisplayName"
- type="NameType"
- minOccurs="0"
- maxOccurs="1"/>
-
- <!-- Description of the service. Should be the same as
- the description exposed in service control manager. -->
- <xs:element name="Description"
- type="xs:string"
- minOccurs="0"
- maxOccurs="1"/>
- </xs:all>
-
- <!-- Case-sensitive internal name of the service for which
- localization information is being provided. -->
- <xs:attribute name="Name"
- type="NameType"
- use="required"/>
- </xs:complexType>
-
- <xs:simpleType name="NameType">
- <xs:restriction base="xs:string"/>
- </xs:simpleType>
-
- <xs:simpleType name="PlatformType">
- <xs:restriction base="xs:string">
- <xs:enumeration value="64"/>
- <xs:enumeration value="32"/>
- </xs:restriction>
- </xs:simpleType>
-
- <xs:simpleType name="RoleTypeType">
- <xs:restriction base="xs:string">
- <xs:enumeration value="Server"/>
- <xs:enumeration value="Client"/>
- <xs:enumeration value="Independent"/>
- </xs:restriction>
- </xs:simpleType>
-
- <xs:simpleType name="PrecludeNetworkSecurityType">
- <xs:restriction base="xs:string">
- <xs:enumeration value="TRUE"/>
- <xs:enumeration value="True"/>
- <xs:enumeration value="FALSE"/>
- <xs:enumeration value="False"/>
- </xs:restriction>
- </xs:simpleType>
-
- <xs:simpleType name="SelectedValueType">
- <xs:restriction base="xs:string">
- <xs:enumeration value="DEFAULT"/>
- <xs:enumeration value="TRUE"/>
- <xs:enumeration value="FALSE"/>
- <xs:enumeration value="CUSTOM"/>
- </xs:restriction>
- </xs:simpleType>
-
- <xs:simpleType name="TaskTypeType">
- <xs:restriction base="xs:string">
- <xs:enumeration value="RemoteAdmin"/>
- </xs:restriction>
- </xs:simpleType>
-
- <xs:simpleType name="LogicType">
- <xs:restriction base="xs:string">
- <xs:enumeration value="AND"/>
- <xs:enumeration value="And"/>
- <xs:enumeration value="OR"/>
- <xs:enumeration value="Or"/>
- </xs:restriction>
- </xs:simpleType>
-
- <xs:simpleType name="OptionalType">
- <xs:restriction base="xs:string">
- <xs:enumeration value="TRUE"/>
- <xs:enumeration value="True"/>
- <xs:enumeration value="FALSE"/>
- <xs:enumeration value="False"/>
- </xs:restriction>
- </xs:simpleType>
-
- <xs:simpleType name="Startup_DefaultType">
- <xs:restriction base="xs:string">
- <xs:enumeration value="Automatic"/>
- <xs:enumeration value="Manual"/>
- <xs:enumeration value="Ignored"/>
- <xs:enumeration value="Disabled"/>
- </xs:restriction>
- </xs:simpleType>
-
- <xs:simpleType name="StatusType">
- <xs:restriction base="xs:string">
- <xs:enumeration value="Enabled"/>
- <xs:enumeration value="Disabled"/>
- </xs:restriction>
- </xs:simpleType>
- </xs:schema>
-
-