... there is an ID number supplied to each element in the schema, how important is this? Is it only important for these to be internally consistent ...
ID are used in the code and need to be there and internally consistent. They should be an integer greater than 100.
There are several fixed IDs you probably need to use:
/** The special ID number for the root project. */
public static final int ID_ROOT_ALL = 0;
/** The special ID number for the root project for projects. */
public static final int ID_ROOT_PROJECTS = 1;
/** The special ID number for the root project for single actions. */
public static final int ID_ROOT_ACTIONS = 2;
/** The special ID number for the root project for template projects. */
public static final int ID_ROOT_TEMPLATES = 3;
/** The special ID number for the root project for future projects. */
public static final int ID_ROOT_FUTURES = 4;
...
/** The special ID number for the default topic. */
public static final int ID_DEFAULT_TOPIC = 8;
/** The special ID number for the default context. */
public static final int ID_DEFAULT_CONTEXT = 9;
Ruby, supplies epoch dates to the second, not millisecond
Not a problem.
How many of these elements are optional? For example, do I need to declare <brainstorming/> or can I just leave it out entirely?
I am pretty sure that leaving out elements is ok as long as you provide the manditory ones - which should normally be ID, description, parent ID (for projects and actions), topic, context. Probably just have to try it out.