Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

310 lines
16KB

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