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