I'm no XML expert, but shouldn't we be able to also eXtend the schema (or dtd), and do stuff like:
<site xmlns="http://interreality.org/xml/xod/base" xmlns:vosapp="http://interreality.org/xml/xod/vosapp/base" xmlns:codplugin="http://interreality.org/xml/xod/vosapp/cod_plugin" xmlns:AF="http://interreality.org/xml/xod/vosapp/avatar_factory_plugin" > <vosapp:logfile>3dworld-blocks.log</vosapp:logfile> <vosapp:default-site-policy>core:accept-all,property:accept-all,site:accept-all,log-level-control:accept-all</vosapp:default-site-policy> <vosapp:plugin vosapp:path="plugins/libomniplg_search.so" /> <vosapp:plugin vosapp:path="plugins/libomniplg_logctrl.so" /> <vosapp:plugin vosapp:path="plugins/libomniplg_cod.so"> <codplugin:file>worlds/blocks.cod</codplugin:file> </vosapp:plugin> <vosapp:plugin vosapp:path="plugins/libomniplg_avatar_factory.so"> <AF:vobject>/world</AF:vobject> <AF:model>default_avatar.md2</AF:model> <AF:skin>default_avatar.png</AF:skin> <AF:starting_pos datatype="list: float">-4.0 1 -4.0</AF:starting_pos> </vosapp:plugin> ... </site> Then, in the loader, treat elements as child objects (or triggers for special non-vobject contexts like plugin loading), and map elements with cdata and attributes to properties. > <site> > <vobject name="configuration"> > > <!-- Set the output logfile --> > <property name="logfile" sws="1"> > 3dword-blocks.log > </property> > > <!-- Set a permissive default access control policy --> > <property name="default-site-policy" sws="1"> > > core:accept-all,property:accept-all,site:accept-all,log-level-control:accept-all > </property> > > <!-- Enable search --> > <child name="search" type="vosapp:plugin"> > <property name="vosapp:plugin-path" sws="1"> > plugins/.libs/libomniplg_search.so > </property> > </child> > > <!-- Enable remote log control --> > <child name="logcontrol" type="vosapp:plugin"> > <property name="vosapp:plugin-path" sws="1"> > plugins/.libs/libomniplg_logctrl.so > </property> > </child> > > <!-- Load the (trivially simple) 3D world from a COD file. --> > <child name="cod" type="vosapp:plugin"> > <property > name="vosapp:plugin-path">plugins/.libs/libomniplg_cod.so</property> > <property name="file">worlds/blocks</property> > </child> > > <!-- The avatar factory creates an avatar object on the server > when a new visitor joins the world. This allows people behind > firewalls/NAT gateways to interact with other users since messages to > their > avatar go to the server, not to their own local host (those would > be blocked by the firewall). > --> > <child name="avatar-factory" type="vosapp:plugin"> > <property name="vosapp:plugin-path" sws="1"> > plugins/.libs/libomniplg_avatar_factory.so > </property> > <property name="vobject">/world</property> > <property name="model">default_avatar.md2</property> > <property name="skin">default_avatar.png</property> > <property name="hardrotation">0 1 0 90</property> > <property name="policy">factory.compound:accept-all</property> > <property name="starting pos">-4 1 -4</property> > <property name="starting rot">0 1 0 25</property> > </child> > > <!-- This turns the root 'world' object into a talkative object which > relays talk messages to other avatars in the world. > --> > <child name="talkative" type="vosapp:plugin"> > <property name="vosapp:plugin-path" sws="1"> > plugins/.libs/libomniplg_talkative.so > </property> > <property name="vobject">/world</property> > <property name="sendpolicy">talkative:send-only</property> > <property name="core:accept-all">talkative:send-only</property> > </child> > </vobject> > </site> > > > [ Peter Amstutz ][ [EMAIL PROTECTED] ][ [EMAIL PROTECTED] ] > [Lead Programmer][Interreality Project][Virtual Reality for the Internet] > [ VOS: Next Generation Internet Communication][ http://interreality.org ] > [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.4.1 (GNU/Linux) > > iD8DBQFDW8jaaeHUyhjCHfcRAithAJ0YaNiBcDzxe49b+eRBsRCm3n+ilgCgr3n3 > jsXTfCMvF/w48AhYYtBr6kk= > =cTx7 > -----END PGP SIGNATURE----- > > > _______________________________________________ > vos-d mailing list > vos-d@interreality.org > http://www.interreality.org/cgi-bin/mailman/listinfo/vos-d _______________________________________________ vos-d mailing list vos-d@interreality.org http://www.interreality.org/cgi-bin/mailman/listinfo/vos-d