<!-- DTD for configurable library description file verion 1.0 -->

<!ELEMENT XMLDOCINFO (LibraryModule)>
	<!ELEMENT LibraryModule (DeviceFamilies, Plugin*, ModuleParameters*, ClaimedPeripherals*, PublicMethods*, LibraryFiles*, Scripts*)>
		<!ELEMENT DeviceFamilies (DeviceFamily*) >
			<!ELEMENT DeviceFamily (Device*) >
				<!ELEMENT Device ANY>
		<!ELEMENT Plugin ANY>
		<!ELEMENT ModuleParameters (ParameterGroup*)>
			<!ELEMENT ParameterGroup (ParameterSubgroup*) >
				<!ELEMENT ParameterSubgroup (Parameter*) >
					<!ELEMENT Parameter (selections*, Validation*, OnlineHelps*, CodeComments*, Events*) >
						<!ELEMENT selections (selection*) >	
							<!ELEMENT selection (#PCDATA) >
						<!ELEMENT Validation (Range*, InputDataFormat*) >	
							<!ELEMENT Range (#PCDATA) >
							<!ELEMENT InputDataFormat (#PCDATA) >							
						<!ELEMENT OnlineHelps (Help*) >	
							<!ELEMENT Help (#PCDATA) >
						<!ELEMENT CodeComments (Comment*) >	
							<!ELEMENT Comment (#PCDATA) >	
						<!ELEMENT Events (Event*) >	
							<!ELEMENT Event (#PCDATA) >			
		
		<!ELEMENT ClaimedPeripherals (Peripheral) >
			<!ELEMENT Peripheral (ClaimedResources) >
				<!ELEMENT ClaimedResources (Pins, Interrupts, Registers) >
					<!ELEMENT Pins (Pin*) >
					<!ELEMENT Interrupts (Interrupt*) >
					<!ELEMENT Registers (Register*) >
		<!ELEMENT PublicMethods (Method* ) >
			<!ELEMENT Method (MethodParameter*) > 	
				<!ELEMENT MethodParameter (#PCDATA) > 					
		<!ELEMENT LibraryFiles (DefinitionFile*, HeaderFiles*, SourceFiles*, HelpFiles*) >
			<!ELEMENT DefinitionFile (#PCDATA) >	
			<!ELEMENT HeaderFiles (File*) >
				<!ELEMENT File (#PCDATA) >						
			<!ELEMENT SourceFiles (File*) >
			<!ELEMENT HelpFiles (File*) >
		<!ELEMENT Scripts (Function*) >
			<!ELEMENT Function (Script*) >
				<!ELEMENT Script (#PCDATA) >	

<!ATTLIST XMLDOCINFO
  version CDATA  #REQUIRED
>

<!ATTLIST LibraryModule
  name CDATA  #REQUIRED
  GUID CDATA  #IMPLIED    
  description CDATA  #REQUIRED
  type CDATA  #REQUIRED
  rev CDATA  #REQUIRED
  language (c|C|asm|ASM) #REQUIRED  
>

<!ATTLIST Plugin
  protocol  (CPP|COM) #REQUIRED    
  path      CDATA  #REQUIRED
  exePath   CDATA  #IMPLIED  
  rootDirectory CDATA  #REQUIRED
>

<!-- deviceFamilies does not have attribute. -->
<!-- deviceFamily does not have attribute. -->
<!ATTLIST DeviceFamily
  name CDATA  #REQUIRED  
>

<!-- ModuleLevelParameters does not have attribute. -->
<!ATTLIST ParameterGroup
	name CDATA  #REQUIRED
	displayName  CDATA  #IMPLIED  	
>
<!ATTLIST ParameterSubgroup
	name           CDATA #REQUIRED
	displayName    CDATA #REQUIRED 
	beginningIndex CDATA #IMPLIED 
	theEndIndex    CDATA #IMPLIED  	
>

<!ATTLIST Parameter
  name         CDATA  #REQUIRED
  type (int|double|text|macro|statement|clockFreq)  #REQUIRED
  default      CDATA #REQUIRED
  displayName  CDATA #REQUIRED
  readOnly (yes|no)  #IMPLIED  
> 

<!ATTLIST Scripts
	files CDATA  #IMPLIED 
	debug (true|false)  #IMPLIED 
> 

<!ATTLIST Function
	name CDATA  #REQUIRED
	parameters CDATA  #REQUIRED
> 

<!-- selections does not have attribute. -->

<!ATTLIST selection
  name CDATA  #REQUIRED
  displayName  CDATA  #REQUIRED
  value CDATA  #REQUIRED
>

<!ATTLIST Range
  min CDATA  #REQUIRED
  max CDATA  #REQUIRED  
>

<!ATTLIST InputDataFormat
  name CDATA  #REQUIRED    
>

<!-- Events does not have attribute. -->
<!ATTLIST  Event 
  name CDATA  #REQUIRED  
  handler CDATA  #REQUIRED   
>

<!-- OnlineHelps does not have attribute. --> 
<!-- Help does not have attribute. --> 
<!-- CodeComments does not have attribute. --> 
<!-- Comment does not have attribute. --> 
<!-- deviceFamilies does not have attribute. -->
<!-- ClaimedPeripherals does not have attribute. -->

<!ATTLIST Peripheral
  name  CDATA  #REQUIRED
  instanceIds  CDATA #IMPLIED
>

<!-- PeripheralParameters does not have attribute. -->
<!-- Parameter has been declared above -->
<!-- ClaimedResources does not have attribute. -->
<!-- pins does not have attribute. -->
<!-- interrupts does not have attribute. -->
<!-- registers does not have attribute. -->

<!ATTLIST Pin
  number  CDATA  #REQUIRED   
  displayName  CDATA  #REQUIRED   
>

<!ATTLIST Interrupt
  number  CDATA  #REQUIRED   
  displayName  CDATA  #REQUIRED   
>

<!ATTLIST Register
  name  CDATA  #REQUIRED   
  displayName  CDATA  #REQUIRED   
>

<!-- publicMethods does not have attribute. -->

<!ATTLIST Method
  name  CDATA  #REQUIRED      
>

<!ATTLIST MethodParameter
  name  CDATA  #IMPLIED 
  type  CDATA  #REQUIRED  
>


<!-- DefinitionFile does not have attribute. -->
<!-- File does not have attribute. -->





