{ Thot structure schema for Scalable Vector Graphics }
STRUCTURE SVG;
DEFPRES SVGP;
ATTR
{ global attributes for all SVG elements }
id = text;
class = text;
PseudoClass = Text;
style_ = text;
xml_space = xml_space_default, xml_space_preserve;
{ xml_base = Text; }
{ global attributes for internal processing }
Unknown_attribute = text;
Ghost_restruct = text;
Highlight = Yes_; { to show the SVG element corresponding to the
current selection in the source view }
Namespace = text; { for children of element foreignObject }
IntEmptyShape = yes_, no_;
STRUCT
SVG
(ATTR requiredFeatures = text;
requiredExtensions = text;
systemLanguage = text;
externalResourcesRequired = false, true;
fill = text;
stroke = text;
stroke_width = text;
font_family = text;
font_size = text;
font_style = normal_, italic, oblique_, inherit;
font_variant = normal_, small_caps, inherit;
font_weight = normal_, bold_, bolder, lighter, w100, w200, w300,
w400, w500, w600, w700, w800, w900, inherit;
text_decoration = text;
viewBox = text;
x = text;
y = text;
width_ = text;
height_ = text;
Charset = text)
= LIST OF (GraphicsElement) + (XMLcomment, XMLPI, Unknown_namespace);
g
(ATTR requiredFeatures; requiredExtensions; systemLanguage;
externalResourcesRequired;
fill; stroke; stroke_width;
font_family; font_size; font_style; font_variant; font_weight;
text_decoration;
transform = text)
= LIST OF (GraphicsElement);
defs
(ATTR requiredFeatures; requiredExtensions; systemLanguage;
externalResourcesRequired;
fill; stroke; stroke_width;
font_family; font_size; font_style; font_variant; font_weight;
text_decoration;
transform;
{ graphicsElementEvents })
= LIST OF (GraphicsElement);
path
(ATTR requiredFeatures; requiredExtensions; systemLanguage;
externalResourcesRequired;
fill; stroke; stroke_width;
transform;
d = text;
pathLength = text)
= AGGREGATE
desc; title; metadata;
GRAPHICS;
END;
rect
(ATTR requiredFeatures; requiredExtensions; systemLanguage;
externalResourcesRequired;
fill; stroke; stroke_width;
transform;
x;
y;
width_;
height_;
rx = text;
ry = text)
= AGGREGATE
desc; title; metadata;
GRAPHICS;
END;
circle
(ATTR requiredFeatures; requiredExtensions; systemLanguage;
externalResourcesRequired;
fill; stroke; stroke_width;
transform;
cx = text;
cy = text;
r = text)
= AGGREGATE
desc; title; metadata;
GRAPHICS;
END;
ellipse
(ATTR requiredFeatures; requiredExtensions; systemLanguage;
externalResourcesRequired;
fill; stroke; stroke_width;
transform;
cx;
cy;
rx;
ry)
= AGGREGATE
desc; title; metadata;
GRAPHICS;
END;
line_
(ATTR requiredFeatures; requiredExtensions; systemLanguage;
externalResourcesRequired;
fill; stroke; stroke_width;
transform;
x1 = text;
y1 = text;
x2 = text;
y2 = text)
= AGGREGATE
desc; title; metadata;
GRAPHICS;
END;
polyline
(ATTR requiredFeatures; requiredExtensions; systemLanguage;
externalResourcesRequired;
fill; stroke; stroke_width;
transform;
points = text)
= AGGREGATE
desc; title; metadata;
GRAPHICS;
END;
polygon
(ATTR requiredFeatures; requiredExtensions; systemLanguage;
externalResourcesRequired;
fill; stroke; stroke_width;
transform;
points)
= AGGREGATE
desc; title; metadata;
GRAPHICS;
END;
text_
(ATTR requiredFeatures; requiredExtensions; systemLanguage;
externalResourcesRequired;
fill; stroke; stroke_width;
font_family; font_size; font_style; font_variant; font_weight;
text_decoration;
transform;
x;
y;
dx = text;
dy = text)
= LIST OF (TextComponent);
tspan
(ATTR requiredFeatures; requiredExtensions; systemLanguage;
externalResourcesRequired;
fill; stroke; stroke_width;
font_family; font_size; font_style; font_variant; font_weight;
text_decoration;
x;
y;
dx;
dy)
= LIST OF (SpanElement);
{ tref }
{ textPath }
{ altGlyph }
{ altGlyphDef }
{ altGlyphItem }
{ glyphRef }
{ font }
{ glyph }
{ missing-glyph }
{ hkern }
{ vkern }
use_
(ATTR xlink_href = text;
requiredFeatures; requiredExtensions; systemLanguage;
externalResourcesRequired;
fill; stroke; stroke_width;
font_family; font_size; font_style; font_variant; font_weight;
text_decoration;
transform;
{ graphicsElementEvents }
x;
y;
width_;
height_)
= AGGREGATE
desc; title; metadata;
END;
image
(ATTR xlink_href;
requiredFeatures; requiredExtensions; systemLanguage;
externalResourcesRequired;
transform;
x;
y;
width_;
height_)
= AGGREGATE
desc; ? title; ? metadata;
PICTURE;
SVG_Image;
END;
symbol_
(ATTR externalResourcesRequired;
fill; stroke; stroke_width;
font_family; font_size; font_style; font_variant; font_weight;
text_decoration;
viewBox;
preserveAspectRatio = text;
{ graphicsElementEvents })
= LIST OF (GraphicsElement);
{ marker }
desc = TEXT;
title = TEXT;
{ clipPath }
{ mask }
{ linearGradient }
{ radialGradient }
{ stop }
{ pattern }
a
(ATTR xlink_href;
requiredFeatures; requiredExtensions; systemLanguage;
externalResourcesRequired;
fill; stroke; stroke_width;
font_family; font_size; font_style; font_variant; font_weight;
text_decoration;
transform;
{ graphicsElementEvents }
target_ = text)
= LIST OF (CASE OF
GraphicsElement; TextComponent;
END);
{ view }
{ animate }
{ set }
{ animateMotion }
{ animateColor }
{ animateTransform }
script
(ATTR externalResourcesRequired;
type = text)
= TEXT;
style__
(ATTR type;
media = text;
title_ = text)
= TEXT;
{ color-profile }
{ color-profile-src }
{ font-face }
{ font-face-src }
{ font-face-uri }
{ font-face-format }
{ font-face-name }
{ definition-src }
{ cursor }
switch
(ATTR requiredFeatures; requiredExtensions; systemLanguage;
externalResourcesRequired;
{ PresentationAttributes-All }
fill; stroke; stroke_width;
font_family; font_size; font_style; font_variant; font_weight;
text_decoration;
transform;
{ graphicsElementEvents })
= LIST OF (CASE OF
GraphicsElement; foreignObject;
END);
foreignObject
(ATTR requiredFeatures; requiredExtensions; systemLanguage;
externalResourcesRequired;
fill; stroke; stroke_width;
font_family; font_size; font_style; font_variant; font_weight;
text_decoration;
transform;
x;
y;
width_;
height_)
= BEGIN CASE OF
HTML; MathML;
END;
END;
metadata = TEXT;
{ filter }
{ ... }
GraphicsElement
= CASE OF
desc; title; metadata;
defs;
path; text_; rect; circle; ellipse; line_; polyline; polygon;
use_; image; SVG; g; switch; a;
script; style__; symbol_;
XLink;
END;
TextComponent
= CASE OF
tspan; { must be the first option, to allow the Return key
to create tspan elements }
TEXT;
desc;
title;
metadata;
END;
SpanElement
= CASE OF
TEXT;
tspan;
desc;
title;
metadata;
END;
SVG_Image = SVG;
XMLcomment = LIST OF (XMLcomment_line = TEXT);
XMLPI = LIST OF (XMLPI_line = TEXT);
Unknown_namespace = TEXT;
EXCEPT
SVG: IsDraw, MoveResize, NoMove;
g: NoMove, NoResize, HighlightChildren, NoShowBox,
NoCreate;
defs: NoMove, NoResize, NoShowBox, NoCreate;
rect: MoveResize, HighlightChildren, NoShowBox, NoCreate;
circle: MoveResize, HighlightChildren, NoShowBox, NoCreate;
ellipse: MoveResize, HighlightChildren, NoShowBox, NoCreate;
line_: MoveResize, HighlightChildren, NoShowBox, NoCreate;
polyline: MoveResize, HighlightChildren, NoShowBox, NoCreate;
polygon: MoveResize, HighlightChildren, NoShowBox, NoCreate;
path: MoveResize, HighlightChildren, NoShowBox, NoCreate;
text_: MoveResize, NoResize, NoShowBox, ReturnCreateWithin,
NoCreate;
tspan: NoShowBox;
use_: NoMove, NoResize, HighlightChildren, NoShowBox,
NoCreate;
image: MoveResize, HighlightChildren, NoShowBox;
symbol_: NoMove, NoResize, HighlightChildren,NoShowBox,
NoCreate;
a: NoMove, NoResize, HighlightChildren, NoShowBox,
NoCreate;
script: NoMove, NoResize, NoShowBox, NoCreate;
style__: NoMove, NoResize, NoShowBox, NoCreate;
switch: NoMove, NoResize, NoShowBox, NoCreate;
foreignObject: MoveResize, HighlightChildren, NoCreate;
SVG_Image: Hidden, SelectParent;
GRAPHICS: SelectParent;
PICTURE: NoMove, NoResize, SelectParent;
TEXT: NoMove, NoResize;
Unknown_namespace: NoCreate;
id: CssId;
class: CssClass;
PseudoClass: Invisible, CssPseudoClass;
Unknown_attribute: Invisible;
Highlight: Invisible;
Ghost_restruct: Invisible;
Namespace: Invisible;
IntEmptyShape: Invisible;
END
Webmaster