<!--//////////////////////////////////////////////////////////////////////-->
<!-- $Header:$ -->
<!-- Mantis DTD for DCARRIER/XCARRIER -->
<!-- Version: 1.37 -->
<!-- Author: timhill -->
<!-- Copyright (c) 1999-2000 Microsoft Corp. All Rights Reserved. -->
<!-- Usage: <!DOCTYPE DCARRIER SYSTEM "mantis.dtd"> -->
<!-- Usage: <!DOCTYPE XCARRIER SYSTEM "mantis.dtd"> -->
<!--//////////////////////////////////////////////////////////////////////-->

<!--//////////////////////////////////////////////////////////////////////-->
<!-- DTD revision as entity -->
<!ENTITY DTDRev					"11" >

<!--//////////////////////////////////////////////////////////////////////-->
<!-- Format types as enumeration and corresponding parameter entities -->

<!--  1      2      3       4       5     6    7      8      9    10 -->
<!ENTITY % PropFormatEnum
	"(Binary|String|Integer|Boolean|Multi|Expr|Script|Object|GUID|TimeDate)"
>

<!-- Formats as parameter entities for attributes -->
<!ENTITY % A_BINARY				"CDATA" >
<!ENTITY % A_STRING				"CDATA" >
<!ENTITY % A_INTEGER			"CDATA" >
<!ENTITY % A_BOOLEAN			"(0|1|False|True|No|Yes|Off|On|-1)" >
<!ENTITY % A_MULTI				"CDATA" >
<!ENTITY % A_EXPR				"CDATA" >
<!ENTITY % A_SCRIPT				"CDATA" >
<!ENTITY % A_OBJECT				"CDATA" >
<!ENTITY % A_GUID				"CDATA" >
<!ENTITY % A_TIMEDATE			"CDATA" >

<!-- Formats as parameter entities for elements -->
<!ENTITY % E_BINARY				"(#PCDATA)" >
<!ENTITY % E_STRING				"(#PCDATA)" >
<!ENTITY % E_INTEGER			"(#PCDATA)" >
<!ENTITY % E_BOOLEAN			"(#PCDATA)" >
<!ENTITY % E_MULTI				"(#PCDATA)" >
<!ENTITY % E_EXPR				"(#PCDATA)" >
<!ENTITY % E_SCRIPT				"(#PCDATA)" >
<!ENTITY % E_OBJECT				"(#PCDATA)" >
<!ENTITY % E_GUID				"(#PCDATA)" >
<!ENTITY % E_TIMEDATE			"(#PCDATA)" >

<!-- This "type" is a hint that we should use <![CDATA[...]]> brackets -->
<!ENTITY % PROPDATA				"(#PCDATA)" >

<!--//////////////////////////////////////////////////////////////////////-->
<!-- Miscellaneous enumerations -->

<!ENTITY % VarTypeEnum
	"(VT_BSTR|VT_EMPTY|VT_UI1|VT_I2|VT_I4|VT_R4|VT_R8|VT_CY|VT_DATE|VT_BOOL|VT_DISPATCH|VT_UNKNOWN|VT_CLSID|VT_UI1_ARRAY)"
>

<!--  1       2        3          4 -->
<!ENTITY % GroupClassEnum
	"(Package|Category|Dependency|RepositorySet)"
>

<!--  1       2      3     4 -->
<!ENTITY % DependencyClassEnum
	"(Include|Before|After|Registry)"
>

<!--  0         1          2          3         4   5 -->
<!ENTITY % DependencyTypeEnum
	"(FromGroup|ExactlyOne|AtLeastOne|ZeroOrOne|All|None)"
>

<!--//////////////////////////////////////////////////////////////////////-->
<!-- Standard properties (shared by all primary objects) -->
<!ENTITY % StdProps
	"(DISPLAYNAME?,VERSION?,DESCRIPTION?,COPYRIGHT?,VENDOR?,OWNERS?,AUTHORS?,DATECREATED?,DATEREVISED?)"
>
<!ELEMENT DISPLAYNAME			%E_STRING; >
<!ELEMENT VERSION				%E_STRING; >
<!ELEMENT DESCRIPTION			%E_STRING; >
<!ELEMENT COPYRIGHT				%E_STRING; >
<!ELEMENT VENDOR				%E_STRING; >
<!ELEMENT OWNERS				%E_STRING; >
<!ELEMENT AUTHORS				%E_STRING; >
<!ELEMENT DATECREATED			%E_TIMEDATE; >
<!ELEMENT DATEREVISED			%E_TIMEDATE; >

<!--//////////////////////////////////////////////////////////////////////-->
<!-- Generic PROPERTY element for extended [X] properties -->
<!ELEMENT PROPERTY				%PROPDATA; >
<!ATTLIST PROPERTY
	Name						%A_STRING;			#REQUIRED
	Format						%PropFormatEnum;	#IMPLIED
>

<!--//////////////////////////////////////////////////////////////////////-->
<!-- Generic RESOURCE secondary element -->
<!-- Describes a generic resource (set of properties) -->
<!-- Note that a resource always requires at least one property -->
<!ELEMENT RESOURCE
	(PROPERTY*,DISPLAYNAME?,DESCRIPTION?)
>
<!ATTLIST RESOURCE
	Name						%A_STRING;			#IMPLIED
	ResTypeVSGUID				%A_GUID;			#REQUIRED
	BuildTypeMask				%A_INTEGER;			#REQUIRED
	Localize					%A_BOOLEAN;			"False"
	Disabled					%A_BOOLEAN;			"False"
>

<!--//////////////////////////////////////////////////////////////////////-->
<!-- SCRIPTTEXT [E] property -->
<!-- Describes script text for Platform, Component etc. objects -->
<!ELEMENT SCRIPTTEXT			%E_STRING; >
<!ATTLIST SCRIPTTEXT
	language					%A_STRING;			#REQUIRED
	src							%A_STRING;			#IMPLIED
	encoded						%A_BOOLEAN;			"False"
>

<!--//////////////////////////////////////////////////////////////////////-->
<!-- TOOLINFO element -->
<!-- Not used by CMI, can be used by authoring tools in any way desired -->
<!-- By convention, this element contains an entire XML file in CDATA -->
<!ELEMENT TOOLINFO				(#PCDATA) >
<!ATTLIST TOOLINFO
	ToolName					%A_STRING;			#REQUIRED
>

<!--//////////////////////////////////////////////////////////////////////-->
<!-- Miscellaneous element [E] properties -->
<!ELEMENT SRCPATH				%E_STRING; >
<!ELEMENT SRCNAME				%E_STRING; >
<!ELEMENT DSTPATH				%E_STRING; >
<!ELEMENT DSTNAME				%E_STRING; >
<!ELEMENT COMMENT				%E_STRING; >

<!--//////////////////////////////////////////////////////////////////////-->
<!-- DCARRIER (root) element -->
<!-- Used to encapaulate all the SLD file (database carrier) contents -->
<!ELEMENT DCARRIER
	(TOOLINFO?,(PLATFORM|REPOSITORY|GROUP|COMPONENT|RESTYPE)*)
>
<!ATTLIST DCARRIER
	CarrierRevision				%A_INTEGER;			#REQUIRED
	DTDRevision					%A_INTEGER;			"&DTDRev;"
>

<!--//////////////////////////////////////////////////////////////////////-->
<!-- XCARRIER (root) element -->
<!-- Used to encapaulate all the SLX file (configuration) contents -->
<!ELEMENT XCARRIER
	(TOOLINFO?,CONFIG)
>
<!ATTLIST XCARRIER
	CarrierRevision				%A_INTEGER;			#REQUIRED
	DTDRevision					%A_INTEGER;			"&DTDRev;"
>

<!--//////////////////////////////////////////////////////////////////////-->
<!-- PLATFORM primary element (SLD) -->
<!-- Describes a Platform, e.g. Windows 2000 Embedded (x86) - US English -->
<!ELEMENT PLATFORM
	(SCRIPTTEXT?,PROPERTY*,%StdProps;)
>
<!ATTLIST PLATFORM
	PlatformVSGUID				%A_GUID;			#REQUIRED
	PlatformVIGUID				%A_GUID;			#REQUIRED
	Revision					%A_INTEGER;			#REQUIRED
	DefaultProtoVIGUID			%A_GUID;			#REQUIRED
	BaseComponentVIGUID			%A_GUID;			#REQUIRED
	LCID						%A_INTEGER;			"1033"	
>

<!--//////////////////////////////////////////////////////////////////////-->
<!-- REPOSITORY primary element (SLD) -->
<!-- Describes a repository, i.e. the source location of files -->
<!ELEMENT REPOSITORY
	(SRCPATH?,PROPERTY*,%StdProps;,GROUPMEMBER*)
>
<!ATTLIST REPOSITORY
	RepositoryVSGUID			%A_GUID;			#REQUIRED
	Revision					%A_INTEGER;			#REQUIRED
	PlatformGUID				%A_GUID;			#REQUIRED
	BuildType					%A_INTEGER;			#REQUIRED
>

<!--//////////////////////////////////////////////////////////////////////-->
<!-- GROUP primary element (SLD) -->
<!-- Describes a group which collects components into related sets -->
<!ELEMENT GROUP
	(PROPERTY*,%StdProps;)
>
<!ATTLIST GROUP
	GroupVSGUID					%A_GUID;			#REQUIRED
	Revision					%A_INTEGER;			#REQUIRED
	PlatformGUID				%A_GUID;			#REQUIRED
	GroupClass					%GroupClassEnum;	#REQUIRED
	DefaultDependencyType		%DependencyTypeEnum;	"All"
>

<!--//////////////////////////////////////////////////////////////////////-->
<!-- COMPONENT primary element (SLD) -->
<!-- Describes a component and it's associated secondary objects -->
<!-- NOTE: "RepositoryVSGUID" is polymorphic and may reference a group -->
<!ELEMENT COMPONENT
	(SCRIPTTEXT?,HTMLTEXT?,HELPCONTEXT?,PROPERTY*,%StdProps;,(RESOURCE|GROUPMEMBER|DEPENDENCY)*)
>
<!ATTLIST COMPONENT
	ComponentVSGUID				%A_GUID;			#REQUIRED
	ComponentVIGUID				%A_GUID;			#REQUIRED
	Revision					%A_INTEGER;			#REQUIRED
	PlatformGUID				%A_GUID;			#REQUIRED
	PrototypeVIGUID				%A_GUID;			#IMPLIED
	RepositoryVSGUID			%A_GUID;			#REQUIRED
	Visibility					%A_INTEGER;			"1000"
	MultiInstance				%A_BOOLEAN;			"False"
	Released					%A_BOOLEAN;			"True"
	Editable					%A_BOOLEAN;			"True"
	HTMLTitle					%A_STRING;			#IMPLIED
	HTMLFinal					%A_BOOLEAN;			"False"
	IsMacro						%A_BOOLEAN;			"False"
>
<!ELEMENT HTMLTEXT				%E_STRING; >
<!ATTLIST HTMLTEXT
	src							%A_STRING;			#IMPLIED
>
<!ELEMENT HELPCONTEXT			%E_STRING; >
<!ATTLIST HELPCONTEXT
	src							%A_STRING;			#IMPLIED
>

<!--//////////////////////////////////////////////////////////////////////-->
<!-- RESTYPE primary element (SLD) -->
<!-- Describes a RESOURCE secondary object type -->
<!ELEMENT RESTYPE
	(SCRIPTTEXT?,PROPTYPE+,DISPLAYNAME?,DESCRIPTION?)
>
<!ATTLIST RESTYPE
	ResTypeVSGUID				%A_GUID;			#REQUIRED
	Revision					%A_INTEGER;			#REQUIRED
	PlatformGUID				%A_GUID;			#REQUIRED
	Name						%A_STRING;			#REQUIRED
>

<!--//////////////////////////////////////////////////////////////////////-->
<!-- PROPTYPE secondary element -->
<!-- Describes an individual property in a resource type -->
<!-- NOTE: "Order" is no longer used and is present only for compatibility -->
<!ELEMENT PROPTYPE				%PROPDATA; >
<!ATTLIST PROPTYPE
	Name						%A_STRING;			#REQUIRED
	Format						%PropFormatEnum;	"String"
	Order						%A_INTEGER;			"0"
>

<!--//////////////////////////////////////////////////////////////////////-->
<!-- GROUPMEMBER secondary element -->
<!-- Describes a group membership for a component -->
<!ELEMENT GROUPMEMBER			EMPTY >
<!ATTLIST GROUPMEMBER
	GroupVSGUID					%A_GUID;			#REQUIRED
>

<!--//////////////////////////////////////////////////////////////////////-->
<!-- DEPENDENCY secondary element -->
<!-- Describes a dependency for a component -->
<!ELEMENT DEPENDENCY
	(PROPERTY*,DISPLAYNAME?,DESCRIPTION?)
>
<!ATTLIST DEPENDENCY
	Class						%DependencyClassEnum;	"Include"
	Type						%DependencyTypeEnum;	"All"
	DependOnGUID				%A_GUID;			#REQUIRED
	MinRevision					%A_INTEGER;			"0"
>

<!--//////////////////////////////////////////////////////////////////////-->
<!-- CONFIG primary element (SLX) -->
<!-- Describes a configuration -->
<!ELEMENT CONFIG
	(PROPERTY*,%StdProps;,(RESOURCE|INSTANCE)*)
>
<!ATTLIST CONFIG
	Revision					%A_INTEGER;			#REQUIRED
	PlatformVSGUID				%A_GUID;			#REQUIRED
	Generation					%A_INTEGER;			#REQUIRED
	BuildType					%A_INTEGER;			#REQUIRED
>

<!--//////////////////////////////////////////////////////////////////////-->
<!-- INSTANCE secondary element -->
<!ELEMENT INSTANCE
	(COMPCHAIN,COMMENT,PROPERTY*,(RESOURCE|DEPENDENCY)*)
>
<!ATTLIST INSTANCE
	Visibility					%A_INTEGER;			"1000"
	MultiInstance				%A_BOOLEAN;			"False"
	Editable					%A_BOOLEAN;			"True"
	InstanceID					%A_INTEGER;			"0"
	IsBaseComponent				%A_BOOLEAN;			"False"
	IsMacro						%A_BOOLEAN;			"False"
>
<!ELEMENT COMPCHAIN
	(COMPITEM*)
>
<!ELEMENT COMPITEM EMPTY >
<!ATTLIST COMPITEM
	ComponentVSGUID				%A_GUID;			#REQUIRED
>

<!--//////////////////////////////////////////////////////////////////////-->
