<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE spec SYSTEM "xmlspec.dtd">
<spec status="final" w3c-doctype="wgnote">
	<header>
		<title>Server-side Scripting Techniques</title>
		<w3c-designation>WCAG20-SERVER-TECHS</w3c-designation>
		<w3c-doctype>W3C Working Group Note</w3c-doctype>
		<pubdate>
			<day>3</day>
			<month>January</month>
			<year>2012</year>
		</pubdate>
		<publoc> <loc href="http://www.w3.org/WAI/GL/WCAG20/sources/server-tech-src.xml">http://www.w3.org/WAI/GL/WCAG20/sources/server-tech-src.xml</loc> </publoc>
		<latestloc>
			<loc href="http://www.w3.org/WAI/GL/WCAG20/sources/server-tech-src.xml">http://www.w3.org/WAI/GL/WCAG20/sources/server-tech-src.xml</loc>
		</latestloc>
		<authlist>
			<author>
				<name>Ben Caldwell</name>
				<affiliation>Trace R&amp;D Center </affiliation>
			</author>
		</authlist>
		<status>
			<p/>
		</status>
		<abstract>
			<p>Placeholder - actual abstract text for WCAG20-TECHS is included in the XSLT, techs-merge.xslt. This file contains the XML for general techniques and can be used in conjunction with techs-sample-output.xsl to check that techniques will output correctly. </p>
		</abstract>
		<langusage>
			<language id="en-US"/>
		</langusage>
		<revisiondesc>
			<p/>
		</revisiondesc>
	</header>
	<body>
		<!-- techniques -->
		<div1 id="server-side-script">
			<head>Server-side Scripting Techniques</head>
			<technique id="SVR1">
				<short-name>Implementing automatic redirects on the server side instead of on the
                    client side</short-name>
				<applicability>
					<p> Server-side technologies, including server-side scripting languages and
                        server configuration files with URLs or URL patterns for redirects. </p>
				</applicability>
				<applies-to>
					<success-criterion
						idref="consistent-behavior-no-extreme-changes-context"
						relationship="sufficient"/>
				</applies-to>
				<description>
					<p> The objective of this technique is to avoid confusion that may be caused
                        when two new pages are loaded in quick succession because one page (the one
                        requested by the user) redirects to another. Some user agents support the
                        use of the HTML <code><![CDATA[meta]]></code> element to redirect the user to another page
                        after a specified number of seconds. This makes a page inaccessible to some
                        users, especially users with screen readers. Server-side technologies
                        provide methods to implement redirects in a way that does not confuse users.
                        A server-side script or configuration file can cause the server to send an
                        appropriate HTTP response with a status code in the 3xx range and a Location
                        header with another URL. When the browser receives this response, the location
                        bar changes and the browser makes a request with the new URL. </p>
				</description>
				<examples>
					<eg-group>
						<head>JSP/Servlets</head>
						<description>
							<p> In Java Servlets or JavaServer Pages (JSP), developers can use
                                    <code><![CDATA[HttpServletResponse.sendRedirect(String url)]]></code>. </p>
						</description>
						<code><![CDATA[
…
public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
…
  response.sendRedirect("/newUserLogin.do");
}]]></code>
						<description>
							<p> This sends a response with a 302 status code ("Found") and a
                                Location header with the new URL to the user agent. It is also
                                possible to set another status code with
                                    <code><![CDATA[response.sendError(int code, String message)]]></code> with
                                one of the constants defined in the interface
                                javax.servlet.http.HttpServletResponse as status code. </p>
						</description>
						<code><![CDATA[
…
public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
…
  response.sendError(response.SC_MOVED_PERMANENTLY, "/newUserLogin.do");
}]]></code>
						<description>
							<p> If an application uses <code><![CDATA[HttpServletResponse.encodeURL(String
                                    url)]]></code> for URL rewriting because the application depends on
                                sessions, the method
                                    <code><![CDATA[HttpServletResponse.encodeRedirectURL(String url)]]></code>
                                should be used instead of
                                    <code><![CDATA[HttpServletResponse.sendRedirect(String url)]]></code>. It is
                                also possible to rewrite a URL with
                                    <code><![CDATA[HttpServletResponse.encodeURL(String url)]]></code> and then
                                pass this URL to <code><![CDATA[HttpServletResponse.sendRedirect(String
                                url)]]></code>. </p>
						</description>
					</eg-group>
					<eg-group>
						<head>ASP</head>
						<description>
							<p> In Active Server Page (ASP) with VBScript, developers can use
                                    <code><![CDATA[Response.Redirect]]></code>. </p>
						</description>
						<code><![CDATA[
  Response.Redirect "newUserLogin.asp"]]></code>
						<description>
							<p> or </p>
						</description>
						<code><![CDATA[
Response.Redirect("newUserLogin.asp")]]></code>
						<description>
							<p> The code below is a more complete example with a specific HTTP
                                status code. </p>
						</description>
						<code><![CDATA[
Response.Clear
Response.Status = 301
Response.AddHeader "Location", "newUserLogin.asp"
Response.Flush
Response.End]]></code>
					</eg-group>
					<eg-group>
						<head>PHP</head>
						<description>
							<p> In PHP, developers can send a raw HTTP header with the
                                <code><![CDATA[header]]></code> method. The code below sends a 301 status code
                                and a new location. If the status is not explicitly set, the
                                redirect response sends an HTTP status code 302. </p>
						</description>
						<code><![CDATA[
 <?php
header("HTTP/1.1 301 Moved Permanently);
header("Location: http://www.example.com/newUserLogin.php");
?>]]></code>
					</eg-group>
					<eg-group>
						<head>Apache</head>
						<description>
							<p> Developers can configure the Apache Web server to handle redirects,
                                as in the following example. </p>
						</description>
						<code><![CDATA[
redirect 301 /oldUserLogin.jsp http://www.example.com/newUserLogin.do]]></code>
					</eg-group>
				</examples>
				<resources>
					<see-also>
						<ulist>
							<item>
								<p> <loc href="http://www.w3.org/QA/Tips/reback">Use standard
                                        redirects: do not break the back button!</loc> (W3C QA Tip).
                                </p>
							</item>
							<item>
								<p> <loc href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3">HTTP/1.1 Status Code Definitions: Redirection 3xx</loc>.
                                </p>
							</item>
							<item>
								<p> <loc href="http://www.somacon.com/p145.php">HTTP 301 Permanent
                                        Redirection Techniques</loc> by Shailesh N. Humbad. </p>
							</item>
							<item>
								<p> <loc href="http://download.oracle.com/docs/cd/E17802_01/products/products/servlet/2.3/javadoc/javax/servlet/http/HttpServletResponse.html">Interface javax.servlet.http.HttpServletResponse</loc> in
                                    the Java Servlets 2.3 API documentation. </p>
							</item>
							<item>
								<p> <loc href="http://php.net/manual/en/function.header.php">header</loc> in the PHP
                                    Manual. </p>
							</item>
							<item>
								<p> <loc href="http://httpd.apache.org/docs/2.2/mod/mod_alias.html">Apache Module mod_alias</loc> in the <loc
									xmlns:xlink="http://www.w3.org/1999/xlink" href="http://httpd.apache.org/docs/2.2/">Apache HTTP Server
                                        Version 2.2 Documentation</loc> describes how redirects can
                                    be specified in Apache 2.2. </p>
							</item>
							<item>
								<p> <loc href="http://httpd.apache.org/docs/1.3/mod/mod_alias.html">Module mod_alias</loc> in the <loc
									xmlns:xlink="http://www.w3.org/1999/xlink" href="http://httpd.apache.org/docs/1.3/">Apache HTTP Server
                                        Version 1.3 Documentation</loc> describes how redirects can
                                    be specified in Apache 1.3. </p>
							</item>
						</ulist>
					</see-also>
				</resources>
				<related-techniques/>
				<tests>
					<procedure>
						<olist>
							<item>
								<p> Find each link or programmatic reference to another page or
                                    Web page. </p>
							</item>
							<item>
								<p> For each link or programmatic reference to a URI in the set of
                                    Web pages being evaluated, check if the referenced
                                    Web page contains code (e.g., meta element or script) that
                                    causes a client-side redirect. </p>
							</item>
							<item>
								<p> For each link or programmatic reference to a URI in the set of
                                    Web pages being evaluated, check if the referenced URI
                                    does not cause a redirect OR causes a server-side redirect
                                    without a time-out. </p>
							</item>
						</olist>
					</procedure>
					<expected-results>
						<ulist>
							<item>
								<p> Step 2 is false AND step 3 is true. </p>
							</item>
						</ulist>
					</expected-results>
				</tests>
			</technique>
			<technique id="SVR2">
				<short-name>Using .htaccess to ensure that the only way to access non-conforming content is from conforming content</short-name>
				<applicability>
					<p>Content residing on a Web server that supports .htaccess (typically Apache) where a conforming version of content is provided as an alternative to a non-conforming version.</p>
				</applicability>
				<applies-to>
					<conformance-criterion idref="cc1" relationship="sufficient"/>
				</applies-to>
				<description>
					<p>The objective of this technique is to ensure that users can always access an accessible version of the content when non-conforming versions are also available. Whenever content is provided in a format that does not conform to WCAG, the site as a whole can still conform if alternate versions of the inaccessible content are provided. Conformance Requirement 4 requires that alternate versions can be derived from the nonconforming content or from its URI. 
</p>
					<p>Since it is not always possible to provide an accessible link from within non-conforming content, this technique describes how authors can use Apache's Module "mod_access" to ensure that non-conforming content can only be accessed from URIs that serve as alternate versions to the non-conforming content or from pages that include links to both the non-conforming version and the alternative version.</p>
				</description>
				<examples>
					<eg-group>
						<description>
							<p>The following .htaccess file uses Apache's mod_redirect module to redirect requests for "inaccessible.html" to "accessible.html" unless the request comes from "accessible.html".</p>
						</description>
						<code role="htaccess"><![CDATA[
# If the request for inaccessible content comes from a file 
# called accessible.html, then set an environment variable that 
# allows the inaccessible version to be displayed.
SetEnvIf Referer .*(accessible.html)$ let_me_in
<FilesMatch ^(inaccessible.html)$>
    Order Deny,Allow
    Deny from all
    Allow from env=let_me_in
</FilesMatch>

# If the request comes from anyplace but accessible.html, then 
# redirect the error condition to a location where the accessible 
# version resides
ErrorDocument 403 /example_directory/accessible.html
]]></code>
						<!--description><p>
Refer to <loc href="inaccessible.html" linktype="examples">Inacessible Content</loc> for a working example.
</p></description-->
						<!-- BC: Working example at http://preview.trace.wisc.edu/test/force_accessible/accessible.html, but w3.org does not allow this (refer to April 9 sysreq email-->
					</eg-group>
					<eg-group>
						<description>
							<p>This example assumes a directory structure where documents are available in multiple formats. One of the formats does not meet WCAG at the level claimed and uses the file extension "jna" (Just Not Accessible). All of these files are stored in a folder called "jna" with an .htaccess file which ensures that any direct request for a file with the .jna extension from pages where inaccessible versions are not already available is redirected to an index page that lists all of the available formats.</p>
						</description>
						<code role="htaccess"><![CDATA[
# If the request for inaccessible content comes from a file at 
# http://example.com/documents/index.html, then set an environment 
# variable that allows the inaccessible version to be displayed.
SetEnvIf Referer ^http://example.com/documents/index.html$ let_me_in
<FilesMatch ^(.*\.jna)$>
    Order Deny,Allow
    Deny from all
    Allow from env=let_me_in
</FilesMatch>

# If the request comes from anyplace but http://example.com/documents/index.html, then 
# redirect the error condition to a location where a link the accessible 
# version resides
ErrorDocument 403 http://example.com/documents/index.html
]]></code>
					</eg-group>
				</examples>
				<resources>
					<see-also>
						<ulist>
							<item>
								<p> <loc href="http://httpd.apache.org/docs/2.2/mod/mod_env.html">Apache Module mod_env</loc> </p>
							</item>
							<item>
								<p> <loc href="http://httpd.apache.org/docs/2.2/howto/auth.html">Authentication, Authorization and Access Control</loc> </p>
							</item>
							<item>
								<p> <loc href="http://httpd.apache.org/docs/2.0/howto/htaccess.html">Apache Tutorial: .htaccess files</loc> </p>
							</item>
						</ulist>
					</see-also>
				</resources>
				<related-techniques>
					<relatedtech idref="G136"/>
					<relatedtech idref="G190"/>
					<relatedtech idref="SVR3"/>
					<relatedtech idref="SVR4"/>
					<relatedtech idref="C29"/>
				</related-techniques>
				<tests>
					<procedure>
						<olist>
							<item>
								<p>Identify pages that do not conform to WCAG at the conformance Level claimed where accessible alternatives are served based on the use of .htaccess files.
    </p>
							</item>
							<item>
								<p>Visit the URI of the non-conforming content.
    </p>
							</item>
							<item>
								<p>Verify that the resulting page is one of the following:</p>
								<olist>
									<item>
										<p>a <loc href="conforming-alternate-versiondef"
											linktype="guideline">conforming alternate version</loc> for the non-conforming content</p>
									</item>
									<item>
										<p>a page that includes a link to both the conforming alternate version and the non-conforming content</p>
									</item>
								</olist>
							</item>
						</olist>
					</procedure>
					<expected-results>
						<ulist>
							<item>
								<p>Check #3.1 or #3.2 is true.</p>
							</item>
						</ulist>
					</expected-results>
				</tests>
			</technique>
			<technique id="SVR3">
				<short-name>Using HTTP referer to ensure that the only way to access non-conforming content is from conforming content</short-name>
				<applicability>
					<p>Content created using server-side scripting where a conforming version of content is provided as an alternative to a non-conforming version based on HTTP Referer.</p>
				</applicability>
				<applies-to>
					<conformance-criterion idref="cc1" relationship="sufficient"/>
				</applies-to>
				<ua-issues>
					<!-- BBC: I was unable to find good resources on where these UA issues come up. However, indications seem to be that this was a larger issue in the IE 4.0 era... -->
					<ua-issue name="general" version="4-">
						<p>Because some user agents do not support the HTTP referer header, can be configured not to send one, or are behind a proxy or firewall that strips it out, it is possible that some users will be unable to access the non-conforming content when this technique is implemented.</p>
					</ua-issue>
				</ua-issues>
				<description>
					<p>The objective of this technique is to ensure that users can obtain an accessible version of content where both non-conforming and conforming versions are provided.</p>
					<p><loc href="cc1"
						linktype="guideline">Conformance Requirement 1</loc> allows non-conforming pages to be included within the scope of conformance as long as they have a "<loc
						xmlns:xlink="http://www.w3.org/1999/xlink" href="conforming-alternate-versiondef" linktype="guideline">conforming alternate version</loc>". It is not always possible for authors to include accessibility supported links to conforming content from within non-conforming content. Therefore, authors may need to rely on the use of Server Side Scripting technologies (ex. PHP, ASP, JSP) to ensure that the non-conforming version can only be reached from a conforming page.</p>
					<p>This technique describes how to use information provided by the <code><![CDATA[HTTP referer]]></code> to ensure that non-conforming content can only be reached from a conforming page. The <code><![CDATA[HTTP referer]]></code> header is set by the user agent and contains the URI of the page (if any) which referred the user agent to the non-conforming page.</p>
					<p>To implement this technique, an author identifies the URI for the conforming version of the content, for each non-conforming page. When a request for the non-conforming version of a page is received, the server compares the value of the <code><![CDATA[HTTP referer]]></code> header against the URI of the conforming version to determine whether the link to the non-conforming version came from the conforming version. The non-conforming version is only served if the <code><![CDATA[HTTP referer]]></code> matches the URI of the non-conforming version. Otherwise, the user is redirected to the conforming version of the content. Note that when comparing the URI in the HTTP referer header, non-relevant variations in the URI, such as in the query and target, should be taken into account.</p>
				</description>
				<examples>
					<eg-group>
						<head>Interactive demonstrations of physical processes</head>
						<description>
							<p>An online physics course uses a proprietary modeling language to provide interactive demonstrations of physical processes. The user agent for the modeling language is not compatible with assistive technology. The site includes a script that uses the HTTP referer to ensure that unless users attempt to access the interactive demonstration from a page that contains a conforming description of the process and models, the server redirects the request to a conforming page which contains a link to the non-conforming version. Students may choose to access the non-conforming, interactive version, but those who do not are still able to learn about the process.</p>
						</description>
					</eg-group>
					<eg-group>
						<head>Using Http referer in PHP</head>
						<description>
							<p>The following example illustrates how this technique can be used in PHP. It includes two files, conforming.php and non-conforming.php which work together to ensure that the only way to access non-conforming content is from conforming content.</p>
							<p>conforming.php:</p>
						</description>
						<code role="php"><![CDATA[
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
    		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    		<title>Conforming Content</title>
    	</head>
	<body>
		<h1>This is a conforming page</h1>
		<p>From here, you can visit the <a href="non-conforming.php">non-conforming 
		page</a>. </p>
	</body>
</html>
    				]]></code>
						<description>
							<p>non-conforming.php:</p>
						</description>
						<code role="php"><![CDATA[
<?php 
// if the request comes from a file that contains the string "conforming.php" then render the page
	if(stristr($_SERVER['HTTP_REFERER'], "conforming.php")) {
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<title>Non-Conforming Content</title>
	</head>
	<body>
		<h1>This is a non-conforming page</h1>
		<p>Because you came from <?php echo $_SERVER['HTTP_REFERER']; ?>, you are 
			able to view the content on this page. </p>
	</body>
</html>
<?php
}
// if the referring page is not conforming.php, then redirect the user to the conforming version
else  {
header("Location: conforming.php");
}
?>					
    				]]></code>
						<description>
							<p><loc href="non-conforming.php" linktype="examples">Working Example</loc></p>
						</description>
					</eg-group>
				</examples>
				<related-techniques>
					<relatedtech idref="G136"/>
					<relatedtech idref="G190"/>
					<relatedtech idref="SVR2"/>
					<relatedtech idref="SVR4"/>
					<relatedtech idref="C29"/>
				</related-techniques>
				<tests>
					<procedure>
						<p>Where WCAG conforming alternatives are provided for non-conforming content:</p>
						<olist>
							<item>
								<p>Identify pages that do not conform to WCAG at the conformance Level claimed where accessible alternatives are served based on HTTP Referrer.</p>
							</item>
							<item>
								<p>Visit the URI of the non-conforming content.</p>
							</item>
							<item>
								<p>Verify that the resulting page is one of the following:</p>
								<olist>
									<item>
										<p>a <loc href="conforming-alternate-versiondef"
											linktype="guideline">conforming alternate version</loc> for the non-conforming content</p>
									</item>
									<item>
										<p>a page that includes a link to both the conforming alternate version and the non-conforming content</p>
									</item>
								</olist>
							</item>
						</olist>
					</procedure>
					<expected-results>
						<ulist>
							<item>
								<p>Check #3.1 or #3.2 is true.</p>
							</item>
						</ulist>
					</expected-results>
				</tests>
			</technique>
			<technique id="SVR4">
				<short-name>Allowing users to provide preferences for the display of conforming alternate versions</short-name>
				<applicability>
					<p>Content created using server-side scripting to store preferences.</p>
				</applicability>
				<applies-to>
					<conformance-criterion idref="cc1" relationship="sufficient"/>
				</applies-to>
				<description>
					<p>The objective of this technique is to provide a mechanism for users to select a preference for an alternate conforming version of a Web page.</p>
					<p>Providing preferences to allow users to view conforming alternate versions can be accomplished in several ways. One common method is to provide a link which triggers a server-side process that sets a session or persistent cookie that the Web server uses to modify the page or redirect the user to the alternate version. Other methods include providing user-specific choices that are stored as part of the user's login information for a system where users sign in to access a Web page or service. </p>
					<p>Users requiring an alternate version will need the mechanism provided in the non-conforming page to be accessible in order to find and use it. The mechanism itself should conform to the accessibility level being claimed. </p>
				</description>
				<examples>
					<eg-group>
						<head>Setting a session or persistent cookie to store a user preference </head>
						<description>
							<p>A Web site offers a link to a "preferences" page on pages within the site. On this page, there is an option to view an alternate version of the site. There may be various aspects of the page that are affected, or the user may be opting to view an entirely alternate version of the site. The preference may be to display a version of the site where video included on the site displays captioning, or it may be offered because the primary site contains accessibility conformance issues that are addressed only via the alternative. </p>
							<p>A Web page author may choose to handle this preference via a cookie, which may be handled via a server-side scripting language such as PHP.</p>
							<p>The preferences page may be offered as follows: </p>
						</description>
						<code><![CDATA[ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
      <title>Site Preferences</title>
  </head>
  <body>
      <h1>Site Preferences</h1>
      <form id="form1" name="site_prefs" method="post" action="pref.php">
          <fieldset>
              <legend>Which version of the site do you want to view?</legend>
              <input type="radio" name="site_pref" id="site_pref_reg" value="reg" />
              <label for="site_pref_reg">Main version of site</label>
              <input type="radio" name="site_pref" id="site_pref_axx" value="axx" />
              <label for="site_pref_axx">Accessibility-conforming version</label>
          </fieldset> 
      </form>
  </body>
  </html>]]></code>
						<description>
							<p>The form is submitted to the pref.php file for processing. A cookie is set, and in this simple example the user's browser is directed to the site home page.</p>
							<p>pref.php: </p>
						</description>
						<code><![CDATA[<?php
    if(isset($site_pref)) {
        setcookie("site_pref",$site_pref, time() + (86400 * 30)); //set for 30 days
        header("location: http://www.example.com"); //redirects to home page
    }
?>
]]></code>
						<description>
							<p>The home page starts with code that implements the user's preference. </p>
							<p>index.php: </p>
						</description>
						<code><![CDATA[<?
if(isset($site_pref)) {
	if($site_pref="axx") {
	header("location: ./accessible/index.php");
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
...
]]></code>
						<description>
							<p>For a login-based system, the preference is stored in the user's database record and referred to by the server-side script generating the pages for the user to view. </p>
						</description>
					</eg-group>
				</examples>
				<resources>
					<see-also>
						<ulist>
							<item>
								<p><loc href="http://php.net/setcookie">Setting and using cookies in PHP</loc></p>
							</item>
						</ulist>
					</see-also>
				</resources>
				<related-techniques>
					<relatedtech idref="G136"/>
					<relatedtech idref="G190"/>
					<relatedtech idref="SVR2"/>
					<relatedtech idref="SVR3"/>
					<relatedtech idref="C29"/>
				</related-techniques>
				<tests>
					<procedure>
						<olist>
							<item>
								<p>Change a preference for how pages on the site are displayed. </p>
							</item>
							<item>
								<p>Check that the preference itself or a link to that page where it can be set can be reached from each non-conforming page. </p>
							</item>
							<item>
								<p>Check that Web pages are displayed according to the selected preference. </p>
							</item>
							<item>
								<p>Check that when the preference(s) are set, the Web page conforms as claimed. </p>
							</item>
							<item>
								<p>Verify that the resulting page is a conforming alternate version for the original page. </p>
							</item>
						</olist>
					</procedure>
					<expected-results>
						<ulist>
							<item>
								<p>Checks #2 and #3 are true. </p>
							</item>
						</ulist>
					</expected-results>
				</tests>
			</technique>
			<technique id="SVR5">
				<short-name>Specifying the default language in the HTTP header</short-name>
				<applicability>
					<p>Server-side technologies, including server-side scripting languages and server configuration files for setting HTTP headers. </p>
				</applicability>
				<applies-to>
					<success-criterion idref="meaning-doc-lang-id"
						relationship="sufficient"/>
				</applies-to>
				<description>
					<p>The objective of this technique is to provide information on the  primary language or languages in a Web Page, in order to identify the  audience of the content. The Content-Language HTTP header can contain a  list of one or more language codes, which can be used for language  negotiation between a user agent and a server. If the language  preferences in a user agent are set correctly, language negotiation can  help the user to find a language version of the content that suits  his/her preferences. </p>
					<p>Note that the Content-Language HTTP header does not serve to  identify the language used for processing the content. The content  processing language can be identified by means of other techniques,  such as the attributes lang and xml:lang in markup languages. </p>
					<p>This technique ensures that the primary language of the  document, as specified for example in the lang or xml:lang attribute,  is listed in the Content-Language HTTP header. </p>
				</description>
				<examples>
					<eg-group>
						<head>Setting content language in Java Servlet and JSP</head>
						<description>
							<p>In Java Servlet or JavaServer Pages (JSP), developers can use response.setHeader("Content-Language", lang), in which "lang" stands for a language tag (for example, "en" for English): </p>
						</description>
						<code><![CDATA[…
public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException 
{
…
  response.setHeader("Content-Language", "en");
  PrintWriter out = response.getWriter();
…
}]]></code>
					</eg-group>
					<eg-group>
						<head>Setting content language in PHP</head>
						<description>
							<p>In PHP, developers can send a raw HTTP header with the header method. The following example sets the language to French: </p>
						</description>
						<code><![CDATA[<?php  header('Content-language: fr');  …  ?>  ]]></code>
					</eg-group>
				</examples>
				<resources>
					<see-also>
						<p> <loc href="http://www.w3.org/International/questions/qa-http-and-lang">W3C Internationalization FAQ: HTTP and meta for language information</loc>
						</p>
					</see-also>
					<see-also>
						<p> <loc href="http://www.w3.org/TR/i18n-html-tech-lang/#ri20040429.094220724">Best Practice 9: Using HTTP or a meta tag to indicate audience</loc> in Internationalization Best Practices: Specifying Language in XHTML &amp; HTML Content - W3C Working Group Note 12 April 2007. </p>
					</see-also>
					<see-also>
						<p> <loc href="http://www.ietf.org/rfc/rfc1945.txt">Hypertext Transfer Protocol -- HTTP/1.0 (IETF Request for Comments 1945)</loc> (plain text) </p>
					</see-also>
					<see-also>
						<p> <loc href="http://www.ietf.org/rfc/rfc2616.txt">Hypertext Transfer Protocol -- HTTP/1.1 (IETF Request for Comments 2616)</loc> (plain text) </p>
					</see-also>
					<see-also>
						<p> <loc href="http://php.net/manual/en/function.header.php">header</loc> in the PHP Manual. </p>
					</see-also>
				</resources>
				<related-techniques>
					<relatedtech idref="H57"/>
				</related-techniques>
				<tests>
					<procedure>
						<olist>
							<item>
								<p> Use a Live HTTP Header viewer to find the value of the "Content-Language" header. </p>
							</item>
							<item>
								<p> Check that this value matches the default language of the Web page. </p>
							</item>
						</olist>
					</procedure>
					<expected-results>
						<ulist>
							<item>
								<p> Step #2 is true. </p>
							</item>
						</ulist>
					</expected-results>
				</tests>
			</technique>
		</div1>
	</body>
	<back>
		<div1 id="placeholders">
			<!-- note: this can be updated using /misc/id-list.xslt (requires cut and paste)-->
			<head/>
			<p id="UNKNOWN">place holder for idref</p>
			<p id="cc1">placeholder for cc1</p>
			<p id="cc2">placeholder for cc2</p>
			<p id="cc3">placeholder for cc3</p>
			<p id="cc4">placeholder for cc4</p>
			<p id="cc5">placeholder for cc5</p>
			<p id="text-equiv">placeholder for text-equiv</p>
			<p id="text-equiv-all">placeholder for text-equiv-all</p>
			<p id="media-equiv">placeholder for media-equiv</p>
			<p id="media-equiv-av-only-alt">placeholder for media-equiv-av-only-alt</p>
			<p id="media-equiv-captions">placeholder for media-equiv-captions</p>
			<p id="media-equiv-audio-desc">placeholder for media-equiv-audio-desc</p>
			<p id="media-equiv-real-time-captions">placeholder for media-equiv-real-time-captions</p>
			<p id="media-equiv-audio-desc-only">placeholder for media-equiv-audio-desc-only</p>
			<p id="media-equiv-sign">placeholder for media-equiv-sign</p>
			<p id="media-equiv-extended-ad">placeholder for media-equiv-extended-ad</p>
			<p id="media-equiv-text-doc">placeholder for media-equiv-text-doc</p>
			<p id="media-equiv-live-audio-only">placeholder for media-equiv-live-audio-only</p>
			<p id="content-structure-separation">placeholder for content-structure-separation</p>
			<p id="content-structure-separation-programmatic">placeholder for content-structure-separation-programmatic</p>
			<p id="content-structure-separation-sequence">placeholder for content-structure-separation-sequence</p>
			<p id="content-structure-separation-understanding">placeholder for content-structure-separation-understanding</p>
			<p id="visual-audio-contrast">placeholder for visual-audio-contrast</p>
			<p id="visual-audio-contrast-without-color">placeholder for visual-audio-contrast-without-color</p>
			<p id="visual-audio-contrast-dis-audio">placeholder for visual-audio-contrast-dis-audio</p>
			<p id="visual-audio-contrast-contrast">placeholder for visual-audio-contrast-contrast</p>
			<p id="visual-audio-contrast-scale">placeholder for visual-audio-contrast-scale</p>
			<p id="visual-audio-contrast-text-presentation">placeholder for visual-audio-contrast-text-presentation</p>
			<p id="visual-audio-contrast7">placeholder for visual-audio-contrast7</p>
			<p id="visual-audio-contrast-noaudio">placeholder for visual-audio-contrast-noaudio</p>
			<p id="visual-audio-contrast-visual-presentation">placeholder for visual-audio-contrast-visual-presentation</p>
			<p id="visual-audio-contrast-text-images">placeholder for visual-audio-contrast-text-images</p>
			<p id="keyboard-operation">placeholder for keyboard-operation</p>
			<p id="keyboard-operation-keyboard-operable">placeholder for keyboard-operation-keyboard-operable</p>
			<p id="keyboard-operation-trapping">placeholder for keyboard-operation-trapping</p>
			<p id="keyboard-operation-all-funcs">placeholder for keyboard-operation-all-funcs</p>
			<p id="time-limits">placeholder for time-limits</p>
			<p id="time-limits-required-behaviors">placeholder for time-limits-required-behaviors</p>
			<p id="time-limits-pause">placeholder for time-limits-pause</p>
			<p id="time-limits-no-exceptions">placeholder for time-limits-no-exceptions</p>
			<p id="time-limits-postponed">placeholder for time-limits-postponed</p>
			<p id="time-limits-server-timeout">placeholder for time-limits-server-timeout</p>
			<p id="seizure">placeholder for seizure</p>
			<p id="seizure-does-not-violate">placeholder for seizure-does-not-violate</p>
			<p id="seizure-three-times">placeholder for seizure-three-times</p>
			<p id="navigation-mechanisms">placeholder for navigation-mechanisms</p>
			<p id="navigation-mechanisms-skip">placeholder for navigation-mechanisms-skip</p>
			<p id="navigation-mechanisms-title">placeholder for navigation-mechanisms-title</p>
			<p id="navigation-mechanisms-focus-order">placeholder for navigation-mechanisms-focus-order</p>
			<p id="navigation-mechanisms-refs">placeholder for navigation-mechanisms-refs</p>
			<p id="navigation-mechanisms-mult-loc">placeholder for navigation-mechanisms-mult-loc</p>
			<p id="navigation-mechanisms-descriptive">placeholder for navigation-mechanisms-descriptive</p>
			<p id="navigation-mechanisms-focus-visible">placeholder for navigation-mechanisms-focus-visible</p>
			<p id="navigation-mechanisms-location">placeholder for navigation-mechanisms-location</p>
			<p id="navigation-mechanisms-link">placeholder for navigation-mechanisms-link</p>
			<p id="navigation-mechanisms-headings">placeholder for navigation-mechanisms-headings</p>
			<p id="meaning">placeholder for meaning</p>
			<p id="meaning-doc-lang-id">placeholder for meaning-doc-lang-id</p>
			<p id="meaning-other-lang-id">placeholder for meaning-other-lang-id</p>
			<p id="meaning-idioms">placeholder for meaning-idioms</p>
			<p id="meaning-located">placeholder for meaning-located</p>
			<p id="meaning-supplements">placeholder for meaning-supplements</p>
			<p id="meaning-pronunciation">placeholder for meaning-pronunciation</p>
			<p id="consistent-behavior">placeholder for consistent-behavior</p>
			<p id="consistent-behavior-receive-focus">placeholder for consistent-behavior-receive-focus</p>
			<p id="consistent-behavior-unpredictable-change">placeholder for consistent-behavior-unpredictable-change</p>
			<p id="consistent-behavior-consistent-locations">placeholder for consistent-behavior-consistent-locations</p>
			<p id="consistent-behavior-consistent-functionality">placeholder for consistent-behavior-consistent-functionality</p>
			<p id="consistent-behavior-no-extreme-changes-context">placeholder for consistent-behavior-no-extreme-changes-context</p>
			<p id="minimize-error">placeholder for minimize-error</p>
			<p id="minimize-error-identified">placeholder for minimize-error-identified</p>
			<p id="minimize-error-cues">placeholder for minimize-error-cues</p>
			<p id="minimize-error-suggestions">placeholder for minimize-error-suggestions</p>
			<p id="minimize-error-reversible">placeholder for minimize-error-reversible</p>
			<p id="minimize-error-context-help">placeholder for minimize-error-context-help</p>
			<p id="minimize-error-reversible-all">placeholder for minimize-error-reversible-all</p>
			<p id="ensure-compat">placeholder for ensure-compat</p>
			<p id="ensure-compat-parses">placeholder for ensure-compat-parses</p>
			<p id="ensure-compat-rsv">placeholder for ensure-compat-rsv</p>
			<p id="G1">placeholder for G1</p>
			<p id="G4">placeholder for G4</p>
			<p id="G5">placeholder for G5</p>
			<p id="G8">placeholder for G8</p>
			<p id="G9">placeholder for G9</p>
			<p id="G10">placeholder for G10</p>
			<p id="G11">placeholder for G11</p>
			<p id="G13">placeholder for G13</p>
			<p id="G14">placeholder for G14</p>
			<p id="G15">placeholder for G15</p>
			<p id="G17">placeholder for G17</p>
			<p id="G18">placeholder for G18</p>
			<p id="G19">placeholder for G19</p>
			<p id="G21">placeholder for G21</p>
			<p id="G53">placeholder for G53</p>
			<p id="G54">placeholder for G54</p>
			<p id="G55">placeholder for G55</p>
			<p id="G56">placeholder for G56</p>
			<p id="G57">placeholder for G57</p>
			<p id="G58">placeholder for G58</p>
			<p id="G59">placeholder for G59</p>
			<p id="G60">placeholder for G60</p>
			<p id="G61">placeholder for G61</p>
			<p id="G62">placeholder for G62</p>
			<p id="G63">placeholder for G63</p>
			<p id="G64">placeholder for G64</p>
			<p id="G65">placeholder for G65</p>
			<p id="G68">placeholder for G68</p>
			<p id="G69">placeholder for G69</p>
			<p id="G70">placeholder for G70</p>
			<p id="G71">placeholder for G71</p>
			<p id="G73">placeholder for G73</p>
			<p id="G74">placeholder for G74</p>
			<p id="G75">placeholder for G75</p>
			<p id="G76">placeholder for G76</p>
			<p id="G78">placeholder for G78</p>
			<p id="G79">placeholder for G79</p>
			<p id="G80">placeholder for G80</p>
			<p id="G81">placeholder for G81</p>
			<p id="G82">placeholder for G82</p>
			<p id="G83">placeholder for G83</p>
			<p id="G84">placeholder for G84</p>
			<p id="G85">placeholder for G85</p>
			<p id="G86">placeholder for G86</p>
			<p id="G87">placeholder for G87</p>
			<p id="G88">placeholder for G88</p>
			<p id="G89">placeholder for G89</p>
			<p id="G90">placeholder for G90</p>
			<p id="G91">placeholder for G91</p>
			<p id="G92">placeholder for G92</p>
			<p id="G93">placeholder for G93</p>
			<p id="G94">placeholder for G94</p>
			<p id="G95">placeholder for G95</p>
			<p id="G96">placeholder for G96</p>
			<p id="G97">placeholder for G97</p>
			<p id="G98">placeholder for G98</p>
			<p id="G99">placeholder for G99</p>
			<p id="G100">placeholder for G100</p>
			<p id="G101">placeholder for G101</p>
			<p id="G102">placeholder for G102</p>
			<p id="G103">placeholder for G103</p>
			<p id="G105">placeholder for G105</p>
			<p id="G107">placeholder for G107</p>
			<p id="G108">placeholder for G108</p>
			<p id="G110">placeholder for G110</p>
			<p id="G111">placeholder for G111</p>
			<p id="G112">placeholder for G112</p>
			<p id="G115">placeholder for G115</p>
			<p id="G117">placeholder for G117</p>
			<p id="G120">placeholder for G120</p>
			<p id="G121">placeholder for G121</p>
			<p id="G122">placeholder for G122</p>
			<p id="G123">placeholder for G123</p>
			<p id="G124">placeholder for G124</p>
			<p id="G125">placeholder for G125</p>
			<p id="G126">placeholder for G126</p>
			<p id="G127">placeholder for G127</p>
			<p id="G128">placeholder for G128</p>
			<p id="G130">placeholder for G130</p>
			<p id="G131">placeholder for G131</p>
			<p id="G133">placeholder for G133</p>
			<p id="G134">placeholder for G134</p>
			<p id="G135">placeholder for G135</p>
			<p id="G136">placeholder for G136</p>
			<p id="G138">placeholder for G138</p>
			<p id="G139">placeholder for G139</p>
			<p id="G140">placeholder for G140</p>
			<p id="G141">placeholder for G141</p>
			<p id="G142">placeholder for G142</p>
			<p id="G143">placeholder for G143</p>
			<p id="G144">placeholder for G144</p>
			<p id="G145">placeholder for G145</p>
			<p id="G146">placeholder for G146</p>
			<p id="G147">placeholder for G147</p>
			<p id="G148">placeholder for G148</p>
			<p id="G149">placeholder for G149</p>
			<p id="G150">placeholder for G150</p>
			<p id="G151">placeholder for G151</p>
			<p id="G152">placeholder for G152</p>
			<p id="G153">placeholder for G153</p>
			<p id="G155">placeholder for G155</p>
			<p id="G156">placeholder for G156</p>
			<p id="G157">placeholder for G157</p>
			<p id="G158">placeholder for G158</p>
			<p id="G159">placeholder for G159</p>
			<p id="G160">placeholder for G160</p>
			<p id="G161">placeholder for G161</p>
			<p id="G162">placeholder for G162</p>
			<p id="G163">placeholder for G163</p>
			<p id="G164">placeholder for G164</p>
			<p id="G165">placeholder for G165</p>
			<p id="G166">placeholder for G166</p>
			<p id="G167">placeholder for G167</p>
			<p id="G168">placeholder for G168</p>
			<p id="G169">placeholder for G169</p>
			<p id="G170">placeholder for G170</p>
			<p id="G171">placeholder for G171</p>
			<p id="G172">placeholder for G172</p>
			<p id="G173">placeholder for G173</p>
			<p id="G174">placeholder for G174</p>
			<p id="G175">placeholder for G175</p>
			<p id="G176">placeholder for G176</p>
			<p id="G177">placeholder for G177</p>
			<p id="G178">placeholder for G178</p>
			<p id="G179">placeholder for G179</p>
			<p id="G180">placeholder for G180</p>
			<p id="G181">placeholder for G181</p>
			<p id="G182">placeholder for G182</p>
			<p id="G183">placeholder for G183</p>
			<p id="G184">placeholder for G184</p>
			<p id="G185">placeholder for G185</p>
			<p id="G186">placeholder for G186</p>
			<p id="G187">placeholder for G187</p>
			<p id="G188">placeholder for G188</p>
			<p id="G189">placeholder for G189</p>
			<p id="G190">placeholder for G190</p>
			<p id="G191">placeholder for G191</p>
			<p id="G192">placeholder for G192</p>
			<p id="G193">placeholder for G193</p>
			<p id="G194">placeholder for G194</p>
			<p id="G195">placeholder for G195</p>
			<p id="G196">placeholder for G196</p>
			<p id="G197">placeholder for G197</p>
			<p id="G198">placeholder for G198</p>
			<p id="H2">placeholder for H2</p>
			<p id="H4">placeholder for H4</p>
			<p id="H24">placeholder for H24</p>
			<p id="H25">placeholder for H25</p>
			<p id="H27">placeholder for H27</p>
			<p id="H28">placeholder for H28</p>
			<p id="H30">placeholder for H30</p>
			<p id="H32">placeholder for H32</p>
			<p id="H33">placeholder for H33</p>
			<p id="H34">placeholder for H34</p>
			<p id="H35">placeholder for H35</p>
			<p id="H36">placeholder for H36</p>
			<p id="H37">placeholder for H37</p>
			<p id="H39">placeholder for H39</p>
			<p id="H40">placeholder for H40</p>
			<p id="H42">placeholder for H42</p>
			<p id="H43">placeholder for H43</p>
			<p id="H44">placeholder for H44</p>
			<p id="H45">placeholder for H45</p>
			<p id="H46">placeholder for H46</p>
			<p id="H48">placeholder for H48</p>
			<p id="H49">placeholder for H49</p>
			<p id="H50">placeholder for H50</p>
			<p id="H51">placeholder for H51</p>
			<p id="H53">placeholder for H53</p>
			<p id="H54">placeholder for H54</p>
			<p id="H56">placeholder for H56</p>
			<p id="H57">placeholder for H57</p>
			<p id="H58">placeholder for H58</p>
			<p id="H59">placeholder for H59</p>
			<p id="H60">placeholder for H60</p>
			<p id="H62">placeholder for H62</p>
			<p id="H63">placeholder for H63</p>
			<p id="H64">placeholder for H64</p>
			<p id="H65">placeholder for H65</p>
			<p id="H67">placeholder for H67</p>
			<p id="H69">placeholder for H69</p>
			<p id="H70">placeholder for H70</p>
			<p id="H71">placeholder for H71</p>
			<p id="H73">placeholder for H73</p>
			<p id="H74">placeholder for H74</p>
			<p id="H75">placeholder for H75</p>
			<p id="H76">placeholder for H76</p>
			<p id="H77">placeholder for H77</p>
			<p id="H78">placeholder for H78</p>
			<p id="H79">placeholder for H79</p>
			<p id="H80">placeholder for H80</p>
			<p id="H81">placeholder for H81</p>
			<p id="H82">placeholder for H82</p>
			<p id="H83">placeholder for H83</p>
			<p id="H84">placeholder for H84</p>
			<p id="H85">placeholder for H85</p>
			<p id="H86">placeholder for H86</p>
			<p id="H87">placeholder for H87</p>
			<p id="H88">placeholder for H88</p>
			<p id="H89">placeholder for H89</p>
			<p id="H90">placeholder for H90</p>
			<p id="H91">placeholder for H91</p>
			<p id="C6">placeholder for C6</p>
			<p id="C7">placeholder for C7</p>
			<p id="C8">placeholder for C8</p>
			<p id="C9">placeholder for C9</p>
			<p id="C12">placeholder for C12</p>
			<p id="C13">placeholder for C13</p>
			<p id="C14">placeholder for C14</p>
			<p id="C15">placeholder for C15</p>
			<p id="C16">placeholder for C16</p>
			<p id="C17">placeholder for C17</p>
			<p id="C18">placeholder for C18</p>
			<p id="C19">placeholder for C19</p>
			<p id="C20">placeholder for C20</p>
			<p id="C21">placeholder for C21</p>
			<p id="C22">placeholder for C22</p>
			<p id="C23">placeholder for C23</p>
			<p id="C24">placeholder for C24</p>
			<p id="C25">placeholder for C25</p>
			<p id="C26">placeholder for C26</p>
			<p id="C27">placeholder for C27</p>
			<p id="C28">placeholder for C28</p>
			<p id="C29">placeholder for C29</p>
			<p id="C30">placeholder for C30</p>
			<p id="SCR1">placeholder for SCR1</p>
			<p id="SCR2">placeholder for SCR2</p>
			<p id="SCR14">placeholder for SCR14</p>
			<p id="SCR16">placeholder for SCR16</p>
			<p id="SCR18">placeholder for SCR18</p>
			<p id="SCR19">placeholder for SCR19</p>
			<p id="SCR20">placeholder for SCR20</p>
			<p id="SCR21">placeholder for SCR21</p>
			<p id="SCR22">placeholder for SCR22</p>
			<p id="SCR24">placeholder for SCR24</p>
			<p id="SCR26">placeholder for SCR26</p>
			<p id="SCR27">placeholder for SCR27</p>
			<p id="SCR28">placeholder for SCR28</p>
			<p id="SCR29">placeholder for SCR29</p>
			<p id="SCR30">placeholder for SCR30</p>
			<p id="SCR31">placeholder for SCR31</p>
			<p id="SCR32">placeholder for SCR32</p>
			<p id="SCR33">placeholder for SCR33</p>
			<p id="SCR34">placeholder for SCR34</p>
			<p id="SCR35">placeholder for SCR35</p>
			<p id="SCR36">placeholder for SCR36</p>
			<p id="SCR37">placeholder for SCR37</p>
			<p id="SM1">placeholder for SM1</p>
			<p id="SM2">placeholder for SM2</p>
			<p id="SM6">placeholder for SM6</p>
			<p id="SM7">placeholder for SM7</p>
			<p id="SM11">placeholder for SM11</p>
			<p id="SM12">placeholder for SM12</p>
			<p id="SM13">placeholder for SM13</p>
			<p id="SM14">placeholder for SM14</p>
			<p id="T1">placeholder for T1</p>
			<p id="T2">placeholder for T2</p>
			<p id="T3">placeholder for T3</p>
			<p id="ARIA1">placeholder for ARIA1</p>
			<p id="ARIA2">placeholder for ARIA2</p>
			<p id="ARIA3">placeholder for ARIA3</p>
			<p id="ARIA4">placeholder for ARIA4</p>
			<p id="F1">placeholder for F1</p>
			<p id="F2">placeholder for F2</p>
			<p id="F3">placeholder for F3</p>
			<p id="F4">placeholder for F4</p>
			<p id="F7">placeholder for F7</p>
			<p id="F8">placeholder for F8</p>
			<p id="F9">placeholder for F9</p>
			<p id="F10">placeholder for F10</p>
			<p id="F12">placeholder for F12</p>
			<p id="F13">placeholder for F13</p>
			<p id="F14">placeholder for F14</p>
			<p id="F15">placeholder for F15</p>
			<p id="F16">placeholder for F16</p>
			<p id="F17">placeholder for F17</p>
			<p id="F19">placeholder for F19</p>
			<p id="F20">placeholder for F20</p>
			<p id="F22">placeholder for F22</p>
			<p id="F23">placeholder for F23</p>
			<p id="F24">placeholder for F24</p>
			<p id="F25">placeholder for F25</p>
			<p id="F26">placeholder for F26</p>
			<p id="F30">placeholder for F30</p>
			<p id="F31">placeholder for F31</p>
			<p id="F32">placeholder for F32</p>
			<p id="F33">placeholder for F33</p>
			<p id="F34">placeholder for F34</p>
			<p id="F36">placeholder for F36</p>
			<p id="F37">placeholder for F37</p>
			<p id="F38">placeholder for F38</p>
			<p id="F39">placeholder for F39</p>
			<p id="F40">placeholder for F40</p>
			<p id="F41">placeholder for F41</p>
			<p id="F42">placeholder for F42</p>
			<p id="F43">placeholder for F43</p>
			<p id="F44">placeholder for F44</p>
			<p id="F46">placeholder for F46</p>
			<p id="F47">placeholder for F47</p>
			<p id="F48">placeholder for F48</p>
			<p id="F49">placeholder for F49</p>
			<p id="F50">placeholder for F50</p>
			<p id="F52">placeholder for F52</p>
			<p id="F54">placeholder for F54</p>
			<p id="F55">placeholder for F55</p>
			<p id="F58">placeholder for F58</p>
			<p id="F59">placeholder for F59</p>
			<p id="F60">placeholder for F60</p>
			<p id="F61">placeholder for F61</p>
			<p id="F62">placeholder for F62</p>
			<p id="F63">placeholder for F63</p>
			<p id="F65">placeholder for F65</p>
			<p id="F66">placeholder for F66</p>
			<p id="F67">placeholder for F67</p>
			<p id="F68">placeholder for F68</p>
			<p id="F69">placeholder for F69</p>
			<p id="F70">placeholder for F70</p>
			<p id="F71">placeholder for F71</p>
			<p id="F72">placeholder for F72</p>
			<p id="F73">placeholder for F73</p>
			<p id="F74">placeholder for F74</p>
			<p id="F75">placeholder for F75</p>
			<p id="F76">placeholder for F76</p>
			<p id="F77">placeholder for F77</p>
			<p id="F78">placeholder for F78</p>
			<p id="F79">placeholder for F79</p>
			<p id="F80">placeholder for F80</p>
			<p id="F81">placeholder for F81</p>
			<p id="F82">placeholder for F82</p>
			<p id="F83">placeholder for F83</p>
			<p id="F84">placeholder for F84</p>
			<p id="F85">placeholder for F85</p>
			<p id="F86">placeholder for F86</p>
			<p id="F87">placeholder for F87</p>
			<p id="F88">placeholder for F88</p>
			<p id="F89">placeholder for F89</p>
		</div1>
	</back>
</spec>
