This is a very simple way to reprasent objects in XML. This representatio=
n
is compatible with Microsoft's typelibrary which is a binary format. The
element "type" was intended to use definitions from XML-Data but if XML-D=
ata
isn't going anywhere we may need to include a "mini-XML-Data" within the
SODL DTD.
SODL is related to XML-RPC in that objects are defined as being composed =
of
interfaces (i.e. interfaceDef's). This approach to object definition is
taken because it is compatible with several of the XML-RPC efforts includ=
ing
John Tigue's as well as being compatible with Microsoft's COM.
First an example, then the DTD:
<objectDef uid=3D"=85" name=3D"JABR.DataObject">
		<interfaceDef uid=3D"=85" name=3D"IJABRDataInterface">
			<property>
			<name>Y</name>
			<value><i4>345667</i4></value>
		</property>
		<property id=3D"1">
		<value><string>An unnamed property</string></value>
		</property>
		</interfaceDef>
	</objectDef>
----DTD-Part-Here:-)
<!ELEMENT interfaceDef (name,derivedFrom,(property|method)*)>
<!ATTLIST interfaceDef
	uid CDATA #required
	version CDATA "1.0"
>
<!ELEMENT property (name,params?)>
<!ATTLIST property id CDATA ""
	access (get|put|getput) "getput"
	description CDATA ""
>
<!ELEMENT method (name,params?>
<!ATTLIST method id CDATA ""
	description CDATA ""
>
<!ELEMENT params (param*)
<!ELEMENT param (name, type)>
<!ATTLIST param
	type (in|out|inout|retval) #required
	id CDATA ""
>
<!ELEMENT name #PCDATA>
<!ELEMENT derivedFrom #PCDATA>
<!ELEMENT type (long|short|string|bool ..)>
		<!- types from XML-data to be used here ->
<!ELEMENT objectDef (interfaceDef+,other)>
<!ATTLIST objectDef
	uid CDATA #required
	name CDATA #required
	transacted (not|supports|required|new) "not">
Jonathan Borden
JABR Technology Corp.
jborden@mediaone.net