Implement all "Multiple" CSS properties.
[htmlpurifier.git] / docs / progress.html
blob20226f33f4e5960130f22acf7a40d8f18fe33071
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:#AFA;}
16 .impl-partial {background:#FFA;}
17 .impl-no {background:#FAA;}
19 .danger {background:#FEE;}
20 .css1 {color:#060;}
21 .required {font-weight:bold;}
23 </style>
25 </head><body>
27 <h1>HTMLPurifier Progress</h1>
29 <h2>Key</h2>
31 <table cellspacing="0"><tbody>
32 <tr><td class="impl-yes">Implemented</td></tr>
33 <tr><td class="impl-partial">Partially implemented</td></tr>
34 <tr><td class="impl-no">Will not implement</td></tr>
35 <tr><td class="danger">Dangerous attribute/property</td></tr>
36 <tr><td class="css1">Present in CSS1</td></tr>
37 </tbody></table>
39 <h2>Interesting Attributes</h2>
41 <table cellspacing="0">
43 <thead>
44 <tr><th>Attribute</th><th>Tags</th><th>Notes</th></tr>
45 </thead>
47 <!--
48 <tr><th></th></tr>
49 <tbody>
50 <tr><td>-</td><td>-</td><td>-</td></tr>
51 </tbody>
52 -->
54 <tbody>
55 <tr><th colspan="3">CSS</th></tr>
56 <tr class="impl-partial"><td>style</td><td>All</td><td>Needs CSS parser</td></tr>
57 </tbody>
59 <tbody>
60 <tr><th colspan="3">Questionable</th></tr>
61 <tr class="impl-no"><td>accesskey</td><td>A</td><td>May interfere with main interface</td></tr>
62 <tr class="impl-no"><td>tabindex</td><td>A</td><td>May interfere with main interface</td></tr>
63 <tr><td>target</td><td>A</td><td>Config enabled, only useful for frame layouts</td></tr>
64 </tbody>
66 <tbody>
67 <tr><th colspan="3">Miscellaneous</th></tr>
68 <tr><td>datetime</td><td>DEL, INS</td><td>No visible effect, ISO format</td></tr>
69 <tr><td>rel</td><td>A</td><td>Largely user-defined: nofollow, tag (see microformats)</td></tr>
70 <tr><td>rev</td><td>A</td><td>Largely user-defined: vote-*</td></tr>
71 <tr class="impl-no"><td>axis</td><td>TD, TH</td><td>W3C only: No browser implementation</td></tr>
72 <tr class="impl-no"><td>char</td><td>COL, COLGROUP, TBODY, TD, TFOOT, TH, THEAD, TR</td><td>W3C only: No browser implementation</td></tr>
73 <tr class="impl-no"><td>headers</td><td>TD, TH</td><td>W3C only: No browser implementation</td></tr>
74 <tr class="impl-no"><td>scope</td><td>TD, TH</td><td>W3C only: No browser implementation</td></tr>
75 </tbody>
77 <tbody class="impl-yes">
78 <tr><th colspan="3">URI</th></tr>
79 <tr><td rowspan="2">cite</td><td>BLOCKQUOTE, Q</td><td>For attribution</td></tr>
80 <tr><td>DEL, INS</td><td>Link to explanation why it changed</td></tr>
81 <tr><td>href</td><td>A</td><td>-</td></tr>
82 <tr><td>longdesc</td><td>IMG</td><td>-</td></tr>
83 <tr class="required"><td>src</td><td>IMG</td><td>Required</td></tr>
84 </tbody>
86 <tbody>
87 <tr><th colspan="3">Transform</th></tr>
88 <tr><td rowspan="5">align</td><td>CAPTION</td><td>Near-equiv style 'caption-side', drop left and right</td></tr>
89 <tr><td>IMG</td><td rowspan="2">Margin-left and margin-right = auto or parent div</td></tr>
90 <tr><td>TABLE</td></tr>
91 <tr><td>HR</td><td>Equivalent style 'text-align' (IE tested)</td></tr>
92 <tr class="impl-yes"><td>H1, H2, H3, H4, H5, H6, P</td><td>Equivalent style 'text-align'</td></tr>
93 <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>
94 <tr><td rowspan="3">bgcolor</td><td>TABLE</td><td>Equivalent style 'background-color' (IE tested)</td></tr>
95 <tr><td>TR</td><td>Equivalent style 'background-color' (IE tested)</td></tr>
96 <tr><td>TD, TH</td><td>Equivalent style 'background-color'</td></tr>
97 <tr><td>border</td><td>IMG</td><td>Equivalent style 'border-width', only applies when link present</td></tr>
98 <tr><td>clear</td><td>BR</td><td>Near-equiv style 'clear', transform 'all' into 'both'</td></tr>
99 <tr class="impl-no"><td>compact</td><td>DL, OL, UL</td><td>Boolean, needs custom CSS class</td></tr>
100 <tr class="required impl-yes"><td>dir</td><td>BDO</td><td>Required, insert ltr (or configuration value) if none</td></tr>
101 <tr><td>height</td><td>TD, TH</td><td>Near-equiv style 'height', needs px suffix if original was in pixels</td></tr>
102 <tr><td>hspace</td><td>IMG</td><td>Near-equiv styles 'margin-top' and 'margin-bottom', needs px suffix</td></tr>
103 <tr class="impl-yes"><td>lang</td><td>*</td><td>Copy value to xml:lang</td></tr>
104 <tr><td rowspan="2">name</td><td>IMG</td><td>Turn into ID</td></tr>
105 <tr><td>A</td><td>Turn into ID? (not deprecated, though in which specs?)</td></tr>
106 <tr><td>noshade</td><td>HR</td><td>Boolean, style 'border-style:solid;'</td></tr>
107 <tr><td>nowrap</td><td>TD, TH</td><td>Boolean, style 'white-space:nowrap;' (not compat with IE5)</td></tr>
108 <tr><td>size</td><td>HR</td><td>Near-equiv 'width', needs px suffix if original was pixels</td></tr>
109 <tr class="required impl-yes"><td>src</td><td>IMG</td><td>Required, insert blank or default img if not set</td></tr>
110 <tr><td>start</td><td>OL</td><td>Poorly supported 'counter-reset', transform may not be desirable</td></tr>
111 <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>
112 <tr><td>OL</td></tr>
113 <tr><td>UL</td></tr>
114 <tr><td>value</td><td>LI</td><td>Poorly supported 'counter-reset', transform may not be desirable, see ol.start. Configurable.</td></tr>
115 <tr><td>vspace</td><td>IMG</td><td>Near-equiv styles 'margin-left' and 'margin-right', needs px suffix, see hspace</td></tr>
116 <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>
117 <tr><td>TD, TH</td></tr>
118 </tbody>
120 </table>
122 <h3>CSS</h3>
124 <table cellspacing="0">
126 <thead>
127 <tr><th>Name</th><th>Notes</th></tr>
128 </thead>
130 <!--
131 <tr><td>-</td><td>-</td></tr>
134 <tbody>
135 <tr><th colspan="2">Standard</th></tr>
136 <tr class="css1 impl-yes"><td>background-color</td><td>COMPOSITE(&lt;color&gt;, transparent)</td></tr>
137 <tr class="css1"><td>background</td><td>SHORTHAND</td></tr>
138 <tr class="css1"><td>border</td><td>SHORTHAND, MULTIPLE</td></tr>
139 <tr class="css1 impl-yes"><td>border-color</td><td>MULTIPLE</td></tr>
140 <tr class="css1 impl-yes"><td>border-style</td><td>MULTIPLE</td></tr>
141 <tr class="css1 impl-yes"><td>border-width</td><td>MULTIPLE</td></tr>
142 <tr class="css1"><td>border-*</td><td>SHORTHAND</td></tr>
143 <tr class="impl-yes"><td>border-*-color</td><td>COMPOSITE(&lt;color&gt;, transparent)</td></tr>
144 <tr class="impl-yes"><td>border-*-style</td><td>ENUM(none, hidden, dotted, dashed,
145 solid, double, groove, ridge, inset, outset)</td></tr>
146 <tr class="css1 impl-yes"><td>border-*-width</td><td>COMPOSITE(&lt;length&gt;, thin, medium, thick)</td></tr>
147 <tr class="css1 impl-yes"><td>clear</td><td>ENUM(none, left, right, both)</td></tr>
148 <tr class="css1 impl-yes"><td>color</td><td>&lt;color&gt;</td></tr>
149 <tr class="css1 impl-yes"><td>float</td><td>ENUM(left, right, none), May require layout
150 precautions with clear</td></tr>
151 <tr class="css1"><td>font</td><td>SHORTHAND</td></tr>
152 <tr class="css1"><td>font-family</td><td>CSS validator may complain if fallback font
153 family not specified</td></tr>
154 <tr class="css1 impl-yes"><td>font-size</td><td>COMPOSITE(&lt;absolute-size&gt;,
155 &lt;relative-size&gt;, &lt;length&gt;, &lt;percentage&gt;)</td></tr>
156 <tr class="css1 impl-yes"><td>font-style</td><td>ENUM(normal, italic, oblique)</td></tr>
157 <tr class="css1 impl-yes"><td>font-variant</td><td>ENUM(normal, small-caps)</td></tr>
158 <tr class="css1 impl-yes"><td>font-weight</td><td>ENUM(normal, bold, bolder, lighter,
159 100, 200, 300, 400, 500, 600, 700, 800, 900), maybe special code for
160 in-between integers</td></tr>
161 <tr class="css1 impl-yes"><td>letter-spacing</td><td>COMPOSITE(&lt;length&gt;, normal)</td></tr>
162 <tr class="css1 impl-yes"><td>line-height</td><td>COMPOSITE(&lt;number&gt;,
163 &lt;length&gt;, &lt;percentage&gt;, normal)</td></tr>
164 <tr class="css1 impl-yes"><td>list-style-position</td><td>ENUM(inside, outside),
165 Strange behavior in browsers</td></tr>
166 <tr class="css1 impl-yes"><td>list-style-type</td><td>ENUM(...),
167 Well-supported values are: disc, circle, square,
168 decimal, lower-roman, upper-roman, lower-alpha and upper-alpha. See also
169 CSS 3. Mostly IE lack of support.</td></tr>
170 <tr class="css1"><td>list-style</td><td>SHORTHAND</td></tr>
171 <tr class="css1 impl-yes"><td>margin</td><td>MULTIPLE</td></tr>
172 <tr class="css1 impl-yes"><td>margin-*</td><td>COMPOSITE(&lt;length&gt;,
173 &lt;percentage&gt;, auto)</td></tr>
174 <tr class="css1 impl-yes"><td>padding</td><td>MULTIPLE</td></tr>
175 <tr class="css1 impl-yes"><td>padding-*</td><td>COMPOSITE(&lt;length&gt;(positive),
176 &lt;percentage&gt;(positive))</td></tr>
177 <tr class="css1 impl-yes"><td>text-align</td><td>ENUM(left, right,
178 center, justify)</td></tr>
179 <tr class="css1"><td>text-decoration</td><td>No blink (argh my eyes), not
180 enum, can be combined (composite sorta): underline, overline,
181 line-through</td></tr>
182 <tr class="css1 impl-yes"><td>text-indent</td><td>COMPOSITE(&lt;length&gt;,
183 &lt;percentage&gt;)</td></tr>
184 <tr class="css1 impl-yes"><td>text-transform</td><td>ENUM(capitalize, uppercase,
185 lowercase, none)</td></tr>
186 <tr class="css1 impl-yes"><td>width</td><td>COMPOSITE(&lt;length&gt;,
187 &lt;percentage&gt;, auto), Interesting</td></tr>
188 <tr class="css1 impl-yes"><td>word-spacing</td><td>COMPOSITE(&lt;length&gt;, auto),
189 IE 5 no support</td></tr>
190 </tbody>
192 <tbody>
193 <tr><th colspan="2">Table</th></tr>
194 <tr><td>border-collapse</td><td>ENUM</td></tr>
195 <tr><td>caption-side</td><td>ENUM</td></tr>
196 <tr><td>empty-cells</td><td>ENUM, No IE support, possible fix with &amp;nbsp;?</td></tr>
197 <tr><td>table-layout</td><td>ENUM</td></tr>
198 <tr class="css1"><td>vertical-align</td><td>Also applies to others with explicit height</td></tr>
199 </tbody>
201 <tbody>
202 <tr><th colspan="2">Absolute positioning</th></tr>
203 <tr class="danger"><td>bottom</td><td rowspan="4">Dangerous, must be non-negative</td></tr>
204 <tr class="danger"><td>left</td></tr>
205 <tr class="danger"><td>right</td></tr>
206 <tr class="danger"><td>top</td></tr>
207 <tr><td>clip</td><td>-</td></tr>
208 <tr class="danger"><td>position</td><td>ENUM(static, relative, absolute, fixed), permit
209 relative not absolute?</td></tr>
210 <tr class="danger"><td>z-index</td><td>Dangerous</td></tr>
211 </tbody>
213 <tbody>
214 <tr><th colspan="2">Unknown</th></tr>
215 <tr class="danger css1"><td>background-image</td><td>Dangerous</td></tr>
216 <tr class="css1"><td>background-attachment</td><td>ENUM(scroll, fixed),
217 Depends on background-image</td></tr>
218 <tr class="css1"><td>background-position</td><td>Depends on background-image</td></tr>
219 <tr class="danger"><td>cursor</td><td>Dangerous but fluffy</td></tr>
220 <tr class="danger css1"><td>display</td><td>ENUM(...), Dangerous but interesting;
221 will not implement list-item, run-in (Opera only) or table (no IE);
222 inline-block has incomplete IE6 support and requires -moz-inline-box
223 for Mozilla.</td></tr>
224 <tr><td class="css1">height</td><td>Interesting, why use it?</td></tr>
225 <tr class="danger css1"><td>list-style-image</td><td>Dangerous?</td></tr>
226 <tr><td>max-height</td><td rowspan="4">No IE 5/6</td></tr>
227 <tr><td>min-height</td></tr>
228 <tr><td>max-width</td></tr>
229 <tr><td>min-width</td></tr>
230 <tr><td>orphans</td><td>No IE support</td></tr>
231 <tr><td>widows</td><td>No IE support</td></tr>
232 <tr><td>overflow</td><td>ENUM, IE 5/6 almost (remove visible if set)</td></tr>
233 <tr><td>page-break-after</td><td>ENUM(auto, always, avoid, left, right),
234 IE 5.5/6 and Opera</td></tr>
235 <tr><td>page-break-before</td><td>ENUM(auto, always, avoid, left, right),
236 Mostly supported</td></tr>
237 <tr><td>page-break-inside</td><td>ENUM(avoid, auto), Opera only</td></tr>
238 <tr class="impl-no"><td>quotes</td><td>May be dropped from CSS2</td></tr>
239 <tr class="danger"><td>visibility</td><td>ENUM(visible, hidden, collapse),
240 Dangerous</td></tr>
241 <tr><td class="css1">white-space</td><td>ENUM(normal, pre, nowrap, pre-wrap,
242 pre-line), Spotty implementation:
243 pre (no IE 5/6), nowrap (no IE 5),
244 pre-wrap (only Opera), pre-line (no support). Fixable?</td></tr>
245 </tbody>
247 <tbody>
248 <tr><th colspan="2">Aural</th></tr>
249 <tr><td>azimuth</td><td>-</td></tr>
250 <tr><td>cue</td><td>-</td></tr>
251 <tr><td>cue-after</td><td>-</td></tr>
252 <tr><td>cue-before</td><td>-</td></tr>
253 <tr><td>elevation</td><td>-</td></tr>
254 <tr><td>pause-after</td><td>-</td></tr>
255 <tr><td>pause-before</td><td>-</td></tr>
256 <tr><td>pause</td><td>-</td></tr>
257 <tr><td>pitch-range</td><td>-</td></tr>
258 <tr><td>pitch</td><td>-</td></tr>
259 <tr><td>play-during</td><td>-</td></tr>
260 <tr><td>richness</td><td>-</td></tr>
261 <tr><td>speak-header</td><td>Table related</td></tr>
262 <tr><td>speak-numeral</td><td>-</td></tr>
263 <tr><td>speak-punctuation</td><td>-</td></tr>
264 <tr><td>speak</td><td>-</td></tr>
265 <tr><td>speech-rate</td><td>-</td></tr>
266 <tr><td>stress</td><td>-</td></tr>
267 <tr><td>voice-family</td><td>-</td></tr>
268 <tr><td>volume</td><td>-</td></tr>
269 </tbody>
271 <tbody class="impl-no">
272 <tr><th colspan="2">Will not implement</th></tr>
273 <tr><td>content</td><td>Not applicable for inline styles</td></tr>
274 <tr><td>counter-increment</td><td>Needs content, Opera only</td></tr>
275 <tr><td>counter-reset</td><td>Needs content, Opera only</td></tr>
276 <tr><td>direction</td><td>No support</td></tr>
277 <tr><td>outline-color</td><td rowspan="4">IE Mac and Opera on outside,
278 Mozilla on inside and needs -moz-outline, no IE support.</td></tr>
279 <tr><td>outline-style</td></tr>
280 <tr><td>outline-width</td></tr>
281 <tr><td>outline</td></tr>
282 <tr><td>unicode-bidi</td><td>No support</td></tr>
283 </tbody>
285 </table>
287 </body></html>