<!--
    pythonpoint.dtd

    PythonPoint XML DTD, V0.1.0
    Copyright 2000 Michael Wiedmann 
    $Id: pythonpoint.dtd,v 1.10 2000/11/12 17:00:50 mw Exp $

    This is free software.  You may distribute it under the terms of the 
    GNU General Public Licence, version 2 or at your option any later version.
    See file COPYING for more information.
                                          
    This is a draft version of a DTD for the PythonPoint library 
    (a library for creating presentation slides, for more information see
     http://www.reportlab.com).
                                                             
    Common declaration:

    <?xml version='1.0'?>
    <!DOCTYPE presentation
              PUBLIC "-//ReportLab//DTD PythonPoint XML V0.1.0//EN"
              "pythonpoint.dtd">

    Feel free to submit your suggestions, contributions, complaints, etc. to:

    Michael Wiedmann <mw@miwie.in-berlin.de>

    You will always find the actual version of this DTD at:

    http://www.miwie.org/pythonpoint/pythonpoint.dtd
-->

<!-- TODO                             

 o more testing

-->


<!-- Entities                                 -->

<!ENTITY % bool "true|false"                    >

<!ENTITY % align.values "left|center|right"     >

<!ENTITY % effectname.values 
        "Split|Blinds|Box|Wipe|Dissolve|Glitter">

<!ENTITY % effectdirection.values "0|90|180|270">

<!ENTITY % effectdimension.values "H|V"         >

<!ENTITY % effectmotion.values "I|O"            >


<!-- Top Level Element                        -->

<!ELEMENT presentation  (subject?, title?, author?,
                         section?, stylesheet?, slide*)+>
<!ATTLIST presentation  filename    CDATA     #REQUIRED >


<!-- First Level Elements             -->

<!-- the following three elements go into the PDF document info      -->
<!ELEMENT subject (#PCDATA)     >
<!ELEMENT title   (#PCDATA)     >
<!ELEMENT author  (#PCDATA)     >


<!ELEMENT section (fixedimage*, rectangle*, roundrect*, ellipse*,
                   polygon*, line*, string*, infostring*, 
                   customshape*, slide*)+       >
<!ATTLIST section name CDATA #REQUIRED          >

<!ELEMENT stylesheet EMPTY                      >
<!ATTLIST stylesheet path     CDATA #IMPLIED
                     module   CDATA #REQUIRED
                     function CDATA #REQUIRED   >

<!ELEMENT slide (fixedimage*, rectangle*, roundrect*, ellipse*,
                 polygon*, line*, string*, infostring*, 
                 customshape*, frame*)+         >
<!ATTLIST slide id              CDATA   #REQUIRED
                title           CDATA   #REQUIRED
                outlinelevel    NMTOKEN #IMPLIED
                showIDName      (%bool;)                   "true"
                effectname      (%effectname.values;)      #IMPLIED
                effectdirection (%effectdirection.values;) "0"
                effectdimension (%effectdimension.values;) "H"
                effectmotion    (%effectmotion.values;)    "I"
                effectduration  NMTOKEN                    "1"     >


<!-- All other elements               -->

<!ELEMENT para (#PCDATA|i|b|u|super|sub|font|greek)*   >
<!ATTLIST para style      CDATA "Normal"
               bullettext CDATA #IMPLIED        >

<!ELEMENT i     (#PCDATA)       >

<!ELEMENT b     (#PCDATA)       >

<!ELEMENT u     (#PCDATA)       >

<!ELEMENT super (#PCDATA)       >

<!ELEMENT sub   (#PCDATA)       >

<!ELEMENT font  (#PCDATA)       >
<!ATTLIST font  name    CDATA   #IMPLIED
                color   CDATA   #IMPLIED
                size    NMTOKEN #IMPLIED        >

<!-- FIXME: only letters valid?       -->
<!ELEMENT greek (#PCDATA)       >

<!ELEMENT spacer EMPTY                          >
<!ATTLIST spacer height NMTOKEN #REQUIRED       >

<!ELEMENT prefmt (#PCDATA)                      >
<!ATTLIST prefmt style CDATA #IMPLIED           >

<!ELEMENT image EMPTY                           >
<!ATTLIST image filename CDATA   #REQUIRED   
                width    NMTOKEN #IMPLIED
                height   NMTOKEN #IMPLIED       >

<!ELEMENT table (#PCDATA)                       >
<!ATTLIST table widths   CDATA   #IMPLIED
                heights  CDATA   #IMPLIED
                style    CDATA   #IMPLIED
                colDelim CDATA   #IMPLIED
                rowDelim CDATA   #IMPLIED       >

<!ELEMENT fixedimage EMPTY                      >
<!ATTLIST fixedimage filename CDATA   #REQUIRED
                     x        NMTOKEN #REQUIRED
                     y        NMTOKEN #REQUIRED
                     width    NMTOKEN #IMPLIED
                     height   NMTOKEN #IMPLIED  >

<!ELEMENT rectangle EMPTY                       >
<!ATTLIST rectangle x         NMTOKEN #REQUIRED
                    y         NMTOKEN #REQUIRED
                    width     NMTOKEN #REQUIRED
                    height    NMTOKEN #REQUIRED
                    fill      CDATA   #IMPLIED
                    stroke    CDATA   "(0,0,0)"
                    linewidth NMTOKEN "0"       >

<!ELEMENT roundrect EMPTY                       >
<!ATTLIST roundrect x         NMTOKEN #REQUIRED
                    y         NMTOKEN #REQUIRED
                    width     NMTOKEN #REQUIRED
                    height    NMTOKEN #REQUIRED
                    fill      CDATA   #IMPLIED
                    stroke    CDATA   "(0,0,0)"
                    linewidth NMTOKEN "0"
                    radius    NMTOKEN "6"       >

<!ELEMENT ellipse EMPTY                         >
<!ATTLIST ellipse x1          NMTOKEN #REQUIRED
                  y1          NMTOKEN #REQUIRED
                  x2          NMTOKEN #REQUIRED
                  y2          NMTOKEN #REQUIRED
                  fill        CDATA   #IMPLIED
                  stroke      CDATA   "(0,0,0)"
                  linewidth   NMTOKEN "0"       >

<!ELEMENT polygon EMPTY                         >
<!ATTLIST polygon points      CDATA   #REQUIRED
                  fill        CDATA   #REQUIRED
                  stroke      CDATA   "(0,0,0)"
                  linewidth   NMTOKEN "0"       >

<!ELEMENT line EMPTY                            >
<!ATTLIST line x1     NMTOKEN  #REQUIRED
               y1     NMTOKEN  #REQUIRED
               x2     NMTOKEN  #REQUIRED
               y2     NMTOKEN  #REQUIRED
               stroke CDATA    "(0,0,0)"
               width  NMTOKEN  "0"              >

<!-- this element allows the user to put optionally an info string
     somewhere on the slide (or on every slide if used inside
     "section"). See the pythonpoint documentation for the exact
     format of this string.                   -->
<!ELEMENT infostring (#PCDATA)                          >
<!ATTLIST infostring x      NMTOKEN #REQUIRED
                     y      NMTOKEN #REQUIRED
                     color  CDATA   "(0,0,0)"
                     font   CDATA   "Times-Roman"
                     size   NMTOKEN "12"
                     align  (%align.values;) "left"     >

<!ELEMENT string (#PCDATA)                      >
<!ATTLIST string x      NMTOKEN #REQUIRED
                 y      NMTOKEN #REQUIRED
                 color  CDATA   "(0,0,0)"
                 font   CDATA   "Times-Roman"
                 size   NMTOKEN "12"
                 align  (%align.values;) "left" >

<!ELEMENT customshape EMPTY     >
<!ATTLIST customshape path     CDATA #IMPLIED
                      module   CDATA #IMPLIED
                      class    CDATA #IMPLIED
                      initargs CDATA #IMPLIED
                      align    (%align.values;) #IMPLIED   >

<!ELEMENT frame (para*, prefmt*, image*, table*, 
                 fixedimage*, rectangle*, roundrect*, ellipse*,
                 polygon*, line*, string*, customshape*, spacer*)+      >
<!ATTLIST frame x               NMTOKEN #REQUIRED
                y               NMTOKEN #REQUIRED
                width           NMTOKEN #REQUIRED
                height          NMTOKEN #REQUIRED
                leftmargin      NMTOKEN "0"
                rightmargin     NMTOKEN "0"
                topmargin       NMTOKEN "0"
                bottommargin    NMTOKEN "0"
                border          (%bool;) "false"  >