HTML Quick Reference
We are in the process of moving away from XHTML to HTML5. What this means in practice is that whilst we are limiting the use of HTML5-specific tags, we are relaxing our markup specifications a little in line with the new HTML5 standards. However for the sake of consistent, readable code, we recommend adhering to XHTML-style markup as a best practice.
In addition, there are some conventions we follow that provide "hooks" for Javascript functionality and make the site more consistent in its behaviour.
Syntax Recommendations
-
All tags and attribute names should be lowercase
However attribute values can be mixed case if they are not from a pre-defined set.
e.g. <input type="text" ... /> but not <input type="Text" ... /> (value 'type' belongs to a predefined set); whereas <a href="http://www.sanger.ac.uk/" title="Wellcome Trust Sanger Institute"> is OK (free text value) -
All elements which can have end tags should have end tags
e.g. <p>Paragraph</p><p>More</p> not <p>Paragraph <p>More
-
All paired tags must be nested correctly
e.g. <p>This is some <b>bold text with <i>italics</i> inside</b>.</p>
-
Attribute values must always be enclosed in quotes
e.g. <td colspan="2"> not <td colspan=2>
-
All attributes must have values
e.g. <input type="checkbox" name="choose" checked="checked" /> not <input type="checkbox" name="choose" checked />
-
Anchors used for jumping between links should have an id attribute not a name
<a href="#foo">Go to foo</a> <a id="foo">Foo</a> Also, ids must match the pattern [A-Za-z][A-Za-z0-9:_.-]*
-
All ampersands should be encoded as &
This includes alt text, titles and external URLs. E.g. <a href="http://www.unseen.ac.uk/index.php?project=hex&id=pstibbons">Interesting Page</a>
For internal links, the Ensembl server has been configured to accept a semicolon in URLs instead: e.g. <a href="/Homo_sapiens/Location/View?db=core;r=1:1-100000">
HTML Elements and Attributes
Linking to other pages
-
Internal links should not include the site URL
e.g. /Homo_sapiens/Info/Index not www.ensembl.org/Homo_sapiens/Info/Index
This is to ensure that links don't break on archives. However in a few circumstances, e.g. contact forms, we do want to link to, e.g. the live site, so that the visitor always gets up-to-date information even if visiting an old archive. -
Relative internal links should not trace back up the document tree
i.e. they should not contain paths with ../ in them. This is because such links will break if the document is ever moved. Link from the HTML root, e.g. /info/docs/api/index.html, for preference.
-
Links to external sites should be marked as such:
e.g. <a href="http://www.google.com" rel="external">Google</a>
Deprecated presentational tags - use CSS instead!
| <basefont> | <center> | <sub> |
| <font> | <u> | <sup> |
| <big> | <s> | <xmp> |
| <small> | <strike> | |
| <tt> | <listing> |
Note that <b> and <i> are OK in HTML5 - use them for situations where the convention requires bold or italics (e.g. scientific names, journal citations) but not literal emphasis.
Deprecated structural tags
| <acronym> | <frame> | <frameset> | <noframes> |
| <applet> | <dir> | <menu> | <embed> |
In practice, <applet> is the only one likely to be seen on the Ensembl website, and replacing it with the preferred <object> tag can be fiddly!
Allowed tags
Just about all HTML elements can take the attributes id, class, style and title; to save typing these out each time, the shorthand [std] is used.
There are two categories of deprecated attributes: presentational ones that can easily be replaced with CSS, which I have denoted with italics, and other attributes for which there is no straightforward replacement.
| Element | Allowed attributes | Deprecated attributes |
|---|---|---|
| Principal document elements | ||
| html | xmlns, xml:lang, lang | version |
| head | - | - |
| body | [std] | background, bgcolor, text, link, alink, vlink |
| Document head | ||
| link | href, type, rel, rev, media | target |
| style | type (required), media, title | - |
| meta | name, content, http_equiv | |
| Text | ||
| div | [std] | align, nowrap |
| p | [std] | align |
| span | [std] | - |
| br | [std] | clear |
| pre | [std] | width, align |
| h1...h6 | [std] | align |
| address | [std] | align |
| blockquote | [std] | align |
| q | [std] | - |
| cite | [std] | align |
| em | [std] | - |
| strong | [std] | - |
| dfn | [std] | align |
| kbd | [std] | align |
| Rules, images, hyperlinks and image maps | ||
| hr | [std] | align, noshade, size, width |
| img | [std] + src (required), alt (required), height, width, usemap, longdesc | name, align, border, vspace, hspace |
| a | [std] + href, shape, coords, type, accesskey, tabindex | name, target |
| area | [std] + alt (required), href, nohref, shape, coords, accesskey, tabindex | target |
| map | [std] + name | |
| Lists | ||
| ul | [std] | type, compact |
| ol | [std] | start, type, compact |
| li | [std] | value, type |
| dl | [std] | compact |
| dt | [std] | - |
| dd | [std] | - |
| Tables | ||
| N.B. Note that whilst cellpadding, cellspacing and border attributes are allowable in tables, a more consistent look can be achieved using CSS. | ||
| table | [std] + width, cellpadding, cellspacing, border, summary | align, valign, bgcolor |
| caption | [std] | align |
| tr | [std] | align, valign, bgcolor |
| th and td | [std] + colspan, rowspan | align, valign, bgcolor, width, height, nowrap |
| col | [std] | align, valign |
| colgroup | [std] | |
| thead | [std] | |
| tbody | [std] | |
| tfoot | [std] | |
| Forms | ||
| form | [std] + action (required), method, enctype | target |
| fieldset | [std] | - |
| legend | [std] + accesskey | align |
| label | [std] + for, accesskey | - |
| input | [std] + type, name, value, checked, size,, maxlength, src, accesskey, tabindex, alt, usemap, accept, disabled, readonly | align |
| select | [std] + name, size, multiple, tabindex, disabled | - |
| option | [std] + value, selected, disabled | - |
| optgroup | [std] + label, disabled | - |
| textarea | [std] + rows and cols (required), name, accesskey, tabindex, disabled, readonly | - |
| button | [std] + name, value, type, accesskey, tabindex, disabled | |
| Executable content | ||
| script | type (required), src, charset, defer | language |
| noscript | - | - |
| object | [std] + classid, type, data, codebase, archive, codetype, declare, standby | align, width, height, border, hspace, vspace |
| param | type, value, valuetype | - |



![Follow us on Twitter! [twitter logo]](/i/twitter.png)
