1.1.1. This document defines the XHTML standards to which you MUST adhere when coding XHTML-based BBC sites.
1.2.1. You should read and adhere to this standard if you are an internal or third-party web designer coding a BBC site using XHTML.
2.1. You MUST use XHTML when coding BBC sites, UNLESS you are maintaining sites that use HTML and/or Barley
, or creating sites using an HTML-based CMS.
3.1. A Doctype MUST be included, and the Doctype used MUST be as follows:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3.2. The page MUST validate against this doctype using the W3C validator.
3.3. You MUST put the DTD on the first line of the document, to enable standards mode reliably.
3.4. You MUST specify the following xml namespace for the document in the html:
xmlns="http://www.w3.org/1999/xhtml"
4.1. The BBC has statutory obligations, in terms of the Disability Discrimination Act (DDA), to produce accessible content. For details of this see the Accessibility Standards.
4.2. You MUST NOT provide core content or services via associated technologies (for example, Javascript or Flash) without providing an alternative for browsers/configurations which do not sufficiently support these technologies.
4.2.1. If you wish to use sIFRs on your site, you MUST apply for an exemption from the Editor, Standards and Guidelines. Refer to the Textual Equivalents Standards for further information.
5.1. The BBC supports certain browsers, as listed in the Browser Support Standards.
5.2.1. You MUST have one, and only one, character set for the document.
5.2.2. When specifying the character set of the document, you MUST use UTF-8.
5.2.2.1. You should be cautious that some legacy systems have outputs that are not UTF-8 which can cause conflicts. In this case the feed MUST be converted.
5.2.2.2. All new publishing systems MUST output as UTF-8.
5.2.3. You MUST set the character set and mime-type in the head of the document like so :
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
5.2.4. You MUST serve the file from the server with UTF-8 encoding.
5.2.5. You MUST NOT specify an xml prolog; that is, <?xml ...?>.
N.B. The html file will be served as text/html.
5.2.6. You MUST specify the base language of the page in the html tag using both lang and xml:lang attributes; for example:
lang="en-GB" xml:lang="en-GB"
5.2.6.1. Please refer to this reference on language codes as defined under ISO 639.
6.1. Code which is produced and maintained by content production systems SHOULD be as compact and comment-free as possible, to minimise file size and download times (see the Download Standards).
6.2. If this is done, a readable version of the pre-published code SHOULD be available for maintenance purposes.
6.3. Code which is manually produced and maintained SHOULD be well laid out to ensure readability. Reasonable use of blank lines, indenting and comments to denote different sections of the page is encouraged. However, their use SHOULD be balanced with the same file size considerations as set out in section 6.1. above.
6.4. XHTML unary tags MUST include a space before the trailing slash to allow for backward compatibility and legibility, UNLESS they are generated by an XSLT processor that cannot be configured accordingly.
6.5. You MUST NOT use <blink> or <marquee> tags. This is due to accessibility and browser support issues.
6.6. You MUST NOT use <base> without specifying the full document path.
Note This is to avoid breaking in-page anchors.
6.7. For more details on XHTML refer to the following website: w3c.org/XHTML 1.0 The Extensible Hypertext Mark-up Language.
6.8.1. You MUST comply with the Semantic Mark-up Standard.
6.8.2. Content MUST be separated from presentation (which is delivered in CSS) and behaviour (which is delivered using Javascript).
6.8.3. You MUST NOT deliver presentation with tables UNLESS the data is tabular.
7.1. All pages using this standard MUST comply with the Global Visual Language Standards for BBC Online.
7.2. All pages MUST include the BBC brand, BBC copyright and privacy information.
8.1. You MUST obey the CSS Standard.
8.2. HTML pages MUST be readable without style sheets; that is, if style sheets have been turned off in the browser.
8.3. You MUST NOT use !important as this prevents users overriding the style implied.
8.4. The font face MUST offer a generic font family as a last alternative that is available on all partially-supported browsers; for example, sans-serif.
8.5. Fonts MUST be easily resizable in all supported browsers.
8.6. Pages MUST be readable when the font size is increased by two steps in our supported browsers.
9.1. All images used in <img> tags MUST be in either GIF, JPEG or PNG format, with the following proviso:
9.1.1. PNG files MAY be used, but MUST degrade gracefully, in line with the Browser Support Standards, and still allow for the core content of the site to be conveyed.
9.1.2. You SHOULD be cautious particularly when using PNG files with alpha transparency. Known issues at present include, but are not limited to, transparency with IE6.
9.2. When using an img tag you MUST specify the height and width attributes.
9.3. You MUST NOT use height and width attributes to rescale images to provide thumbnail versions of the full image. Instead you MUST use a separate, resized image file.
9.4. Alternative text MUST be supplied as defined in the Textual Equivalents Standards.
9.5. You MUST NOT use images referenced in CSS or JavaScript for core content where alternative content is not supplied. This is because absence of alt attributes makes these images inaccessible.
9.6. You MUST NOT use transparent spacer GIFs (that is, for layout purposes).
10.1. You MUST NOT use server-side imagemaps, as they are not accessible.
10.2. When using client-side imagemaps, you SHOULD use rectangular and circle definitions rather than poly-definitions, to minimise code size.
11.1. You MUST NOT have any comments in your code which endorse any company or individual UNLESS there is a copyright issue that requires it.
11.2. For internal systems you SHOULD highlight the location of support documentation.
11.3. You MUST NOT have any comments in your code which include more than two concurrent 'x' characters. Applications that restrict content containing 3 concurrent 'x' characters may believe your page contains adult content, and deny access accordingly.
12.1. A full default set of definitions for colours (equivalents of text, link, alink, vlink and bgcolor in html) MUST be specified in the page's CSS style-sheet.
12.2. All colour changes or background images within a document MUST be specified using CSS to enable graceful degradation.
12.3. You MUST always define a page background colour in your CSS, even if it is white.
12.4. Please also refer to the Use of Colour and Colour Contrast Standard.
13.1. BBC Online sites MAY occasionally require a pop-up window to present content or a feature, such as broadband consoles, a radio player, or News AV.
13.2. Pop-ups MUST NOT open unannounced; for example, automatically on page load without being a direct result of user input.
13.3. Pop-ups MUST only open when a user has clicked a hypertext link.
13.4. You MUST NOT allow multiple pop-up windows to open from a single click.
13.5. You MUST clearly label links which launch pop-ups so that our audience know they are launching a pop-up.
13.6. You MUST give the pop-up focus when it launches. This must be specified in the code that launches the pop-up (not in an onload in the pop-up).
13.7. Pop-up windows SHOULD NOT have an initial size of more than 760 x 560 pixels, and MUST NOT have an initial size of more than 900 x 680 pixels.
13.8. Above 760 x 560 pixels, windows MUST NOT disable scrollbars.
13.9. Pop-up windows MUST be resizable by the user.
13.10. Pop-up windows MUST contain the BBC logo, the Privacy & Cookies policy link and the Terms of use link.
13.11. You SHOULD identify whether or not your pop-up is able to be indexed by web search agents. This is an editorial decision.
13.12. You MUST NOT allow pop-ups to be searched UNLESS they are "standalone" and do not require instructions for use on the page from which they are normally opened; for example, "This content requires the Flash plug-in...".
13.13. If your pop-up is searchable, you MUST include a "Go back to associated bbc.co.uk page" (or similar) link outside the viewable area of the pop-up.
14.1. For the latest information on which mapping providers you can use on your website, refer to the Standards for Use of Mapping Providers.
15.1. Wherever possible, use the common BBC scripts that are provided for common tasks such as rollovers, plug-in detection, etc. A list of locations where you can find these scripts is available at BBC Site Tools [
Internal BBC document - gain access via your Technical Account Manager] and the BBC CGI Toolbox [
Internal BBC document - gain access via your Technical Account Manager].
15.2. For applications that process personal data you MUST adhere to the requirements of the Technical Implementation of the Data Protection Act (DPA).
16.1. All file and directory names (including file extensions) MUST be in lowercase and SHOULD NOT be overly long.
16.2. Non-alphanumeric characters MUST NOT be used in filenames, except for underscores, which MAY be used to separate words.
16.3. Underscores MUST NOT be used in top-level directory names and SHOULD NOT be used in other directory names. Top-level directory names are used to market bbc.co.uk sites and are advertised on Ceefax, which cannot display underscores.
16.4. Files MUST obey the File Extensions Standards.
16.5. Top-level directory names MUST follow the URL Requirements Standard.
16.6. Directories MUST NOT contain more than 1000 files or folders. If you have more than this, create sub-directories.
16.7. The total weight of all code and called assets within a page SHOULD be as small as possible and you SHOULD have as few objects as possible (for example, images) called to a page to minimise download time.
16.8. Any files over 500k MUST be served from downloads.bbc.co.uk, unless they are Real or Windows Media files. For serving of Real and Windows Media files refer to the Audio Video Standards.
16.9. You MUST NOT link to a default filename, such as "index.shtml" (or "default.stm" on Journalism's platform).
16.10. You MUST include a trailing slash "/" to avoid the need for redirection UNLESS you are linking to an application that redirects to a URL without the trailing "/" (such as /programmes or /music), in which case the trailing "/" MUST be omitted. For example:
16.11. Site addresses MUST have a single, final destination with or without a trailing "/", but not both as this will adversely affect SEO.
16.11.1. Unless you are creating an application with its own redirects (like /programmes), this is handled automatically in Apache.
17.1. As part of the BBC's service to its audiences, BBC online MUST provide facilities for those users to ask questions and provide feedback to the sites' producers.
17.2. Customised feedback pages MUST be made for each site with a top-level directory (or redirect).
17.3. If you receive a complaint through the customised feedback page you MUST ensure that you follow the procedures described on the Handling Complaints website.
18.1. You MUST NOT cause/allow 404 errors to appear on bbc.co.uk.
18.2. You MUST NOT cause/allow server-side include (SSI) errors to appear on bbc.co.uk.
18.3. You MUST NOT disguise/hide SSI errors, using the config errmsg control.
18.4. You MUST NOT cause SSI errors by design as a function of your site.
18.5. Customised error pages MUST have a minimal download size and SHOULD provide additional local help to the standard error page for bbc.co.uk.
18.6. You MUST NOT link to www0.bbc.co.uk, or any single BBC server in any link. This will not work from outside the BBC and will present a 404 error to the user.
19.1. You MUST NOT rely on the accuracy of referrer information, as this is often removed or spoofed.
19.2. You MUST NOT use user agent detection, as this is not reliable, except where distinguishing between mobile device browsers, where it is significantly more reliable. In Javascript you MAY use functionality detection to recognise what a browser is capable of; for example, if(document.images).
19.2.1. You MUST NOT use the user agent to distinguish between mobile and non-mobile browser version.
| Date | Version | Change | Author |
|---|---|---|---|
| 08/10/2009 | v1.4 | Added new section 6.6 banning the use of <base> without specifying the full document path. |
Ed Lee |
| 23/12/2008 | v1.3 | Added sections 16.9. to 16.11. regards linking to filenames and including trailing slashes "/" in directories. Updated information on sIFR usage in section 4.2.1. and use of maps in section 14. Added link to the Handling Complaints website in section 17.3. | Victoria Jolliffe |
| 29/07/2008 | v1.2 | Section 5.2 modified to specify that the character set used must be UTF-8. | Victoria Jolliffe, Nick Holmes |
| 11/04/2008 | v1.1 | Added sections 4.2.1. on sIFR usage and 14.0. on Google Maps usage. | Victoria Jolliffe, Nick Holmes |
| 12/03/2008 | v1.0 | Final Release Version | Victoria Jolliffe, Nick Holmes |
| 07/03/2008 | v0.4 | Principles, and audience added to introduction. Document checked for sense and grammar. | Victoria Jolliffe |
| 11/02/2008 | v0.3 | HTML Group edits | Nick Holmes |
| 20/12/2007 | v0.2 | HTML Group edits | Nick Holmes |
| 27/03/2007 | v0.1 | Taken from HTML Integrity Standard 1.3 and altered appropriately | Nick Holmes |
Document editor: Editor, Standards & Guidelines. If you have any comments, questions or requests relating to this document, please contact the Editor, Standards & Guidelines.
Like all other Future Media Standards & Guidelines, this page is updated on a regular basis, through the process described on About Standards & Guidelines.