<!ELEMENT DCML (
	Name, 
	ScreenName, 
	ShortDescription, 
	Object 
)>
<!ATTLIST DCML Type CDATA #REQUIRED>
<!ELEMENT Name (#PCDATA)>
<!ELEMENT ScreenName (#PCDATA)>
<!ELEMENT ShortDescription (#PCDATA)>
<!ELEMENT Object (
	Name, 
	ScreenName, 
	ShortDescription, 
	ParameterGroups?, 
	Behaviors?, 
	SubObjects?
)>
<!ATTLIST Object Type CDATA "null">
<!ELEMENT ParameterGroups (ParameterGroup)*>
<!ELEMENT ParameterGroup (
	Name, 
	ScreenName, 
	ShortDescription, 
	Parameters
)>
<!ELEMENT Parameters (Parameter)*>
<!ELEMENT Parameter (
	Name, 
	ScreenName, 
	ShortDescription, 
	Value
)>

<!-- Update this Entity |OR| list to add support for new types. -->
<!ENTITY % ValueTypes "#PCDATA|Hosts">
<!-- Definition for Hosts -->
<!ELEMENT Hosts (Host)*>
<!ELEMENT Host (IP, SubnetMask?)>
<!ELEMENT IP (#PCDATA)>
<!ELEMENT SubnetMask (#PCDATA)>

<!ELEMENT Value (%ValueTypes;)*>
<!ATTLIST Value DataType CDATA #REQUIRED>
<!ELEMENT Behaviors (Behavior)*>
<!ELEMENT Behavior (
	Name, 
	ScreenName, 
	ShortDescription
)>
<!ELEMENT SubObjects (Object)*>