<!-- OmniOutliner is not currently namespace aware.  It generates XML
with namespaces, but doesn't understand them when reading the XML
back.  It therefore looks for the "oo:outline" element, not the
"outline" element in the xmloutline namespace. -->

<!-- The public DOCTYPE is "-//omnigroup.com//DTD OUTLINE 1.0//EN" -->
<!-- The namespace is "http://www.omnigroup.com/namespace/OmniOutliner/v1" -->

<!-- From XML in a Nutshell, chapter 4. -->
<!ENTITY % oo-prefix "oo">
<!ENTITY % oo-colon ":">

<!-- Define qualified names -->
<!ENTITY % oo-outline "%oo-prefix;%oo-colon;outline">
<!ENTITY % oo-columns "%oo-prefix;%oo-colon;columns">
<!ENTITY % oo-level-styles "%oo-prefix;%oo-colon;level-styles">
<!ENTITY % oo-column "%oo-prefix;%oo-colon;column">
<!ENTITY % oo-title "%oo-prefix;%oo-colon;title">

<!-- Formatters -->
<!ENTITY % oo-formatter "%oo-prefix;%oo-colon;formatter">
<!ENTITY % oo-format "%oo-prefix;%oo-colon;format">
<!ENTITY % oo-allow-natural-language "%oo-prefix;%oo-colon;allow-natural-language">
<!ENTITY % oo-hours-per-day "%oo-prefix;%oo-colon;hours-per-day">
<!ENTITY % oo-hours-per-week "%oo-prefix;%oo-colon;hours-per-week">
<!ENTITY % oo-hours-per-month "%oo-prefix;%oo-colon;hours-per-month">
<!ENTITY % oo-should-use-verbose-format "%oo-prefix;%oo-colon;should-use-verbose-format">
<!ENTITY % oo-note "%oo-prefix;%oo-colon;note">
<!ENTITY % oo-enumeration "%oo-prefix;%oo-colon;enumeration">
<!ENTITY % oo-member "%oo-prefix;%oo-colon;member">

<!-- Styles -->
<!ENTITY % oo-level-style "%oo-prefix;%oo-colon;level-style">
<!ENTITY % oo-style "%oo-prefix;%oo-colon;style">
<!ENTITY % oo-text-color "%oo-prefix;%oo-colon;text-color">
<!ENTITY % oo-font-family "%oo-prefix;%oo-colon;font-family">
<!ENTITY % oo-font-size "%oo-prefix;%oo-colon;font-size">
<!ENTITY % oo-font-weight "%oo-prefix;%oo-colon;font-weight">
<!ENTITY % oo-font-style "%oo-prefix;%oo-colon;font-style">
<!ENTITY % oo-heading "%oo-prefix;%oo-colon;heading">
<!ENTITY % oo-is-upper-case "%oo-prefix;%oo-colon;is-upper-case">
<!ENTITY % oo-heading-prefix "%oo-prefix;%oo-colon;prefix">
<!ENTITY % oo-heading-suffix "%oo-prefix;%oo-colon;suffix">

<!-- Items -->
<!ENTITY % oo-root "%oo-prefix;%oo-colon;root">
<!ENTITY % oo-item "%oo-prefix;%oo-colon;item">
<!ENTITY % oo-values "%oo-prefix;%oo-colon;values">
<!ENTITY % oo-children "%oo-prefix;%oo-colon;children">
<!ENTITY % oo-rich-text "%oo-prefix;%oo-colon;rich-text">
<!ENTITY % oo-checkbox "%oo-prefix;%oo-colon;checkbox">
<!ENTITY % oo-date "%oo-prefix;%oo-colon;date">
<!ENTITY % oo-duration "%oo-prefix;%oo-colon;duration">
<!ENTITY % oo-number "%oo-prefix;%oo-colon;number">
<!ENTITY % oo-text "%oo-prefix;%oo-colon;text">
<!ENTITY % oo-enum "%oo-prefix;%oo-colon;enum">

<!-- Settings -->
<!ENTITY % oo-settings "%oo-prefix;%oo-colon;settings">
<!ENTITY % oo-note-height "%oo-prefix;%oo-colon;note-height">
<!ENTITY % oo-is-status-visible "%oo-prefix;%oo-colon;is-status-visible">
<!ENTITY % oo-is-spellchecking-enabled "%oo-prefix;%oo-colon;is-spellchecking-enabled">
<!ENTITY % oo-is-note-expanded "%oo-prefix;%oo-colon;is-note-expanded">
<!ENTITY % oo-print-info "%oo-prefix;%oo-colon;print-info">

<!ENTITY % oo-p "%oo-prefix;%oo-colon;p">
<!ENTITY % oo-b "%oo-prefix;%oo-colon;b">
<!ENTITY % oo-u "%oo-prefix;%oo-colon;u">
<!ENTITY % oo-i "%oo-prefix;%oo-colon;i">
<!ENTITY % oo-font "%oo-prefix;%oo-colon;font">


<!-- Attribute types -->
<!ENTITY % color "CDATA"> <!-- i.e. #00c700, doesn't support any other format -->
<!ENTITY % float "CDATA">
<!ENTITY % boolean "(yes | no)">
<!ENTITY % alignment "(left | right | center | justified | natural)">

<!-- ********************************************************************** -->
<!-- This is the root element -->
<!-- ********************************************************************** -->
<!ELEMENT %oo-outline; (%oo-columns;, (%oo-level-styles;)?, %oo-root;, %oo-settings;)>
<!ATTLIST %oo-outline; xmlns:oo CDATA "">
<!ATTLIST %oo-outline; version CDATA "">

<!ELEMENT %oo-columns; ((%oo-column;)+)>
<!ELEMENT %oo-level-styles; ((%oo-level-style;)*)>

<!ELEMENT %oo-root; ((%oo-item;)*)>
<!ATTLIST %oo-root; background-color %color; "">
<!ATTLIST %oo-root; alternate-color %color; "">
<!ATTLIST %oo-root; gutter-color %color; "">

<!ELEMENT %oo-settings; ((%oo-note-height;)?, (%oo-is-status-visible;)?, (%oo-is-spellchecking-enabled;)?, (%oo-is-note-expanded;)?, (%oo-print-info;)?)>

<!-- **************** Columns **************** -->

<!ELEMENT %oo-column; (%oo-title;, (%oo-formatter;)?, (%oo-enumeration;)?, (%oo-note;)?)>
<!-- TODO (2002-12-16): Change richText to rich-text -->
<!ATTLIST %oo-column; type (rich-text | checkbox | date | duration | enumeration | number | text) #REQUIRED>
<!ATTLIST %oo-column; summary-type (none | hidden | calculated) "none">
<!ATTLIST %oo-column; width CDATA #REQUIRED>
<!ATTLIST %oo-column; minimum-width CDATA #REQUIRED>
<!ATTLIST %oo-column; maximum-width CDATA #REQUIRED>
<!ATTLIST %oo-column; text-export-width CDATA #REQUIRED>
<!ATTLIST %oo-column; background-color %color; "">
<!ATTLIST %oo-column; alignment %alignment; "left">
<!ATTLIST %oo-column; is-outline-column %boolean; "no">
<!ATTLIST %oo-column; is-note-column %boolean; "no">

<!ELEMENT %oo-title; (#PCDATA)>
<!ELEMENT %oo-enumeration; ((%oo-member;)*)>
<!ELEMENT %oo-member; (#PCDATA)>
<!ELEMENT %oo-note; (%oo-rich-text;)>

<!-- **************** Columns: Formatters **************** -->

<!ELEMENT %oo-formatter; ((%oo-format;)?, (%oo-allow-natural-language;)?, (%oo-hours-per-day;)?, (%oo-hours-per-week;)?, (%oo-hours-per-month;)?)>
<!ATTLIST %oo-formatter; type (number | date | duration ) #REQUIRED>

<!-- This is used by number and date formatters. -->
<!ELEMENT %oo-format; (#PCDATA)>

<!-- This is used by date formatter.  Either "yes" or "no" (default). -->
<!ELEMENT %oo-allow-natural-language; (#PCDATA)>

<!-- These are used by the duration formatter.  Integers. -->
<!ELEMENT %oo-hours-per-day; (#PCDATA)>
<!ELEMENT %oo-hours-per-week; (#PCDATA)>
<!ELEMENT %oo-hours-per-month; (#PCDATA)>

<!-- This is used by the duration formatter.  Either "yes" or "no" (default). -->
<!ELEMENT %oo-should-use-verbose-format; (#PCDATA)>

<!-- **************** Styles **************** -->

<!ELEMENT %oo-level-style; (%oo-text-color;, %oo-font-family;, %oo-font-size;, (%oo-font-weight;)?, (%oo-font-style;)?, %oo-heading;)>
<!ATTLIST %oo-level-style; should-allow-sorting %boolean; "yes">

<!ELEMENT %oo-style; (%oo-text-color;, %oo-font-family;, %oo-font-size;, (%oo-font-weight;)?, (%oo-font-style;)?)>
<!ELEMENT %oo-text-color; (#PCDATA)>
<!ELEMENT %oo-font-family; (#PCDATA)>
<!ELEMENT %oo-font-size; (#PCDATA)>
<!ELEMENT %oo-font-weight; (#PCDATA)> <!-- normal (default) or bold -->
<!ELEMENT %oo-font-style; (#PCDATA)> <!-- normal (default) or italic -->
<!ELEMENT %oo-heading; ((%oo-heading-prefix;)?, (%oo-heading-suffix;)?)>
<!ATTLIST %oo-heading; type (None | Legal | Letters | Numeric | Roman) #REQUIRED>
<!ELEMENT %oo-is-upper-case; (#PCDATA)> <!-- no (default) or yes -->
<!ELEMENT %oo-heading-prefix; (#PCDATA)>
<!ELEMENT %oo-heading-suffix; (#PCDATA)>

<!-- **************** Settings **************** -->

<!ELEMENT %oo-note-height; (#PCDATA)> <!-- integer -->
<!ELEMENT %oo-is-status-visible; (#PCDATA)> <!-- "yes" or "no" -->
<!ELEMENT %oo-is-spellchecking-enabled; (#PCDATA)> <!-- "yes" or "no" -->
<!ELEMENT %oo-is-note-expanded; (#PCDATA)> <!-- "yes" or "no" -->
<!-- Consider this opaque.  It's actually a base64 encoding of the archived NSPrintInfo. -->
<!ELEMENT %oo-print-info; (#PCDATA)>


<!-- **************** Items **************** -->

<!ELEMENT %oo-item; ((%oo-style;)?, (%oo-values;)?, (%oo-note;)?, (%oo-children;)?)>
<!ATTLIST %oo-item; expanded %boolean; "no">
<!ATTLIST %oo-item; state (unchecked | checked | indeterminate | none) "unchecked">

<!ELEMENT %oo-values; (%oo-rich-text; | %oo-checkbox; | %oo-date; | %oo-duration; | %oo-number; | %oo-text; | %oo-enum;)*>
<!ELEMENT %oo-children; ((%oo-item;)*)>

<!ELEMENT %oo-checkbox; (#PCDATA)>
<!ELEMENT %oo-date; (#PCDATA)>
<!ELEMENT %oo-duration; (#PCDATA)>
<!ELEMENT %oo-number; (#PCDATA)>
<!ELEMENT %oo-text; (#PCDATA)>
<!ELEMENT %oo-enum; (#PCDATA)>

<!ELEMENT %oo-rich-text; ((%oo-p;)+)>

<!-- Paragraphs can have <b>, <u>, <i>, <font> -->
<!ENTITY % text "(#PCDATA | %oo-b; | %oo-u; | %oo-i; | %oo-font;)*">

<!-- Attributes intended to represent values of NSParagraphStyle. -->
<!ELEMENT %oo-p; %text;>
<!ATTLIST %oo-p; line-spacing %float; "">
<!ATTLIST %oo-p; paragraph-spacing %float; "">
<!ATTLIST %oo-p; head-indent %float; "">
<!ATTLIST %oo-p; tail-indent %float; "">
<!ATTLIST %oo-p; first-line-head-indent %float; "">
<!ATTLIST %oo-p; minimum-line-height %float; "">
<!ATTLIST %oo-p; maximum-line-height %float; "">
<!ATTLIST %oo-p; tab-stops CDATA ""> <!-- i.e. 18L,36R,54C,72D - left, right, center, decimal -->
<!ATTLIST %oo-p; alignment %alignment; "left">
<!ATTLIST %oo-p; line-break-mode (character | clip | truncate-head | truncate-tail | truncate-middle | word) "word">

<!ELEMENT %oo-b; %text;>
<!ELEMENT %oo-u; %text;>
<!ELEMENT %oo-i; %text;>
<!ELEMENT %oo-font; %text;>
<!ATTLIST %oo-font; face CDATA "">
<!ATTLIST %oo-font; size %float; ""> <!-- In points -->
<!ATTLIST %oo-font; color %color; "">
