<?xml version="1.0" encoding="UTF-8"?>
<!--
Document Status : DRAFT<p>
Author : Joseph Levin <p>
Description: Defines the WepsTable xml "standard". <p>
<h2>Document History</h2>
<b>Thursday, June 22, 2006</b>
<ul>
<li>Added a parent attribute to column, so I can enable column inheritence.</li>
<li>Add a columnstyles element under table to contain the columns which may be inherited by other tables. This allows us to avoid inheriting column structure.</li>
<li>Moved the format attribute out of displayunits and made it it's own element under data. This allows us to extend the format for strings or dates.</li>
</ul>
<b>Wednesday, June 21, 2006</b>
<ul>
<li>Backtracked and put columngroup back in. They make the organization of a table easier to understand.</li>
<li>Added lists of avaliable options for elements into the comments.</li>
<li>Expanded the border element to include sides and color.</li>
<li>Defined the column element and its children.</li>
</ul>
<b>Tuesday, June 20, 2006</b>
<ul>
<li><strike>Column group has been removed. The columns tag now serves as a grouping element.</strike></li>
<li>The cellstyle element has been shortended to style.</li>
<li>Updated the label elements.</li>
</ul>
@title WEPS Table XML Definition
@root table
-->
<!--
Root element of a WEPSTable.
-->
<!ELEMENT table (
cellstyles?,
columnstyles?,
columns?,
frozenrows?,
frozencolumns?,
defaultcellstyle?,
defaultlabelstyle?,
rowlabeldisplay?,
columnlabeldisplay?
)>
<!--@attr parent The file name of a table to extend.-->
<!ATTLIST table parent CDATA #IMPLIED>
<!--The cellstyles element contains the styles referenced by the table.-->
<!ELEMENT cellstyles (style*)>
<!--The columnstyle elements contains the columns which may be inherited by other tables or columns.-->
<!ELEMENT columnstyles (column*)>
<!--The columns elements contains the columns.-->
<!ELEMENT columns ((columngroup | column)+)>
<!--Number of rows to freeze in the table.-->
<!ELEMENT frozenrows (#PCDATA)>
<!--Number of columns to freeze in the table.-->
<!ELEMENT frozencolumns (#PCDATA)>
<!--Id of the cellstyle to use as a default for data cells in the table. -->
<!ELEMENT defaultcellstyle (#PCDATA)>
<!--Id of the cellstyle to use as a default for label cells in the table. -->
<!ELEMENT defaultlabelstyle (#PCDATA)>
<!--Boolean value indicates if the table should display labels for each row.-->
<!ELEMENT rowlabeldisplay (#PCDATA)>
<!--Boolean value indicates if the table should display labels for each column.-->
<!ELEMENT columnlabeldisplay (#PCDATA)>
<!--Defines the label for a column or columns grouping element.
-->
<!ELEMENT label (
text?,
image?,
style?
)>
<!--Text data.-->
<!ELEMENT text (#PCDATA)>
<!--File name of an image.-->
<!ELEMENT image (#PCDATA)>
<!--
@attr rotate Degress to rotate the image.
-->
<!ATTLIST image
rotate CDATA #IMPLIED
>
<!--
@attr spanrows Override the default WepsTable spanning.
@attr spancolumns Override the default WepsTable spanning.
-->
<!ATTLIST label
spanrows CDATA #IMPLIED
spancolumns CDATA #IMPLIED
>
<!--CellStyle Element
-->
<!ELEMENT style (
background*,
foreground*,
editable?,
traversable?,
horizontalalignment?,
verticalalignment?,
border?,
font?,
repeatbackground?,
repeatforeground?,
editor?,
renderer?
)>
<!--Background color of the cell. The value should be a hex code preceded with a # symbol.
If the repeatbackground element is used then multiple background elements may be
included.
-->
<!ELEMENT background (#PCDATA)>
<!--Foreground color of the cell. The value should be a hex code preceded with a # symbol.
If the repeatforeground element is used then multiple foreground elements may be
included.
-->
<!ELEMENT foreground (#PCDATA)>
<!--Boolean value indicating if the cells can be traversed.-->
<!ELEMENT traversable (#PCDATA)>
<!--Boolean value indicating if the cells can be edited by the user-->
<!ELEMENT editable (#PCDATA)>
<!--Specifies the horizontal alignment of the cells.
<p><b>Avaliable Horizontal Alignments</b>
<ul>
<li>LEFT</li>
<li>CENTER</li>
<li>RIGHT</li>
</ul>
-->
<!ELEMENT horizontalalignment (#PCDATA)>
<!--Specifies the vertical alignment of the cells.
<p><b>Avaliable Vertical Alignments</b>
<ul>
<li>TOP</li>
<li>MIDDLE</li>
<li>BOTTOM</li>
</ul>
-->
<!ELEMENT verticalalignment (#PCDATA)>
<!--Specifies the border style of the cells.
<p><b>Avaliable Border Styles</b>
<ul>
<li>ETCHED_IN</li>
<li>ETCHED_OUT</li>
<li>FRAME_IN</li>
<li>FRAME_OUT</li>
<li>IN</li>
<li>OUT</li>
<li>PLAIN</li>
<li>THIN</li>
<li>NONE</li>
</ul>
-->
<!ELEMENT border (#PCDATA)>
<!--
@attr left Boolean, set to true to display a left border.
@attr right Boolean, set to true to display a right border.
@attr top Boolean, set to true to display a top border.
@attr bottom Boolean, set to true to display a bottom border.
@attr all Boolean, set to true to display a boder on all sides.
@attr none Boolean, set to true to not display a border.
@attr color Border color of the cell. The value should be a hex code preceded with a # symbol.
-->
<!ATTLIST border
left (true | false) #IMPLIED
right (true | false) #IMPLIED
top (true | false) #IMPLIED
bottom (true | false) #IMPLIED
all (true | false) #IMPLIED
none (true | false) #IMPLIED
color CDATA #IMPLIED
>
<!--Specifies the font for the cells. The value should be the name of the font.-->
<!ELEMENT font (#PCDATA)>
<!--
@attr size Point size for the font.
@attr bold Boolean, set to true if the font is bold.
@attr italic Boolean, set to true if the font is italic.
-->
<!ATTLIST font
size CDATA #IMPLIED
bold (true | false) #IMPLIED
italic (true | false) #IMPLIED
>
<!--
Specifies how to repeat the background colors of the table.
<p><b>Avaliable Repeats</b>
<ul>
<li>NONE</li>
<li>ROW</li>
<li>COLUMN</li>
</ul>
-->
<!ELEMENT repeatbackground (#PCDATA)>
<!--
Specifies how to repeat the foreground colors of the table.
<p><b>Avaliable Repeats</b>
<ul>
<li>NONE</li>
<li>ROW</li>
<li>COLUMN</li>
</ul>
-->
<!ELEMENT repeatforeground (#PCDATA)>
<!--
The editor element is intended to be a last resort when the WepsTable does not know how to present data
to the user for editing. Include the full class path for the JCCellEditor.
@example %<editor>com.klg.jclass.cell.editors.JCStringCellEditor</editor>%
-->
<!ELEMENT editor (#PCDATA)>
<!--
The renderer element is intended to be a last resort when the WepsTable does not know how to present data
to the user.. Include the full class path for the JCCellRenderer.
@example %<renderer>com.klg.jclass.cell.renderers.JCStringCellRenderer</renderer>%
-->
<!ELEMENT renderer (#PCDATA)>
<!--
@attr id Unique id for the cell style. This allows cell styles or columns to extend the cell style.
@attr parent Id of a cell style to extend. #cells or #labels will extend the default JCTable styles.
-->
<!ATTLIST cellstyle
id ID #IMPLIED
parent IDREF #IMPLIED
>
<!--
Columngroups allow for column spanning in the header of a WepsTable.
-->
<!ELEMENT columngroup (label*, (columngroup | column)+)>
<!--
Column Element
-->
<!ELEMENT column (
label*,
action*,
data?,
style?,
width?
)>
<!--
@attr id Unique id for the column. This allows the column to be referenced.
@attr parent Id of a column to inherit from. This column may be a previously defined column, a column in the columnstyles collection or a column in the columnstyles collection of parent tables.
-->
<!ATTLIST column
id ID #IMPLIED
parent IDREF #IMPLIED
>
<!--
Action code to return when an event is fired on the column. More than one action may be added to a column.
-->
<!ELEMENT action (#PCDATA)>
<!--
@attr type The type of action to respond to.
<p><b>Avaliable Actions</b>
<ul>
<li>SINGLECLICK</li>
<li>DOUBLECLICK</li>
</ul>
-->
<!ATTLIST action
type CDATA #IMPLIED
>
<!--
Container element for the details of the data contained in the column.
-->
<!ELEMENT data(
key?,
value?,
units?,
displayunits*,
adjust*,
limit*,
list?,
format*
)>
<!--
@attr type The type of data this column contains.
<p><b>Avaliable Data Types</b>
<ul>
<li>TEXT</li>
<li>MULTILINE</li>
<li>NUMERIC</li>
<li>BOOLEAN</li>
<li>LIST</li>
<li>IMAGE</li>
</ul>
-->
<!ATTLIST data
type CDATA #IMPLIED
>
<!--
The key is a string used to link the column to the datasource. It should be the label of column in the datasource. If omitted then the column id is used as the key.
-->
<!ELEMENT key (#PCDATA)>
<!--
Static value.
-->
<!ELEMENT value (#PCDATA)>
<!--
Measurement units that the data is stored in. NOTE: Only applies to NUMERIC columns.
-->
<!ELEMENT units (#PCDATA)>
<!--
Measurement units to display the data in for a given measurement system. NOTE: Only applies to NUMERIC columns.
-->
<!ELEMENT displayunits (#PCDATA)>
<!--
@attr system The measurement unit system.
<p><b>Possible Measurement Unit Systems</b>
<ul>
<li>SI</li>
<li>US</li>
</ul>
@attr format Format mask to apply when displaying the data.
-->
<!ATTLIST displayunits
system CDATA #IMPLIED
format CDATA #IMPLIED
>
<!--
format Format mask to apply when displaying the data. NOTE: Only applies to NUMERIC columns.
-->
<!ELEMENT format (#PCDATA)>
<!--
@attr system The measurement unit system.
<p><b>Possible Measurement Unit Systems</b>
<ul>
<li>SI</li>
<li>US</li>
</ul>
-->
<!ATTLIST format
system CDATA #IMPLIED
>
<!--
Adjustment to apply to the data. You may add more than one adjustment. NOTE: Only applies to NUMERIC columns.
-->
<!ELEMENT adjust (#PCDATA)>
<!--
@attr operation The operation to use when applying the adjustment value.
<p><b>Avaliable Operations</b>
<ul>
<li>ADD</li>
<li>SUBTRACT</li>
<li>MULTIPLY</li>
<li>DIVIDE</li>
</ul>
@attr format Format mask to apply when displaying the data.
-->
<!ATTLIST adjust
operation CDATA #IMPLIED
>
<!--
Limit to apply when displaying the data. More than one limit may be applied. NOTE: Only applies to NUMERIC columns.
-->
<!ELEMENT limit (#PCDATA)>
<!--
@attr type The measurement unit system.
<p><b>Possible Limit Types</b>
<ul>
<li>LOWER</li>
<li>UPPER</li>
</ul>
@attr inclusive Boolean indicating if the bound is inclusive.
@attr text String to display if the data is outside the limit. If omitted then a string is created using the limit type, inclusivity and the boundry value.
@attr allowzero Boolean indicating if 0 will be displayed even if it is outside the limit boundry. Default is true.
-->
<!ATTLIST limit
type CDATA #IMPLIED
inclusive (true | false) #IMPLIED
text CDATA #IMPLIED
allowzero (true | false) #IMPLIED
>
<!--
Defines the text to display for a given value. NOTE: Only applies to LIST columns.
-->
<!ELEMENT list (listitem*)>
<!ELEMENT listitem (#PCDATA)>
<!--
@attr value The value to associate the listitem with.
-->
<!ATTLIST listitem
value CDATA #REQUIRED
>
<!--
Width element
-->
<!ELEMENT width (#PCDATA)>
<!--
@attr min The minimum width allowed.
@attr max The maximum width allowed.
-->
<!ATTLIST width
min CDATA #IMPLIED
max CDATA #IMPLIED
>