Extracted from: http://www.w3.org/TR/1998/NOTE-PGML-19980410, 1998-04-11
Appendix D: PGML DTD
<!-- Document Type Definition for the Precision Graphics
Markup Language, PGML.
version = 1.0 status = draft date = 23.March.1998
syntax = XML author = jnava@adobe.com-->
<!-- =============================================================== -->
<!-- Begin Graphics State attributes
The gs_ prefix is added to stand for Graphics State, whose
scoping rules are as follows:
When the PGML interpreter encounters a new pgml, group,
path, text, textspan or predefined graphic element,
the Graphics State is "saved." Any changes in the Graphics State
that occur during processing these elements apply only to the
graphics defined within the element. When the PGML interpreter
encounters the end of the element the Graphics State is "restored"
to its prior condition.
-->
<!--
The value of the concat attribute is a sequence of 6 numbers
separated by spaces which represents an arbitrary 2x3 matrix
in the form of six values: a b c d e f. The given matrix is
concatenated with the current transformation matrix to produce
a new transformation matrix.
-->
<!ENTITY % gs_general_attributes
'concat CDATA #IMPLIED
clippath CDATA #IMPLIED'
>
<!ENTITY % gs_fillstroke_attributes
'fill (0 | 1) "1"
fillrule (nonzero | evenodd) "nonzero"
fillcolor CDATA "black"
fillcolorspace CDATA "sRGB"
fillpaintserver CDATA "color"
fillparams CDATA #IMPLIED
fillname CDATA #IMPLIED
stroke (0 | 1) "0"
strokecolor CDATA "black"
strokecolorspace CDATA "sRGB"
strokepaintserver CDATA "color"
strokeparams CDATA #IMPLIED
strokename CDATA #IMPLIED
opacity CDATA "1"
antialias (0 | 1) "1"'
>
<!ENTITY % gs_stroking_attributes
'linecap (0 | 1 | 2) "0"
linejoin (0 | 1 | 2) "0"
miterlimit CDATA "10"
dasharray CDATA "solid"
dashoffset CDATA "0"
linewidth CDATA "1"'
>
<!ENTITY % gs_font_attribute 'font CDATA #IMPLIED' >
<!ENTITY % gs_text_attributes
'%gs_font_attribute;
textsize CDATA #IMPLIED
charspacing CDATA "0"
wordspacing CDATA "0"
textrise CDATA "0"'
>
<!ENTITY % gs_all_attributes
'%gs_general_attributes;
%gs_fillstroke_attributes;
%gs_stroking_attributes;
%gs_text_attributes;'
>
<!--
End of Graphics State attributes
-->
<!-- =============================================================== -->
<!ENTITY % event_handler_attributes
'onmousedown CDATA #IMPLIED
onmouseup CDATA #IMPLIED
onclick CDATA #IMPLIED
ondblclick CDATA #IMPLIED
onmouseover CDATA #IMPLIED
onmousemove CDATA #IMPLIED
onmouseout CDATA #IMPLIED
onkeydown CDATA #IMPLIED
onkeypress CDATA #IMPLIED
onkeyup CDATA #IMPLIED
onload CDATA #IMPLIED
onunload CDATA #IMPLIED'
>
<!-- =============================================================== -->
<!ENTITY % base_content_model
'(pgml | group | path | img | text | rectangle |
circle | ellipse | piewedge | script | private |
drawobject | animation)*'
>
<!ENTITY % base_content_attributes
'%gs_all_attributes;
name ID #IMPLIED
description CDATA #IMPLIED
visibility (0 | 1) "1"
xml:link CDATA #FIXED "simple"
href CDATA #IMPLIED
refx CDATA #IMPLIED
refy CDATA #IMPLIED'
>
<!-- =============================================================== -->
<!--
boundingbox takes values for x, y, width and height separated
by a space.
-->
<!ENTITY % gs_bounding_box_attribute 'boundingbox CDATA #IMPLIED' >
<!--
The base_content_model; pgml and head elements
-->
<!ELEMENT pgml (head?, %base_content_model;) >
<!ATTLIST pgml %base_content_attributes;
%gs_bounding_box_attribute;
%event_handler_attributes;
preserveaspectratio (0 | 1) "1"
x CDATA #IMPLIED
y CDATA #IMPLIED
width CDATA #IMPLIED
height CDATA #IMPLIED
src CDATA #IMPLIED
>
<!-- =============================================================== -->
<!--
head element .
-->
<!ELEMENT head (extension | objectserver | paintserver |
colorspaceserver | filterserver |
script | private |
graphic | lineargradient | animation)*>
<!-- =============================================================== -->
<!--
group element
-->
<!ELEMENT group (%base_content_model;) >
<!ATTLIST group %base_content_attributes;
%event_handler_attributes;
>
<!-- =============================================================== -->
<!--
path element and it's sub-elements
-->
<!ELEMENT path (private?, (moveto | lineto | curveto | arc | closepath)*) >
<!ATTLIST path %base_content_attributes;
%event_handler_attributes;
data CDATA #IMPLIED
>
<!ELEMENT moveto EMPTY >
<!ATTLIST moveto x CDATA #IMPLIED
y CDATA #IMPLIED
dx CDATA #IMPLIED
dy CDATA #IMPLIED
>
<!ELEMENT lineto EMPTY >
<!ATTLIST lineto x CDATA #IMPLIED
y CDATA #IMPLIED
dx CDATA #IMPLIED
dy CDATA #IMPLIED
>
<!ELEMENT curveto EMPTY >
<!ATTLIST curveto x CDATA #IMPLIED
y CDATA #IMPLIED
x1 CDATA #IMPLIED
y1 CDATA #IMPLIED
x2 CDATA #IMPLIED
y2 CDATA #IMPLIED
dx CDATA #IMPLIED
dy CDATA #IMPLIED
dx1 CDATA #IMPLIED
dy1 CDATA #IMPLIED
dx2 CDATA #IMPLIED
dy2 CDATA #IMPLIED
>
<!ELEMENT arc EMPTY >
<!ATTLIST arc x CDATA #IMPLIED
y CDATA #IMPLIED
dx CDATA #IMPLIED
dy CDATA #IMPLIED
r CDATA #IMPLIED
ang1 CDATA #IMPLIED
ang2 CDATA #IMPLIED
clockwise (0 | 1) "0"
>
<!ELEMENT closepath EMPTY >
<!-- =============================================================== -->
<!--
predefined graphic elements
-->
<!ELEMENT rectangle EMPTY >
<!ATTLIST rectangle %base_content_attributes;
%event_handler_attributes;
x CDATA #IMPLIED
y CDATA #IMPLIED
width CDATA #IMPLIED
height CDATA #IMPLIED
rounding CDATA #IMPLIED
>
<!ELEMENT circle EMPTY >
<!ATTLIST circle %base_content_attributes;
%event_handler_attributes;
cx CDATA #IMPLIED
cy CDATA #IMPLIED
r CDATA #IMPLIED
>
<!ELEMENT ellipse EMPTY >
<!ATTLIST ellipse %base_content_attributes;
%event_handler_attributes;
x CDATA #IMPLIED
y CDATA #IMPLIED
rx CDATA #IMPLIED
ry CDATA #IMPLIED
>
<!ELEMENT piewedge EMPTY >
<!ATTLIST piewedge %base_content_attributes;
%event_handler_attributes;
x CDATA #IMPLIED
y CDATA #IMPLIED
r CDATA #IMPLIED
ang1 CDATA #IMPLIED
ang2 CDATA #IMPLIED
>
<!-- =============================================================== -->
<!--
img element
Below, the ATTLIST only shows x, y, width, height and src,
but the actual ATTLIST would have (nearly) everything
that HTML's <img> element has.
-->
<!ELEMENT img EMPTY >
<!ATTLIST img %event_handler_attributes;
%gs_general_attributes;
x CDATA #IMPLIED
y CDATA #IMPLIED
width CDATA #IMPLIED
height CDATA #IMPLIED
src CDATA #IMPLIED
>
<!-- =============================================================== -->
<!--
text and textspan elements
-->
<!ELEMENT text (private?,(#PCDATA | textspan )*) >
<!ATTLIST text %base_content_attributes;
%event_handler_attributes;
x CDATA #IMPLIED
y CDATA #IMPLIED
>
<!ELEMENT textspan (private?,(#PCDATA | textspan )*) >
<!ATTLIST textspan %base_content_attributes;
%event_handler_attributes;
altchars CDATA #IMPLIED
altglyph CDATA #IMPLIED
altglyphid CDATA #IMPLIED
>
<!-- =============================================================== -->
<!--
drawobject element
-->
<!ELEMENT drawobject (private?) >
<!ATTLIST drawobject objectserver CDATA #IMPLIED
params CDATA #IMPLIED
objectref IDREF #IMPLIED
x CDATA #IMPLIED
y CDATA #IMPLIED
width CDATA #IMPLIED
height CDATA #IMPLIED
>
<!-- =============================================================== -->
<!--
script element
Below, the ATTLIST is specified as EMPTY, but the actual
ATTLIST would match what HTML's <script> element has.
-->
<!ELEMENT script (#PCDATA) >
<!-- =============================================================== -->
<!--
private element
For application-specific private data.
-->
<!ELEMENT private (#PCDATA) >
<!-- =============================================================== -->
<!--
animation element
-->
<!ELEMENT animation (private?) >
<!ATTLIST animation target CDATA #IMPLIED
starttime CDATA #IMPLIED
duration CDATA #IMPLIED
repetitions CDATA #IMPLIED
motion CDATA #IMPLIED
motionspeed CDATA #IMPLIED
autorotate CDATA #IMPLIED
scale CDATA #IMPLIED
scalespeed CDATA #IMPLIED
rotate CDATA #IMPLIED
rotatespeed CDATA #IMPLIED
xtranslate CDATA #IMPLIED
xtranslatespeed CDATA #IMPLIED
ytranslate CDATA #IMPLIED
ytranslatespeed CDATA #IMPLIED
xshear CDATA #IMPLIED
xshearspeed CDATA #IMPLIED
yshear CDATA #IMPLIED
yshearspeed CDATA #IMPLIED
opacity CDATA #IMPLIED
opacityspeed CDATA #IMPLIED
red CDATA #IMPLIED
redspeed CDATA #IMPLIED
green CDATA #IMPLIED
greenspeed CDATA #IMPLIED
blue CDATA #IMPLIED
bluespeed CDATA #IMPLIED
hue CDATA #IMPLIED
huespeed CDATA #IMPLIED
saturation CDATA #IMPLIED
saturationspeed CDATA #IMPLIED
brightness CDATA #IMPLIED
brightnessspeed CDATA #IMPLIED
>
<!-- =============================================================== -->
<!--
extension element
-->
<!ELEMENT extension EMPTY >
<!ATTLIST extension name ID #IMPLIED
applet CDATA #IMPLIED
class CDATA #IMPLIED
proc CDATA #IMPLIED
>
<!-- =============================================================== -->
<!--
objectserver, paintserver, colorspaceserver and filterserver elements
-->
<!ELEMENT objectserver EMPTY >
<!ATTLIST objectserver name ID #IMPLIED
extension IDREF #IMPLIED
>
<!ELEMENT paintserver EMPTY >
<!ATTLIST paintserver name ID #IMPLIED
extension IDREF #IMPLIED
>
<!ELEMENT colorspaceserver EMPTY >
<!ATTLIST colorspaceserver name ID #IMPLIED
extension IDREF #IMPLIED
>
<!ELEMENT filterserver EMPTY >
<!ATTLIST filterserver name ID #IMPLIED
extension IDREF #IMPLIED
>
<!-- =============================================================== -->
<!--
graphic element
-->
<!ELEMENT graphic (%base_content_model;) >
<!ATTLIST graphic fill (0 | 1) "0">
<!ATTLIST graphic %base_content_attributes;
painttype (0 | 1) "0"
boundingbox CDATA #IMPLIED
xstep CDATA #IMPLIED
ystep CDATA #IMPLIED
>
<!-- =============================================================== -->
<!--
lineargradient element and it's sub-elements
-->
<!ELEMENT lineargradient ((gradientstop)*) >
<!ATTLIST lineargradient name ID #IMPLIED>
<!ELEMENT gradientstop EMPTY >
<!ATTLIST gradientstop offset CDATA #IMPLIED
midoffset CDATA #IMPLIED
color CDATA #IMPLIED
>
<!-- =============================================================== -->
<!--
End of DTD for PGML
-->
_________________________________________________________________