<!ELEMENT JCSP-CONFIG (SETTINGS,SERVICES?,PLUGINS?,PROTOCOLS,ADDRESSES,NODE_SPECS?,LINK_PROFILES?,NODE_PROFILES?)>
<!ATTLIST JCSP-CONFIG>
<!ELEMENT SETTINGS (SETTING)*>
<!ELEMENT SETTING EMPTY>
<!ATTLIST SETTING
    name    CDATA    #REQUIRED
    value   CDATA    #REQUIRED>
<!ELEMENT SERVICES (SERVICE)*>
<!ELEMENT SERVICE (ADDRESS_SETTING|SETTING)*>
<!ATTLIST SERVICE
    name    CDATA    #REQUIRED
	class	CDATA    #REQUIRED
    run   (TRUE|FALSE) "TRUE">
<!ELEMENT ADDRESS_SETTING EMPTY>
<!ATTLIST ADDRESS_SETTING
    name    CDATA    #REQUIRED
    protocolid    IDREF    #REQUIRED
	value		CDATA #REQUIRED>
<!ELEMENT PLUGINS (PLUGIN)*>
<!ELEMENT PLUGIN EMPTY>
<!ATTLIST PLUGIN
    name    CDATA    #REQUIRED
    classname   CDATA    #REQUIRED>
<!ELEMENT PROTOCOLS (PROTOCOL*)>
<!ELEMENT PROTOCOL (PROTOCOL_SETTINGS?,SPECS?)>
<!ATTLIST PROTOCOL
	id		ID		 #REQUIRED
    name    CDATA    #REQUIRED
    idclass   CDATA    #REQUIRED>
<!ELEMENT SPECS (MAXSPEED?,WIRELESS?,RELIABLE?,CONNECTION-ORIENTED?,OTHERSPEC*)>
<!ELEMENT MAXSPEED EMPTY>
<!ATTLIST MAXSPEED
    value  CDATA  #REQUIRED>
<!ELEMENT WIRELESS EMPTY>
<!ATTLIST WIRELESS
    value  (TRUE|FALSE|CANBE)  #REQUIRED>
<!ELEMENT RELIABLE EMPTY>
<!ATTLIST RELIABLE
    value  (TRUE|FALSE)  #REQUIRED>
<!ELEMENT CONNECTION-ORIENTED EMPTY>
<!ATTLIST CONNECTION-ORIENTED
    value  (TRUE|FALSE)  #REQUIRED>
<!ELEMENT OTHERSPEC EMPTY>
<!ATTLIST OTHERSPEC
    name    CDATA    #REQUIRED
	type	(int|dec|string|boolean) "int"
    value	CDATA  #REQUIRED>
<!ELEMENT PROTOCOL_SETTINGS (PROTOCOL_SETTING*)>
<!ELEMENT PROTOCOL_SETTING EMPTY>
<!ATTLIST PROTOCOL_SETTING
    name    CDATA    #REQUIRED
    value   CDATA    #REQUIRED>
<!ELEMENT ADDRESSES (ADDRESS)*>
<!ELEMENT ADDRESS (SPECS?)>
<!ATTLIST ADDRESS
    protocolid    IDREF    #REQUIRED
	value		CDATA #REQUIRED
	unique		(TRUE|FALSE) "TRUE">
<!ELEMENT NODE_SPECS (MAXSPEED?,MEMORY?,OTHERSPEC*)>
<!ELEMENT MEMORY EMPTY>
<!ATTLIST MEMORY
    value  CDATA  #REQUIRED>
<!ELEMENT LINK_PROFILES (LINK_PROFILE*)>
<!ELEMENT LINK_PROFILE (LINK_REQS?)>
<!ATTLIST LINK_PROFILE
    name		CDATA #REQUIRED
	requireExactMatch	(TRUE|FALSE) "FALSE">
<!ELEMENT LINK_REQS (LINK_MINSPEED?,LINK_REQ_PROTOCOL?, WIRELESS?,RELIABLE?,CONNECTION-ORIENTED?,LINK_MAXPING?,LINK_REQ*)>
<!ELEMENT LINK_REQ_PROTOCOL EMPTY>
<!ATTLIST LINK_REQ_PROTOCOL
	protocolid    IDREF    #REQUIRED>
<!ELEMENT LINK_MINSPEED EMPTY>
<!ATTLIST LINK_MINSPEED
	value  CDATA  #REQUIRED>
<!ELEMENT LINK_MAXPING EMPTY>
<!ATTLIST LINK_MAXPING
	value  CDATA  #REQUIRED>
<!ELEMENT LINK_REQ EMPTY>
<!ATTLIST LINK_REQ
	name  CDATA  #REQUIRED
	comparator  (EQU|GRT|LTH)  #REQUIRED
	type		(int|dec|string|boolean) "int"
	value  CDATA  #REQUIRED>
<!ELEMENT NODE_PROFILES (NODE_PROFILE*)>
<!ELEMENT NODE_PROFILE (NODE_REQS?)>
<!ATTLIST NODE_PROFILE
    name		CDATA #REQUIRED
	requireExactMatch	(TRUE|FALSE) "FALSE">
<!ELEMENT NODE_REQS (NODE_MINSPEED?,NODE_MINMEMORY?,NODE_REQ*)>
<!ELEMENT NODE_MINSPEED EMPTY>
<!ATTLIST NODE_MINSPEED
	value  CDATA  #REQUIRED>
<!ELEMENT NODE_MINMEMORY EMPTY>
<!ATTLIST NODE_MINMEMORY
	value  CDATA  #REQUIRED>
<!ELEMENT NODE_REQ EMPTY>
<!ATTLIST NODE_REQ
	name  CDATA  #REQUIRED
	comparator  (EQU|GRT|LTH)  #REQUIRED
	type		(int|dec|string|boolean) "int"
	value  CDATA  #REQUIRED>