To the content.
 

The TaskJuggler 2.0 XML DTD

TaskJuggler can read and write projects in XML format. The following DTD describes the XML files used by TaskJuggler version 1.9.2 and later. The XML files are meant for communication with other programs that use TaskJuggler as a back-end processor.

Note: This DTD is incompatible with previos XML versions and will most likely be extended over time.


<!-- DTD for TaskJuggler 2.0 XML Files -->
<!-- (c) 2003 Chris Schlaeger <cs@suse.de> -->
<!-- This file is licensed under the GNU GPL Version 2.0 -->
<!-- $Id: show_dtd.php 86 2005-05-22 23:18:11Z cs $ -->

<!-- This is still a draft version, published as a request for
comments -->

<!ELEMENT taskjuggler (project, vacationList?, shiftList?,
                       resourceList?, taskList, bookingList?)>

<!ELEMENT project (start, end, extend*, now?, currencyFormat,
                   workingHours, scenario?)>
<!ATTLIST project 
  id CDATA #REQUIRED
  name CDATA #REQUIRED
  version CDATA #REQUIRED
  timezone CDATA #REQUIRED
  timingResolution CDATA "3600"
  dailyWorkingHours CDATA "8"
  yearlyWorkingDays CDATA "260.714"
  weekStartMonday (0|1) "1"
  timeFormat CDATA "%Y-%m-%d %H:%M"
  shortTimeFormat CDATA "%H:%M"
>

<!ELEMENT start (#PCDATA)>
<!ATTLIST start
  humanReadable CDATA #IMPLIED>

<!ELEMENT end (#PCDATA)>
<!ATTLIST end
  humanReadable CDATA #IMPLIED>

<!ELEMENT now (#PCDATA)>
<!ATTLIST now
  humanReadable CDATA #IMPLIED>

<!ELEMENT extend (extendAttributeDefinition*)>
<!ATTLIST extend
  property CDATA #REQUIRED>

<!ELEMENT extendAttributeDefinition EMPTY>
<!ATTLIST extendAttributeDefinition
  id CDATA #REQUIRED
  name CDATA #REQUIRED
  type (text|reference) #REQUIRED
  inherit (0|1) "0"
>

<!ELEMENT currencyFormat EMPTY>
<!ATTLIST currencyFormat
  signPrefix CDATA #REQUIRED
  signSuffix CDATA #REQUIRED
  thousandSep CDATA #REQUIRED
  fractionSep CDATA #REQUIRED
  fracDigits CDATA #REQUIRED
>

<!ELEMENT workingHours (weekdayWorkingHours*)>

<!-- 0 means Sunday, 1 Monday, ... -->
<!ELEMENT weekdayWorkingHours (timeInterval+)>
<!ATTLIST weekdayWorkingHours
  weekday (0|1|2|3|4|5|6) #REQUIRED
>

<!ELEMENT timeInterval (start, end)>

<!ELEMENT scenario (scenario*)>
<!ATTLIST scenario
  id CDATA #REQUIRED
  name CDATA #REQUIRED
  disabled (0|1) "0"
  projectionMode (0|1) "0"
>

<!ELEMENT flag (#PCDATA)>

<!ELEMENT vacationList (vacation+)>
 
<!ELEMENT vacation (start, end)>
<!ATTLIST vacation
  name CDATA #IMPLIED
>

<!ELEMENT shiftList (shift*)>

<!ELEMENT shift (workingHours, shift*)>
<!ATTLIST shift
  id CDATA #REQUIRED
  name CDATA #REQUIRED
>

<!ELEMENT shiftSelection (start, end)>
<!ATTLIST shiftSelection
  shiftId CDATA #REQUIRED
>

<!ELEMENT resourceList (resource*)>

<!ELEMENT resource (flag*, vacationList?, workingHours, shiftSelection*,
                    resource*)>
<!ATTLIST resource
  id CDATA #REQUIRED
  name CDATA #REQUIRED
>

<!ELEMENT accountList (account*)>

<!ELEMENT account (account*)>
<!ATTLIST account
  id CDATA #REQUIRED
  name CDATA #REQUIRED
  type (cost|revenue) #IMPLIED
>

<!ELEMENT taskList (task+)>

<!ELEMENT task (depends*, precedes*, customAttribute*, flag*, task*,
                taskScenario*, note?, statusNote?,reference?, 
                shiftSelection*, allocate*)>
<!ATTLIST task
  id CDATA #REQUIRED
  name CDATA #REQUIRED
  projectId CDATA #REQUIRED
  milestone (0|1) #REQUIRED
  asapScheduling (0|1) #REQUIRED
  priority CDATA #REQUIRED
  responsible CDATA #IMPLIED
  account CDATA #IMPLIED
>

<!ELEMENT depends (#PCDATA)>

<!ELEMENT precedes (#PCDATA)>

<!ELEMENT note (#PCDATA)>

<!ELEMENT statusNote (#PCDATA)>

<!ELEMENT reference (#PCDATA)>
<!ATTLIST reference
  url CDATA #REQUIRED
>

<!ELEMENT allocate (candidate+)>

<!ELEMENT candidate EMPTY>
<!ATTLIST candidate
  resourceId CDATA #REQUIRED
>

<!ELEMENT taskScenario (start?, end?, maxEnd?, maxStart?, minEnd?,
                        minStart?, startCredit*, endCredit*)>
<!ATTLIST taskScenario
  scenarioId CDATA #REQUIRED
  effort CDATA #IMPLIED
  duration CDATA #IMPLIED
  length CDATA #IMPLIED
  scheduled (0|1) "0"
  complete CDATA #IMPLIED
>

<!ELEMENT minStart (#PCDATA)>
<!ATTLIST minStart
  humanReadable CDATA #IMPLIED
>

<!ELEMENT maxStart (#PCDATA)>
<!ATTLIST maxStart
  humanReadable CDATA #IMPLIED
>

<!ELEMENT minEnd (#PCDATA)>
<!ATTLIST minEnd
  humanReadable CDATA #IMPLIED
>

<!ELEMENT maxEnd (#PCDATA)>
<!ATTLIST maxEnd
  humanReadable CDATA #IMPLIED
>

<!ELEMENT startCredit (#PCDATA)>

<!ELEMENT endCredit (#PCDATA)>
  
<!ELEMENT customAttribute (textAttribute|referenceAttribute)>
<!ATTLIST customAttribute
  id CDATA #REQUIRED
>

<!ELEMENT textAttribute EMPTY>
<!ATTLIST textAttribute
  text CDATA #REQUIRED
>

<!ELEMENT referenceAttribute EMPTY>
<!ATTLIST referenceAttribute
  url CDATA #REQUIRED
  label CDATA #REQUIRED
>

<!ELEMENT bookingList (resourceBooking*)>

<!ELEMENT resourceBooking (booking*)>
<!ATTLIST resourceBooking
  resourceId CDATA #REQUIRED
  scenarioId CDATA #REQUIRED
>

<!ELEMENT booking (start, end)>
<!ATTLIST booking
  taskId CDATA #REQUIRED
>

Comments are very welcome, feel free to contact us.