1 <?xml version=
"1.0" encoding=
"UTF-8"?>
2 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
3 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4 <html xmlns=
"http://www.w3.org/1999/xhtml" xml:
lang=
"en" lang=
"en"><head>
6 <title>HTMLPurifier Progress
</title>
8 <style type=
"text/css">
10 td {padding-right:
1em;border-bottom:
1px solid #
000;padding-left:
0.5em;}
11 th {text-align:left;padding-top:
1.4em;font-size:
13pt;
12 border-bottom:
2px solid #
000;background:#FFF;}
13 thead th {text-align:left;padding:
0.1em;background-color:#EEE;}
15 .impl-yes {background:#
9D9;}
16 .impl-partial {background:#FFA;}
17 .impl-no {background:#CCC;}
21 .required {font-weight:bold;}
22 .feature {color:#
999;}
28 <h1>HTMLPurifier Progress
</h1>
32 <table cellspacing=
"0"><tbody>
33 <tr><td class=
"impl-yes">Implemented
</td></tr>
34 <tr><td class=
"impl-partial">Partially implemented
</td></tr>
35 <tr><td class=
"impl-no">Will not implement
</td></tr>
36 <tr><td class=
"danger">Dangerous attribute/property
</td></tr>
37 <tr><td class=
"css1">Present in CSS1
</td></tr>
38 <tr><td class=
"feature">Feature, requires extra work
</td></tr>
43 <table cellspacing=
"0">
46 <tr><th>Name
</th><th>Notes
</th></tr>
50 <tr><td>-</td><td>-</td></tr>
54 <tr><th colspan=
"2">Standard
</th></tr>
55 <tr class=
"css1 impl-yes"><td>background-color
</td><td>COMPOSITE(
<color
>, transparent)
</td></tr>
56 <tr class=
"css1 impl-yes"><td>background
</td><td>SHORTHAND, only for color, see below for info on background-image and friends
</td></tr>
57 <tr class=
"css1 impl-yes"><td>border
</td><td>SHORTHAND, MULTIPLE
</td></tr>
58 <tr class=
"css1 impl-yes"><td>border-color
</td><td>MULTIPLE
</td></tr>
59 <tr class=
"css1 impl-yes"><td>border-style
</td><td>MULTIPLE
</td></tr>
60 <tr class=
"css1 impl-yes"><td>border-width
</td><td>MULTIPLE
</td></tr>
61 <tr class=
"css1 impl-yes"><td>border-*
</td><td>SHORTHAND
</td></tr>
62 <tr class=
"impl-yes"><td>border-*-color
</td><td>COMPOSITE(
<color
>, transparent)
</td></tr>
63 <tr class=
"impl-yes"><td>border-*-style
</td><td>ENUM(none, hidden, dotted, dashed,
64 solid, double, groove, ridge, inset, outset)
</td></tr>
65 <tr class=
"css1 impl-yes"><td>border-*-width
</td><td>COMPOSITE(
<length
>, thin, medium, thick)
</td></tr>
66 <tr class=
"css1 impl-yes"><td>clear
</td><td>ENUM(none, left, right, both)
</td></tr>
67 <tr class=
"css1 impl-yes"><td>color
</td><td><color
></td></tr>
68 <tr class=
"css1 impl-yes"><td>float
</td><td>ENUM(left, right, none), May require layout
69 precautions with clear
</td></tr>
70 <tr class=
"css1 impl-yes"><td>font
</td><td>SHORTHAND
</td></tr>
71 <tr class=
"css1 impl-yes"><td>font-family
</td><td>CSS validator may complain if fallback font
72 family not specified
</td></tr>
73 <tr class=
"css1 impl-yes"><td>font-size
</td><td>COMPOSITE(
<absolute-size
>,
74 <relative-size
>,
<length
>,
<percentage
>)
</td></tr>
75 <tr class=
"css1 impl-yes"><td>font-style
</td><td>ENUM(normal, italic, oblique)
</td></tr>
76 <tr class=
"css1 impl-yes"><td>font-variant
</td><td>ENUM(normal, small-caps)
</td></tr>
77 <tr class=
"css1 impl-yes"><td>font-weight
</td><td>ENUM(normal, bold, bolder, lighter,
78 100,
200,
300,
400,
500,
600,
700,
800,
900), maybe special code for
79 in-between integers
</td></tr>
80 <tr class=
"css1 impl-yes"><td>letter-spacing
</td><td>COMPOSITE(
<length
>, normal)
</td></tr>
81 <tr class=
"css1 impl-yes"><td>line-height
</td><td>COMPOSITE(
<number
>,
82 <length
>,
<percentage
>, normal)
</td></tr>
83 <tr class=
"css1 impl-yes"><td>list-style-position
</td><td>ENUM(inside, outside),
84 Strange behavior in browsers
</td></tr>
85 <tr class=
"css1 impl-yes"><td>list-style-type
</td><td>ENUM(...),
86 Well-supported values are: disc, circle, square,
87 decimal, lower-roman, upper-roman, lower-alpha and upper-alpha. See also
88 CSS
3. Mostly IE lack of support.
</td></tr>
89 <tr class=
"css1 impl-yes"><td>list-style
</td><td>SHORTHAND, target milestone
1.0</td></tr>
90 <tr class=
"css1 impl-yes"><td>margin
</td><td>MULTIPLE
</td></tr>
91 <tr class=
"css1 impl-yes"><td>margin-*
</td><td>COMPOSITE(
<length
>,
92 <percentage
>, auto)
</td></tr>
93 <tr class=
"css1 impl-yes"><td>padding
</td><td>MULTIPLE
</td></tr>
94 <tr class=
"css1 impl-yes"><td>padding-*
</td><td>COMPOSITE(
<length
>(positive),
95 <percentage
>(positive))
</td></tr>
96 <tr class=
"css1 impl-yes"><td>text-align
</td><td>ENUM(left, right,
97 center, justify)
</td></tr>
98 <tr class=
"css1 impl-yes"><td>text-decoration
</td><td>No blink (argh my eyes), not
99 enum, can be combined (composite sorta): underline, overline,
100 line-through
</td></tr>
101 <tr class=
"css1 impl-yes"><td>text-indent
</td><td>COMPOSITE(
<length
>,
102 <percentage
>)
</td></tr>
103 <tr class=
"css1 impl-yes"><td>text-transform
</td><td>ENUM(capitalize, uppercase,
104 lowercase, none)
</td></tr>
105 <tr class=
"css1 impl-yes"><td>width
</td><td>COMPOSITE(
<length
>,
106 <percentage
>, auto), Interesting
</td></tr>
107 <tr class=
"css1 impl-yes"><td>word-spacing
</td><td>COMPOSITE(
<length
>, auto),
108 IE
5 no support
</td></tr>
112 <tr><th colspan=
"2">Table
</th></tr>
113 <tr class=
"impl-yes"><td>border-collapse
</td><td>ENUM(collapse, seperate)
</td></tr>
114 <tr class=
"impl-yes"><td>caption-side
</td><td>ENUM(top, bottom)
</td></tr>
115 <tr class=
"feature"><td>empty-cells
</td><td>ENUM(show, hide), No IE support makes this useless,
116 possible fix with
&nbsp;? Unknown release milestone.
</td></tr>
117 <tr class=
"impl-yes"><td>table-layout
</td><td>ENUM(auto, fixed)
</td></tr>
118 <tr class=
"impl-yes css1"><td>vertical-align
</td><td>COMPOSITE(ENUM(baseline, sub,
119 super, top, text-top, middle, bottom, text-bottom),
<percentage
>,
120 <length
>) Also applies to others with explicit height
</td></tr>
124 <tr><th colspan=
"2">Absolute positioning, unknown release milestone
</th></tr>
125 <tr class=
"danger"><td>bottom
</td><td rowspan=
"4">Dangerous, must be non-negative
</td></tr>
126 <tr class=
"danger"><td>left
</td></tr>
127 <tr class=
"danger"><td>right
</td></tr>
128 <tr class=
"danger"><td>top
</td></tr>
129 <tr><td>clip
</td><td>-
</td></tr>
130 <tr class=
"danger"><td>position
</td><td>ENUM(static, relative, absolute, fixed), permit
131 relative not absolute?
</td></tr>
132 <tr class=
"danger"><td>z-index
</td><td>Dangerous
</td></tr>
136 <tr><th colspan=
"2">Unknown
</th></tr>
137 <tr class=
"danger css1"><td>background-image
</td><td>Dangerous, target milestone
1.3</td></tr>
138 <tr class=
"css1"><td>background-attachment
</td><td>ENUM(scroll, fixed),
139 Depends on background-image
</td></tr>
140 <tr class=
"css1"><td>background-position
</td><td>Depends on background-image
</td></tr>
141 <tr class=
"danger impl-no"><td>cursor
</td><td>Dangerous but fluffy
</td></tr>
142 <tr class=
"danger css1"><td>display
</td><td>ENUM(...), Dangerous but interesting;
143 will not implement list-item, run-in (Opera only) or table (no IE);
144 inline-block has incomplete IE6 support and requires -moz-inline-box
145 for Mozilla. Unknown target milestone.
</td></tr>
146 <tr><td class=
"css1">height
</td><td>Interesting, why use it? Unknown target milestone.
</td></tr>
147 <tr class=
"danger css1"><td>list-style-image
</td><td>Dangerous? Target milestone
1.3</td></tr>
148 <tr class=
"impl-no"><td>max-height
</td><td rowspan=
"4">No IE
5/
6</td></tr>
149 <tr class=
"impl-no"><td>min-height
</td></tr>
150 <tr class=
"impl-no"><td>max-width
</td></tr>
151 <tr class=
"impl-no"><td>min-width
</td></tr>
152 <tr class=
"impl-no"><td>orphans
</td><td>No IE support
</td></tr>
153 <tr class=
"impl-no"><td>widows
</td><td>No IE support
</td></tr>
154 <tr><td>overflow
</td><td>ENUM, IE
5/
6 almost (remove visible if set). Unknown target milestone.
</td></tr>
155 <tr><td>page-break-after
</td><td>ENUM(auto, always, avoid, left, right),
156 IE
5.5/
6 and Opera. Unknown target milestone.
</td></tr>
157 <tr><td>page-break-before
</td><td>ENUM(auto, always, avoid, left, right),
158 Mostly supported. Unknown target milestone.
</td></tr>
159 <tr><td>page-break-inside
</td><td>ENUM(avoid, auto), Opera only. Unknown target milestone.
</td></tr>
160 <tr class=
"impl-no"><td>quotes
</td><td>May be dropped from CSS2, fairly useless for inline context
</td></tr>
161 <tr class=
"impl-no"><td>visibility
</td><td>ENUM(visible, hidden, collapse),
163 <tr class=
"css1 feature"><td>white-space
</td><td>ENUM(normal, pre, nowrap, pre-wrap,
164 pre-line), Spotty implementation:
165 pre (no IE
5/
6), nowrap (no IE
5),
166 pre-wrap (only Opera), pre-line (no support). Fixable? Unknown target milestone.
</td></tr>
169 <tbody class=
"impl-no">
170 <tr><th colspan=
"2">Aural
</th></tr>
171 <tr><td>azimuth
</td><td>-
</td></tr>
172 <tr><td>cue
</td><td>-
</td></tr>
173 <tr><td>cue-after
</td><td>-
</td></tr>
174 <tr><td>cue-before
</td><td>-
</td></tr>
175 <tr><td>elevation
</td><td>-
</td></tr>
176 <tr><td>pause-after
</td><td>-
</td></tr>
177 <tr><td>pause-before
</td><td>-
</td></tr>
178 <tr><td>pause
</td><td>-
</td></tr>
179 <tr><td>pitch-range
</td><td>-
</td></tr>
180 <tr><td>pitch
</td><td>-
</td></tr>
181 <tr><td>play-during
</td><td>-
</td></tr>
182 <tr><td>richness
</td><td>-
</td></tr>
183 <tr><td>speak-header
</td><td>Table related
</td></tr>
184 <tr><td>speak-numeral
</td><td>-
</td></tr>
185 <tr><td>speak-punctuation
</td><td>-
</td></tr>
186 <tr><td>speak
</td><td>-
</td></tr>
187 <tr><td>speech-rate
</td><td>-
</td></tr>
188 <tr><td>stress
</td><td>-
</td></tr>
189 <tr><td>voice-family
</td><td>-
</td></tr>
190 <tr><td>volume
</td><td>-
</td></tr>
193 <tbody class=
"impl-no">
194 <tr><th colspan=
"2">Will not implement
</th></tr>
195 <tr><td>content
</td><td>Not applicable for inline styles
</td></tr>
196 <tr><td>counter-increment
</td><td>Needs content, Opera only
</td></tr>
197 <tr><td>counter-reset
</td><td>Needs content, Opera only
</td></tr>
198 <tr><td>direction
</td><td>No support
</td></tr>
199 <tr><td>outline-color
</td><td rowspan=
"4">IE Mac and Opera on outside,
200 Mozilla on inside and needs -moz-outline, no IE support.
</td></tr>
201 <tr><td>outline-style
</td></tr>
202 <tr><td>outline-width
</td></tr>
203 <tr><td>outline
</td></tr>
204 <tr><td>unicode-bidi
</td><td>No support
</td></tr>
209 <h2>Interesting Attributes
</h2>
211 <table cellspacing=
"0">
214 <tr><th>Attribute
</th><th>Tags
</th><th>Notes
</th></tr>
220 <tr><td>-</td><td>-</td><td>-</td></tr>
225 <tr><th colspan=
"3">CSS
</th></tr>
226 <tr class=
"impl-yes"><td>style
</td><td>All
</td><td>Not all properties may be implemented, parser is good though.
</td></tr>
230 <tr><th colspan=
"3">Questionable
</th></tr>
231 <tr class=
"impl-no"><td>accesskey
</td><td>A
</td><td>May interfere with main interface
</td></tr>
232 <tr class=
"impl-no"><td>tabindex
</td><td>A
</td><td>May interfere with main interface
</td></tr>
233 <tr><td>target
</td><td>A
</td><td>Config enabled, only useful for frame layouts
</td></tr>
237 <tr><th colspan=
"3">Miscellaneous
</th></tr>
238 <tr><td>datetime
</td><td>DEL, INS
</td><td>No visible effect, ISO format
</td></tr>
239 <tr><td>rel
</td><td>A
</td><td>Largely user-defined: nofollow, tag (see microformats)
</td></tr>
240 <tr><td>rev
</td><td>A
</td><td>Largely user-defined: vote-*
</td></tr>
241 <tr class=
"feature"><td>axis
</td><td>TD, TH
</td><td>W3C only: No browser implementation
</td></tr>
242 <tr class=
"feature"><td>char
</td><td>COL, COLGROUP, TBODY, TD, TFOOT, TH, THEAD, TR
</td><td>W3C only: No browser implementation
</td></tr>
243 <tr class=
"feature"><td>headers
</td><td>TD, TH
</td><td>W3C only: No browser implementation
</td></tr>
244 <tr class=
"feature"><td>scope
</td><td>TD, TH
</td><td>W3C only: No browser implementation
</td></tr>
247 <tbody class=
"impl-yes">
248 <tr><th colspan=
"3">URI
</th></tr>
249 <tr><td rowspan=
"2">cite
</td><td>BLOCKQUOTE, Q
</td><td>For attribution
</td></tr>
250 <tr><td>DEL, INS
</td><td>Link to explanation why it changed
</td></tr>
251 <tr><td>href
</td><td>A
</td><td>-
</td></tr>
252 <tr><td>longdesc
</td><td>IMG
</td><td>-
</td></tr>
253 <tr class=
"required"><td>src
</td><td>IMG
</td><td>Required
</td></tr>
257 <tr><th colspan=
"3">Transform, target milestone
1.2</th></tr>
258 <tr><td rowspan=
"5">align
</td><td>CAPTION
</td><td>Near-equiv style 'caption-side', drop left and right
</td></tr>
259 <tr><td>IMG
</td><td rowspan=
"2">Margin-left and margin-right = auto or parent div
</td></tr>
260 <tr><td>TABLE
</td></tr>
261 <tr><td>HR
</td><td>Equivalent style 'text-align' (IE tested)
</td></tr>
262 <tr class=
"impl-yes"><td>H1, H2, H3, H4, H5, H6, P
</td><td>Equivalent style 'text-align'
</td></tr>
263 <tr class=
"required impl-yes"><td>alt
</td><td>IMG
</td><td>Required, insert image filename if src is present or default invalid image text
</td></tr>
264 <tr><td rowspan=
"3">bgcolor
</td><td>TABLE
</td><td>Equivalent style 'background-color' (IE tested)
</td></tr>
265 <tr><td>TR
</td><td>Equivalent style 'background-color' (IE tested)
</td></tr>
266 <tr><td>TD, TH
</td><td>Equivalent style 'background-color'
</td></tr>
267 <tr><td>border
</td><td>IMG
</td><td>Equivalent style 'border-width', only applies when link present
</td></tr>
268 <tr><td>clear
</td><td>BR
</td><td>Near-equiv style 'clear', transform 'all' into 'both'
</td></tr>
269 <tr class=
"impl-no"><td>compact
</td><td>DL, OL, UL
</td><td>Boolean, needs custom CSS class; rarely used anyway
</td></tr>
270 <tr class=
"required impl-yes"><td>dir
</td><td>BDO
</td><td>Required, insert ltr (or configuration value) if none
</td></tr>
271 <tr><td>height
</td><td>TD, TH
</td><td>Near-equiv style 'height', needs px suffix if original was in pixels
</td></tr>
272 <tr><td>hspace
</td><td>IMG
</td><td>Near-equiv styles 'margin-top' and 'margin-bottom', needs px suffix
</td></tr>
273 <tr class=
"impl-yes"><td>lang
</td><td>*
</td><td>Copy value to xml:lang
</td></tr>
274 <tr><td rowspan=
"2">name
</td><td>IMG
</td><td>Turn into ID
</td></tr>
275 <tr><td>A
</td><td>Turn into ID? (not deprecated, though in which specs?)
</td></tr>
276 <tr><td>noshade
</td><td>HR
</td><td>Boolean, style 'border-style:solid;'
</td></tr>
277 <tr><td>nowrap
</td><td>TD, TH
</td><td>Boolean, style 'white-space:nowrap;' (not compat with IE5)
</td></tr>
278 <tr><td>size
</td><td>HR
</td><td>Near-equiv 'width', needs px suffix if original was pixels
</td></tr>
279 <tr class=
"required impl-yes"><td>src
</td><td>IMG
</td><td>Required, insert blank or default img if not set
</td></tr>
280 <tr><td>start
</td><td>OL
</td><td>Poorly supported 'counter-reset', transform may not be desirable
</td></tr>
281 <tr><td rowspan=
"3">type
</td><td>LI
</td><td rowspan=
"3">Equivalent style 'list-style-type', different allowed values though. (needs testing)
</td></tr>
284 <tr><td>value
</td><td>LI
</td><td>Poorly supported 'counter-reset', transform may not be desirable, see ol.start. Configurable.
</td></tr>
285 <tr><td>vspace
</td><td>IMG
</td><td>Near-equiv styles 'margin-left' and 'margin-right', needs px suffix, see hspace
</td></tr>
286 <tr><td rowspan=
"2">width
</td><td>HR
</td><td rowspan=
"2">Near-equiv style 'width', needs px suffix if original was pixels
</td></tr>
287 <tr><td>TD, TH
</td></tr>