<!--
  Report DTD for JFreeReport version 0.8.5.

	ChangeLog:

	2002-05-01: Taq: Added multiline-field and multiline-function element
  2002-05-23: Changed the font style for extended attributes. The old attribute is also valid
              and gets silently mapped to the new style by the parser.
  2002-06-09: Added the rectangle shape element
  2002-06-30: ImageField, ImageFunction
  2002-07-10: ImageURLField, ImageURLFunction
  2002-07-17: Updated missing attributes in Image* tags
  2002-09-16: Removed BASELINE attribute from font definition, fixed Orientation-attribute declaration,
              Bands can have a default font declaration
  2002-10-16: All textelements have now a "dynamic" attribute which defaults to false
  2002-12-01: Removed deprecated General and multiline-field and *-function tags
              GroupHeader has "repeat" attribute
  2002-12-02: Band-heights are no longer required. If they are set, they act as minimum-height.
  2002-12-08: Added support for ReportConfiguration over XML
  2003-01-25: ResourceLabel and ResourceField added
              additional font style attributes added
              all elements except the shape elements now able to be dynamic
  2003-05-20: Added support for generic shape-field and drawable-field (since version 0.8.2)
  ..
  2004-04-04: Added support for fixed position of bands ..
  ..
  2005-02-16: Rewrote the DTD to match JFreeReport 0.8.5
  2005-08-09: Added the layout attribute for bands.
  2005-08-10: Added pagespan attribute
  2005-10-12: Now all style attributes are optional, as they may have been
              defined by an external stylesheet; added the component field type
  2005-10-14: Link-Target-Windows can be defined.
  2005-11-11; Repeating Group-Footers.
  2006-02-18; Round Rectangles

  Use this as Document type definition:

  <!DOCTYPE report
      PUBLIC "-//JFreeReport//DTD report definition//EN//simple/version 0.8.5"
             "http://jfreereport.sourceforge.net/report-085.dtd">

 -->

<!ENTITY % boolean
"true | false"
>

<!ENTITY % fontstyle
"plain | bold | italic | bold-italic"
>

<!ENTITY % stroketypes
"dashed | solid | dotted | dot-dot-dash | dot-dash"
>

<!ENTITY % alignmentEnum
"left | center | right"
>

<!ENTITY % valignmentEnum
"top | middle | bottom"
>

<!ENTITY % orientations
"portrait | landscape | reverse_landscape"
>

<!--

 The position of an element is declared either relative to the last
 defined element in the band (or (0,0) if the element is the first element),
 or it is positioned absolute to the top left corner of the current band.

 When positioning an element be aware to take care of the elements width.
 The next element should be placed at the absolute position x+width,
 or the elements will overwrite each other.

 All Fontstyles default to plain and all boolean styles to false. If no font is
 set either in Band nor in element, a compiled in default font is used.

 The X- and Y-Position is required, if the Static-LayoutManager is used.
 That LayoutManager is the default layoutmanager.
-->
<!ENTITY % position
"x           CDATA          #IMPLIED
 y           CDATA          #IMPLIED
 width       CDATA          #IMPLIED
 height      CDATA          #IMPLIED"
>

<!--

  Colors are specified in HTML Syntax, so use #FFFFFF for white and #000000
  for black when using RGB numeric values. You may also use defined named
  constants for the color, as "black", "white" and so on.

  The constants understood by the parser are:
  "black", "blue", "cyan", darkGray", "gray", "green", "lightGray", "magenta",
  "orange", "pink", "red", "white", "yellow"

  -->
<!ENTITY % basicform
" color                CDATA         #IMPLIED
  styleClass           CDATA         #IMPLIED
  name                 CDATA         #IMPLIED
  dynamic              (%boolean;)   #IMPLIED
  trim-text-content    (%boolean;)   #IMPLIED
  visible              (%boolean;)   #IMPLIED
  layout-cachable      (%boolean;)   #IMPLIED
  href                 CDATA         #IMPLIED
  href-window          CDATA         #IMPLIED
  reserved-literal     CDATA         #IMPLIED"
>

<!ENTITY % fontdef
" fontname       CDATA              #IMPLIED
  fontstyle      (%fontstyle;)      #IMPLIED
  fontsize       CDATA              #IMPLIED
  fsbold         (%boolean;)        #IMPLIED
  fsitalic       (%boolean;)        #IMPLIED
  fsunderline    (%boolean;)        #IMPLIED
  fsstrikethr    (%boolean;)        #IMPLIED
  font-embedded  (%boolean;)        #IMPLIED
  font-encoding  CDATA              #IMPLIED
  line-height    CDATA              #IMPLIED
  excel-wrap-text        (%boolean;)        #IMPLIED
  alignment              (%alignmentEnum;)  #IMPLIED
  vertical-alignment     (%valignmentEnum;) #IMPLIED"
>


<!ENTITY % itemelements
"(label | string-field | number-field | date-field |
imageref | image-field | imageurl-field | rectangle |
resource-label | resource-field | line | round-rectangle |
drawable-url-field | drawableref | component-field |
message-field | anchor-field | resource-message |
drawable-field | shape-field | band)*">


<!--

     Colordefinitions are given either as predefined names as defined
     in HTML or as HTML-RGB-Color-Reference ("#rrggbb");

 -->


<!--

   A report constists of several elements, which are all optional:

   * reportheader
     printed at the first page

   * reportfooter
     printed on the last page

   * a page header
     Printed before any content is printed to the page.

   * a page footer
     printed, after the last content for the page is printed
     The pagefooter is always positionated at the bottom of a page,
     regardless how much space of the page is filled.

   * one or more group definitions in the "groups" element
     If no groups are defined, a default group is created to contain
     all data elements of the current report.

   * the (optional) item band. This is where the data rows are printed.
     If no item band is defined, only printing is disabled. All
     calculations are performed regardless of the appearance of the
     items.

   Attributes:
    Width  = the width of the report in Java-Printing-Units
    Height = the height of the report

    All printing units are defined in 1/72 inches, the default printing
    resolution on java.awt.graphics.

    minPageFormat = a predefined page format, for instance "A4" or "US-LETTER"


  -->

<!ENTITY % pageFormats
"(  PAPER10X11 | PAPER10X13 | PAPER10X14 | PAPER12X11 | PAPER15X11 | PAPER7X9 | PAPER8X10 |
    PAPER9X11 | PAPER9X12 | A0 | A1 | A2 | A3 | A3_TRANSVERSE | A3_EXTRA | A3_EXTRATRANSVERSE |
    A3_ROTATED | A4 | A4_TRANSVERSE | A4_EXTRA | A4_PLUS | A4_ROTATED | A4_SMALL | A5 |
    A5_TRANSVERSE | A5_EXTRA | A5_ROTATED | A6 | A6_ROTATED | A7 | A8 | A9 | A10 |
    ANSIC | ANSID | ANSIE | ARCHA | ARCHB | ARCHC | ARCHD | ARCHE | B0 | B1 | B2 | B3 | B4 |
    B4_ROTATED | B5 | B5_TRANSVERSE | B5_ROTATED | B6 | B6_ROTATED | B7 | B8 | B9 | B10 |
    C4 | C5 | C6 | COMM10 | DL | DOUBLEPOSTCARD | DOUBLEPOSTCARD_ROTATED | ENV9 | ENV10 |
    ENV11 | ENV12 | ENV14 | ENVC0 | ENVC1 | ENVC2 | ENVC3 | ENVC4 | ENVC5 | ENVC6 | ENVC65 | ENVC7 |
    ENVCHOU3 | ENVCHOU3_ROTATED | ENVCHOU4 | ENVCHOU4_ROTATED | ENVDL | ENVINVITE | ENVISOB4 | ENVISOB5 |
    ENVISOB6 | ENVITALIAN | ENVKAKU2 | ENVKAKU2_ROTATED | ENVKAKU3 | ENVKAKU3_ROTATED | ENVMONARCH |
    ENVPERSONAL | ENVPRC1 | ENVPRC1_ROTATED | ENVPRC2 | ENVPRC2_ROTATED | ENVPRC3 | ENVPRC3_ROTATED |
    ENVPRC4 | ENVPRC4_ROTATED | ENVPRC5 | ENVPRC5_ROTATED | ENVPRC6 | ENVPRC6_ROTATED | ENVPRC7 |
    ENVPRC7_ROTATED | ENVPRC8 | ENVPRC8_ROTATED | ENVPRC9 | ENVPRC9_ROTATED | ENVPRC10 | ENVPRC10_ROTATED |
    ENVYOU4 | ENVYOU4_ROTATED | EXECUTIVE | FANFOLDUS | FANFOLDGERMAN | FANFOLDGERMANLEGAL |
    FOLIO | ISOB0 | ISOB1 | ISOB2 | ISOB3 | ISOB4 | ISOB5 | ISOB5_EXTRA | ISOB6 | ISOB7 | ISOB8 | ISOB9 |
    ISOB10 | LEDGER | LEGAL | LEGAL_EXTRA | LETTER | LETTER_TRANSVERSE | LETTER_EXTRA | LETTER_EXTRATRANSVERSE |
    LETTER_PLUS | LETTER_ROTATED | LETTER_SMALL | MONARCH | NOTE | POSTCARD | POSTCARD_ROTATED | PRC16K |
    PRC16K_ROTATED | PRC32K | PRC32K_ROTATED | PRC32K_BIG | PRC32K_BIGROTATED | QUARTO | STATEMENT | SUPERA |
    SUPERB | TABLOID | TABLOIDEXTRA )"
>

<!ELEMENT report   ((configuration | reportheader | reportfooter | no-data-band |
                     pageheader | pagefooter | watermark | groups |
                     items | functions | include | parser-config)*)>

<!ATTLIST report
width          CDATA           #IMPLIED
height         CDATA           #IMPLIED
name           CDATA           #IMPLIED
pageformat     %pageFormats;   #IMPLIED
orientation    (%orientations;) "portrait"
leftmargin     CDATA           #IMPLIED
rightmargin    CDATA           #IMPLIED
topmargin      CDATA           #IMPLIED
bottommargin   CDATA           #IMPLIED
pagespan       CDATA           #IMPLIED
>

<!ELEMENT include EMPTY>
<!ATTLIST include
src            CDATA           #REQUIRED
>

<!--
Defines the parser properties. These properties can be used as macros
in the report definition, similiar to the properties used in ANT-build files.
If a property with the name "property" is defined, then it can be referenced
later with "${property}" in any attribute value or CDATA section.
-->
<!ELEMENT parser-config  (property*)>


<!--

  Configure this instance of the report. You may use all defined ReportConfigurationKeys
  as PropertyNames. See jfreereport.properties for more details.

  This can be used to define the PDF-FontEncoding for an Report.

  -->
<!ELEMENT configuration (property*)>

<!--

  The reportheader can contain any band-element.
  The height of the report header is ignored, if the header and footer is
  printed on an own page.

  As with every element container you may define default font settings
  for sub elements without an own font definition.

  In an header the ownpage is translated as pagebreak_after_print,
  on an footer that attribute is translated to pagebreak_before_print.
  -->
<!ELEMENT reportheader ( %itemelements; )>
<!ATTLIST reportheader
height                 CDATA           #IMPLIED
fixed-position         CDATA           #IMPLIED
pagebreak-after-print     (%boolean;)  #IMPLIED
layout                 CDATA           #IMPLIED
%basicform;
%fontdef;
>

<!ELEMENT reportfooter ( %itemelements; )>
<!ATTLIST reportfooter
fixed-position         CDATA          #IMPLIED
pagebreak-before-print   (%boolean;)  #IMPLIED
height                 CDATA          #IMPLIED
layout                 CDATA          #IMPLIED
%basicform;
%fontdef;
>


<!--

  The pageheader can contain any band-element. Be aware, that the
  page header cannot create pagebreaks. If the content in the pageheader
  is to large for a single page (or no other content can fit on the
  page after the pageheader has printed), the report processing will
  fail.

  As with every element container you may define default font settings
  for sub elements without an own font definition.

  -->
<!ELEMENT pageheader ( %itemelements; )>
<!ATTLIST pageheader
onfirstpage    (%boolean;)   #IMPLIED
onlastpage     (%boolean;)   #IMPLIED
height         CDATA         #IMPLIED
layout         CDATA         #IMPLIED
%basicform;
%fontdef;
>

<!--

  The pagefooter should not contain dynamic elements. Be aware, that the
  page header cannot create pagebreaks. If the content in the pageheader
  is to large for a single page (or no other content can fit on the
  page after the pageheader has printed), the report processing will
  fail.

  Dynamic elements can change their height on every event. If the element
  changes during a pagebreak, it can happen, that there is not enough space
  to print the contents of the element. Dynamic element can also influence
  the page break detection in an invalid way - causing pagebreak to be
  issued to early or to late.

  As with every element container you may define default font settings
  for sub elements without an own font definition.

  -->
<!ELEMENT pagefooter ( %itemelements; )>
<!ATTLIST pagefooter
onfirstpage    (%boolean;)   #IMPLIED
onlastpage     (%boolean;)   #IMPLIED
height         CDATA         #IMPLIED
layout         CDATA         #IMPLIED
%basicform;
%fontdef;
>

<!--

  The tag encapsulates all groups. This tag helps to keep parsing
  simple. If no groups are defined, a default group is created and
  contains all elements of the report datarow

  -->
<!ELEMENT groups (group*)>


<!ELEMENT group  ((groupheader | groupfooter | fields)*)>
<!ATTLIST group
name           CDATA         #IMPLIED
>

<!--

  A group header is printed before a group starts. A group start
  is invoked when one element that was referenced in the field list
  changes and on the start of the report generation.

  If pagebreak-before-print is set to true, a page break will be forced before
  the group header is printed; a pagebreak-after-print does the same after
  the group header has been printed.

  If repeat is set to true, this header is repeated after an pagebreak
  if this group is still active. If an other groupheader in an subgroup
  has the repeat flag set, all headers are printed in their order of
  appearance.

  -->
<!ELEMENT groupheader ( %itemelements; )>
<!ATTLIST groupheader
pagebreak-after-print     (%boolean;)   #IMPLIED
pagebreak-before-print    (%boolean;)   #IMPLIED
repeat                    (%boolean;)   #IMPLIED
height                    CDATA         #IMPLIED
fixed-position            CDATA         #IMPLIED
layout                    CDATA         #IMPLIED
%basicform;
%fontdef;
>

<!--

  A group footer is printed when a group is finished. A group is
  finished, when one element, that was referenced in the field list,
  changes its value and at the end of the report generation.

  If pagebreak-before-print is set to true, a page break will be forced before
  the group footer is printed; a pagebreak-after-print does the same after
  the group footer has been printed.

  -->
<!ELEMENT groupfooter ( %itemelements; )>
<!ATTLIST groupfooter
pagebreak-after-print     (%boolean;)   #IMPLIED
pagebreak-before-print    (%boolean;)   #IMPLIED
repeat                    (%boolean;)   #IMPLIED
height                    CDATA         #IMPLIED
fixed-position            CDATA         #IMPLIED
layout                    CDATA         #IMPLIED
%basicform;
%fontdef;
>

<!--

  The name of the fields or functions that have to change for
  a group break.

  A report group may have more than one group element.
  A fields list may only contain strings defining the
  names of the items which form a group. This is not
  limited to items from the data model, you may also
  enter expressions here.

  If you define a subgroup, then you'll have to include all
  fields of the parent group and at least one new field.
  The field is not required to exist. If the field does not
  exist during the report processing, the value 'null' is used
  as replacement for the field's content.

 -->
<!ELEMENT fields  (field*)>
<!ELEMENT field  (#PCDATA)>

<!--

  The watermark element is printed before any other element is
  printed on a new page. That band can consume the complete space
  of the page - it will never trigger a pagebreak.

 -->
<!ELEMENT watermark   ( %itemelements; )>
<!ATTLIST watermark
height         CDATA          #IMPLIED
layout         CDATA          #IMPLIED
%basicform;
%fontdef;
>


<!ELEMENT items   ( %itemelements; )>
<!ATTLIST items
pagebreak-after-print     (%boolean;)   #IMPLIED
pagebreak-before-print    (%boolean;)   #IMPLIED
fixed-position            CDATA         #IMPLIED
height                    CDATA         #IMPLIED
layout                    CDATA         #IMPLIED
%basicform;
%fontdef;
>

<!--

  Defines a sub band. Subbands cannot generate pagebreak for now.
  These bands inherit the style properties of their parents.

  If no width is specified, the width will be computed according
  to the elements contained in that band.

  -->
<!ELEMENT band ( %itemelements; )>
<!ATTLIST band
x              CDATA          #IMPLIED
y              CDATA          #IMPLIED
width          CDATA          #IMPLIED
height         CDATA          #IMPLIED
layout         CDATA          #IMPLIED
%basicform;
%fontdef;
>

<!--
  A simple label, static text that does not change. Labels define no
  'nullstring' as their content cannot be possibly null using a valid parser.
  -->
<!ELEMENT label   (#PCDATA)>
<!ATTLIST label
%basicform;
%position;
%fontdef;
>

<!--
  A simple text field.
  -->
<!ELEMENT string-field   EMPTY>
<!ATTLIST string-field
%basicform;
%position;
%fontdef;
fieldname   CDATA    #REQUIRED
nullstring  CDATA    #IMPLIED
>

<!--

  A simple label, static text that does not change, the text
  contains a ResourceBundle key, which is looked up during the
  report processing.

  -->
<!ELEMENT resource-label   (#PCDATA)>
<!ATTLIST resource-label
%basicform;
%fontdef;
%position;
nullstring           CDATA         #IMPLIED
resource-base        CDATA         #IMPLIED
>

<!--

  A text field. The field data contains a ResourceBundle key,
  which is looked up during the report processing.

  -->
<!ELEMENT resource-field   EMPTY>
<!ATTLIST resource-field
%basicform;
%fontdef;
%position;
nullstring           CDATA         #IMPLIED
resource-base        CDATA         #IMPLIED
fieldname            CDATA         #REQUIRED
>


<!ELEMENT number-field   EMPTY>
<!ATTLIST number-field
%basicform;
%position;
%fontdef;
format		           CDATA        #IMPLIED
fieldname            CDATA        #REQUIRED
nullstring           CDATA        #IMPLIED
excel-format		     CDATA        #IMPLIED
>

<!ELEMENT date-field   EMPTY>
<!ATTLIST date-field
%basicform;
%position;
%fontdef;
format		           CDATA         #IMPLIED
fieldname            CDATA         #REQUIRED
nullstring           CDATA         #IMPLIED
excel-format		     CDATA         #IMPLIED
>


<!--

   The image reference links an external image into the report.

  -->
<!ELEMENT imageref   EMPTY>
<!ATTLIST imageref
%position;
name                 CDATA         #IMPLIED
styleClass           CDATA         #IMPLIED
src                  CDATA         #REQUIRED
dynamic              (%boolean;)   #IMPLIED
visible              (%boolean;)   #IMPLIED
layout-cachable      (%boolean;)   #IMPLIED
scale                (%boolean;)   #IMPLIED
keepAspectRatio      (%boolean;)   #IMPLIED
href                 CDATA         #IMPLIED
href-window          CDATA         #IMPLIED
>
<!--

   The image reference links an external image into the report. This element expects an
   Graphics2D-Object in the datasource.

  -->
<!ELEMENT image-field  EMPTY>
<!ATTLIST image-field
%position;
fieldname            CDATA         #REQUIRED
name                 CDATA         #IMPLIED
styleClass           CDATA         #IMPLIED
dynamic              (%boolean;)   #IMPLIED
visible              (%boolean;)   #IMPLIED
layout-cachable      (%boolean;)   #IMPLIED
scale                (%boolean;)   #IMPLIED
keepAspectRatio      (%boolean;)   #IMPLIED
href                 CDATA         #IMPLIED
href-window          CDATA         #IMPLIED
>

<!--

   The image reference links an external image into the report. This element expects an
   URL or URL-String in the datasource.

  -->
<!ELEMENT imageurl-field   EMPTY>
<!ATTLIST imageurl-field
%position;
fieldname            CDATA         #REQUIRED
name                 CDATA         #IMPLIED
styleClass           CDATA         #IMPLIED
dynamic              (%boolean;)   #IMPLIED
visible              (%boolean;)   #IMPLIED
layout-cachable      (%boolean;)   #IMPLIED
scale                (%boolean;)   #IMPLIED
keepAspectRatio      (%boolean;)   #IMPLIED
href                 CDATA         #IMPLIED
href-window          CDATA         #IMPLIED
>

<!--

  The rectangle is a filled rectangular area. No outline is drawn.

  -->
<!ELEMENT rectangle EMPTY>
<!ATTLIST rectangle
%position;
%basicform;
draw                 (%boolean;)   #IMPLIED
fill                 (%boolean;)   #IMPLIED
weight               CDATA         #IMPLIED
stroke-style         (%stroketypes;)   #IMPLIED
layout-cachable      (%boolean;)   #IMPLIED
visible              (%boolean;)   #IMPLIED
>

<!--

  The rectangle is a filled rectangular area. No outline is drawn.

  -->
<!ELEMENT round-rectangle EMPTY>
<!ATTLIST round-rectangle
%position;
%basicform;
draw                 (%boolean;)   #IMPLIED
fill                 (%boolean;)   #IMPLIED
weight               CDATA         #IMPLIED
stroke-style         (%stroketypes;)   #IMPLIED
layout-cachable      (%boolean;)   #IMPLIED
visible              (%boolean;)   #IMPLIED
arc-width            CDATA         #IMPLIED
arc-height           CDATA         #IMPLIED
>

<!--
  Creates a line shape element. When using relative coordinates,
  you should also supply a width and a height for the bounds.

  JFreeReport will construct the bounds for the line shape using
  the x1, y1 coordinates and the given width or height. If no
  width or height is given, the missing values will be computed from
  the difference between x2 and x1 and y2 to y1.

  This heuristic might fail for relative coordinates. In that case,
  use the alternate definition with an explicit 'width' and 'height'.

  Line shapes will always be scaled, without preserving the aspect
  ratio.
 -->
<!ELEMENT line      EMPTY>
<!ATTLIST line
x1                   CDATA         #IMPLIED
y1                   CDATA         #IMPLIED
x2                   CDATA         #IMPLIED
y2                   CDATA         #IMPLIED
width                CDATA         #IMPLIED
height               CDATA         #IMPLIED
color                CDATA         #IMPLIED
name                 CDATA         #IMPLIED
styleClass           CDATA         #IMPLIED
weight               CDATA         #IMPLIED
stroke-style         (%stroketypes;)   #IMPLIED
layout-cachable      (%boolean;)   #IMPLIED
href                 CDATA         #IMPLIED
href-window          CDATA         #IMPLIED
visible              (%boolean;)   #IMPLIED
>


<!--
-->
<!ELEMENT drawable-field   EMPTY>
<!ATTLIST drawable-field
%position;
fieldname            CDATA         #REQUIRED
name                 CDATA         #IMPLIED
styleClass           CDATA         #IMPLIED
href                 CDATA         #IMPLIED
href-window          CDATA         #IMPLIED
layout-cachable      (%boolean;)   #IMPLIED
dynamic              (%boolean;)   #IMPLIED
visible              (%boolean;)   #IMPLIED
>

<!ELEMENT drawable-url-field   EMPTY>
<!ATTLIST drawable-url-field
%position;
fieldname            CDATA         #REQUIRED
name                 CDATA         #IMPLIED
styleClass           CDATA         #IMPLIED
href                 CDATA         #IMPLIED
href-window          CDATA         #IMPLIED
layout-cachable      (%boolean;)   #IMPLIED
dynamic              (%boolean;)   #IMPLIED
visible              (%boolean;)   #IMPLIED
>

<!ELEMENT drawableref   EMPTY>
<!ATTLIST drawableref
%position;
src                  CDATA         #REQUIRED
name                 CDATA         #IMPLIED
styleClass           CDATA         #IMPLIED
href                 CDATA         #IMPLIED
href-window          CDATA         #IMPLIED
layout-cachable      (%boolean;)   #IMPLIED
dynamic              (%boolean;)   #IMPLIED
visible              (%boolean;)   #IMPLIED
>

<!ELEMENT component-field   EMPTY>
<!ATTLIST component-field
%position;
fieldname            CDATA         #REQUIRED
name                 CDATA         #IMPLIED
styleClass           CDATA         #IMPLIED
href                 CDATA         #IMPLIED
href-window          CDATA         #IMPLIED
layout-cachable      (%boolean;)   #IMPLIED
dynamic              (%boolean;)   #IMPLIED
visible              (%boolean;)   #IMPLIED
>


<!--

  A generic shape field. The shape is defined in the DataRow.

  -->
<!ELEMENT shape-field EMPTY>
<!ATTLIST shape-field
%position;
%basicform;
fieldname            CDATA         #REQUIRED
href                 CDATA         #IMPLIED
href-window          CDATA         #IMPLIED
draw                 (%boolean;)   #IMPLIED
fill                 (%boolean;)   #IMPLIED
weight               CDATA         #IMPLIED
stroke-style         (%stroketypes;)   #IMPLIED
>

<!ELEMENT message-field  (#PCDATA)>
<!ATTLIST message-field
%basicform;
%position;
%fontdef;
nullstring           CDATA        #IMPLIED
>

<!--

  A message field is text that contains placeholder for data from other columns.
  The #PCDATA section contains a ResourceBundle key, which is looked up during the
  report processing. That lookup result is used as format string.

  -->
<!ELEMENT resource-message   (#PCDATA)>
<!ATTLIST resource-message
%basicform;
%fontdef;
%position;
nullstring           CDATA         #IMPLIED
resource-base        CDATA         #IMPLIED
>

<!--
  Anchors are not visible, so it makes no sense to define visual parameters.
 -->
<!ELEMENT anchor-field  EMPTY>
<!ATTLIST anchor-field
x                    CDATA        #IMPLIED
y                    CDATA        #IMPLIED
name                 CDATA        #IMPLIED
styleClass           CDATA        #IMPLIED
fieldname            CDATA        #REQUIRED
>


<!--

  Functions are defined in a function library.
  Every referenced function has to be defined in the
  library in order to be loaded and executed correctly.

  -->
<!ELEMENT functions  (function | expression | property-ref)*>

<!--

  A reference to a report property. This property is predefined here and can be accessed
  as any datasource. The value defaults to null if no more data is given. The encoding parameter
  defaults to "text", "serialized-base64" is implemented later to allow serialized objects
  as value for the property.

-->
<!ELEMENT property-ref  (#PCDATA)>
<!ATTLIST property-ref
name       CDATA   #REQUIRED
encoding   CDATA   #IMPLIED
class      CDATA   #IMPLIED
>

<!--

  A defined function has a valid implementing class that implement
  the org.jfree.report.function.Function interface. Functions have access to the datarow and
  can access other functions or expressions or the datasource. Functions are statefull and maintain
  their state during the report generation. For stateless userdefined computations consider using
  an expression instead of functions, as expression are cheaper to compute and maintain when using
  huge reports.

  Function parameters are given by propery elements. For visual
  editing, function must obey to the java-beans rules (use get*/set*
  methods, perhaps provide beaninfo and so on)

  The deplevel attribute can be used to priorize the functions. Functions with an higher depencylevel
  are executed before any function with lower depency levels. Depencylevels lower than 0 are not allowed.
  -->
<!ELEMENT function   (properties?)>
<!ATTLIST function
class      CDATA    #REQUIRED
name       CDATA    #REQUIRED
deplevel   CDATA    #IMPLIED
>


<!--

  An expression is a stateless userdefined function. It can access the datarow and the reportproperties
  to perform its task. Using the datarow an expression has access to the datasource and other functions
  and expressions.

  Expression parameters are given by propery elements. For visual
  editing, Expressions must obey to the java-beans rules (use get*/set*
  methods, perhaps provide beaninfo and so on)

  The deplevel attribute can be used to priorize the functions. Functions with an higher depencylevel
  are executed before any function with lower depency levels. Depencylevels lower than 0 are not allowed.
  -->
<!ELEMENT expression   (properties?)>
<!ATTLIST expression
class      CDATA    #REQUIRED
name       CDATA    #REQUIRED
deplevel   CDATA    #IMPLIED
>

<!--

  Defines a set of properties for a function.

  -->
<!ELEMENT properties  (property*)>

<!--

  A single property, a name - value pair.

  -->
<!ELEMENT property    (#PCDATA)>
<!ATTLIST property
name       CDATA    #REQUIRED
class      CDATA    #IMPLIED
>

