<?xml version="1.0"?>
<!--
 Web Accessibility Initiative (WAI)/Section 508 Compliance rule set.
 Copyright 2001, Microsoft Corporation, All rights reserved.   
 
Version 11.4526
-->
<xp:ruleset version="1.0" xmlns:xp="http://schemas.microsoft.com/2001/xmlpatterns">
	<!-- INCLUDE SECTION -->
	<xp:include src="WCAG_str.xml"/>
	<!-- CATEGORY: 1.1 -->
	<xp:category name="$Checkpoint1_1" href="$strRedir1_1">
		<xp:rule context="(//img) | (//noembed)">
			<!-- following tests: no "alt" AND no longdesc -->
			<xp:pattern match="@alt | @longdesc" is-assert="true" priority="1">
				<xp:report type="error">
					<xp:summary>
						<xp:value-of select="$str1_1_MissingAltAndLongDesc_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str1_1_MissingAltAndLongDesc"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
		<!-- following tests: with "alt" &gt; than 255 characters  -->
		<xp:rule context="(//img) | (//noembed) | (//input[@type = 'image']) | (//area)">
			<xp:pattern match="@alt[string-length( . ) &gt; 255]" priority="1">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str1_1_AttributeTooLong_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str1_1_AttributeTooLong"/>
					</xp:message>
				</xp:report>
			</xp:pattern>		
			<!-- following tests: with "alt" AND alt text ends with a file type of image   -->
			<xp:pattern match="@alt[(
				( substring( ., string-length( . ) - 3 ) = '.bmp' ) or
		 		( substring( ., string-length( . ) - 3 ) = '.gif' ) or
		 		( substring( ., string-length( . ) - 3 ) = '.png' ) or
				( substring( ., string-length( . ) - 3 ) = '.jpg' ) or
				( substring( ., string-length( . ) - 3 ) = '.mix' ) or
				( substring( ., string-length( . ) - 3 ) = '.tif' ) or
				( substring( ., string-length( . ) - 3 ) = '.pic' ) or
				( substring( ., string-length( . ) - 4 ) = '.pict' ) or
				( substring( ., string-length( . ) - 4 ) = '.jpeg' ) or
				( substring( ., string-length( . ) - 3 ) = '.avi' ) or
				( substring( ., string-length( . ) - 3 ) = '.jpe' ) or
				( substring( ., string-length( . ) - 3 ) = '.tiff' ) or
				( substring( ., string-length( . ) - 3 ) = '.pcx' ) or 
				( substring( ., string-length( . ) - 3 ) = '.pcd' ) or 
				( substring( ., string-length( . ) - 3 ) = '.asf' ) or 
				( substring( ., string-length( . ) - 3 ) = '.asx' ) or 
				( substring( ., string-length( . ) - 2 ) = '.wm' ) or 
				( substring( ., string-length( . ) - 3 ) = '.wmx' ) or 
				( substring( ., string-length( . ) - 3 ) = '.wmp' ) or 
				( substring( ., string-length( . ) - 3 ) = '.wma' ) or 
				( substring( ., string-length( . ) - 3 ) = '.wax' ) or 
				( substring( ., string-length( . ) - 3 ) = '.wmv' ) or 
				( substring( ., string-length( . ) - 3 ) = '.wvx' ) or  
				( substring( ., string-length( . ) - 3 ) = '.wav' ) or 
				( substring( ., string-length( . ) - 4 ) = '.mpeg' ) or 
				( substring( ., string-length( . ) - 3 ) = '.mpg' ) or 
				( substring( ., string-length( . ) - 3 ) = '.mpe' ) or
				( substring( ., string-length( . ) - 3 ) = '.m1v' ) or 
				( substring( ., string-length( . ) - 3 ) = '.mp2' ) or 
				( substring( ., string-length( . ) - 4 ) = '.mp2v' ) or 
				( substring( ., string-length( . ) - 3 ) = '.mpa' ) or 
				( substring( ., string-length( . ) - 3 ) = '.mp3' ) or 
				( substring( ., string-length( . ) - 3 ) = '.m3u' ) or 
				( substring( ., string-length( . ) - 3 ) = '.mid' ) or 
				( substring( ., string-length( . ) - 4 ) = '.midi' ) or 
				( substring( ., string-length( . ) - 3 ) = '.rmi' ) or 
				( substring( ., string-length( . ) - 3 ) = '.ivf' ) or 
				( substring( ., string-length( . ) - 3 ) = '.aif' ) or 
				( substring( ., string-length( . ) - 3 ) = '.aiff' ) or 
				( substring( ., string-length( . ) - 2 ) = '.au' ) or 
				( substring( ., string-length( . ) - 3 ) = '.acr' ) or 
				( substring( ., string-length( . ) - 3 ) = '.arc' ) or 
				( substring( ., string-length( . ) - 3 ) = '.arj' ) or 
				( substring( ., string-length( . ) - 3 ) = '.art' ) or 
				( substring( ., string-length( . ) - 3 ) = '.asc' ) or 
				( substring( ., string-length( . ) - 3 ) = '.avr' ) or 
				( substring( ., string-length( . ) - 3 ) = '.avs' ) or 
				( substring( ., string-length( . ) - 3 ) = '.bac' ) or 
				( substring( ., string-length( . ) - 3 ) = '.bas' ) or 
				( substring( ., string-length( . ) - 3 ) = '.bbm' ) or 
				( substring( ., string-length( . ) - 3 ) = '.bck' ) or 
				( substring( ., string-length( . ) - 3 ) = '.big' ) or 
				( substring( ., string-length( . ) - 4 ) = '.big5' ) or 
				( substring( ., string-length( . ) - 3 ) = '.bmf' ) or 
				( substring( ., string-length( . ) - 3 ) = '.boo' ) or 
				( substring( ., string-length( . ) - 3 ) = '.byu' ) or 
				( substring( ., string-length( . ) - 3 ) = '.cgm' ) or 
				( substring( ., string-length( . ) - 3 ) = '.clp' ) or 
				( substring( ., string-length( . ) - 3 ) = '.cmf' ) or 
				( substring( ., string-length( . ) - 3 ) = '.com' ) or 
				( substring( ., string-length( . ) - 3 ) = '.cpt' ) or 
				( substring( ., string-length( . ) - 3 ) = '.cur' ) or 
				( substring( ., string-length( . ) - 3 ) = '.cut' ) or 
				( substring( ., string-length( . ) - 3 ) = '.dat' ) or
				( substring( ., string-length( . ) - 3 ) = '.ram' ) or 
				( substring( ., string-length( . ) - 2 ) = '.ra' ) or 
				( substring( ., string-length( . ) - 3 ) = '.tar' ) or 
				( substring( ., string-length( . ) - 1 ) = '.z' ) or 
				( substring( ., string-length( . ) - 2 ) = '.gz' ) or
				( substring( ., string-length( . ) - 3 ) = '.tgz' ) or 
				( substring( ., string-length( . ) - 3 ) = '.zip' ) or 
				( substring( ., string-length( . ) - 3 ) = '.rft'  ) or 
				( substring( ., string-length( . ) - 2 ) = '.ai' ) or 
				( substring( ., string-length( . ) - 3 ) = '.eps' ) or 
				( substring( ., string-length( . ) - 2 ) = '.ps' ) or 
 				( substring( ., string-length( . ) - 3 ) = '.exe' ) or 
				( substring( ., string-length( . ) - 3 ) = '.bin' ) or 
				( substring( ., string-length( . ) - 3 ) = '.sit' ) or 
				( substring( ., string-length( . ) - 3 ) = '.hqz' ) or 
				( substring( ., string-length( . ) - 3 ) = '.wav' ) or 
				( substring( ., string-length( . ) - 3 ) = '.snd' ) or 
				( substring( ., string-length( . ) - 3 ) = '.xbm' ) or 
				( substring( ., string-length( . ) - 2 ) = '.zw' ) or 
				( substring( ., string-length( . ) - 3 ) = '.yuv' ) or 
				( substring( ., string-length( . ) - 3 ) = '.xwd' ) or 
				( substring( ., string-length( . ) - 3 ) = '.xpm' ) or 
				( substring( ., string-length( . ) - 2 ) = '.xm' ) or 
				( substring( ., string-length( . ) - 3 ) = '.sbm' ) or 
				( substring( ., string-length( . ) - 3 ) = '.wmf' ) or 
				( substring( ., string-length( . ) - 3 ) = '.voc' ) or 
				( substring( ., string-length( . ) - 3 ) = '.vis' ) or 
				( substring( ., string-length( . ) - 3 ) = '.vik' ) or 
				( substring( ., string-length( . ) - 3 ) = '.uud' ) or 
				( substring( ., string-length( . ) - 3 ) = '.uue' ) or 
				( substring( ., string-length( . ) - 3 ) = '.utl' ) or 
				( substring( ., string-length( . ) - 2 ) = '.ul' ) or 
				( substring( ., string-length( . ) - 3 ) = '.tga' ) or 
				( substring( ., string-length( . ) - 3 ) = '.stm' ) or 
				( substring( ., string-length( . ) - 3 ) = '.shg' ) or 
				( substring( ., string-length( . ) - 3 ) = '.sgi' ) or 
				( substring( ., string-length( . ) - 2 ) = '.sf' ) or 
				( substring( ., string-length( . ) - 3 ) = '.sea' ) or 
				( substring( ., string-length( . ) - 3 ) = '.scx' ) or 
				( substring( ., string-length( . ) - 3 ) = '.s3m' ) or 
				( substring( ., string-length( . ) - 3 ) = '.rol' ) or 
				( substring( ., string-length( . ) - 3 ) = '.rle' ) or 
				( substring( ., string-length( . ) - 3 ) = '.rmi' ) or 
				( substring( ., string-length( . ) - 3 ) = '.rgb' ) or 
				( substring( ., string-length( . ) - 3 ) = '.raw' ) or 
				( substring( ., string-length( . ) - 3 ) = '.rax' ) or 
				( substring( ., string-length( . ) - 3 ) = '.ras' ) or 
				( substring( ., string-length( . ) - 2 ) = '.ps' ) or 
				( substring( ., string-length( . ) - 3 ) = '.ppm' ) or 
				( substring( ., string-length( . ) - 3 ) = '.pol' ) or 
				( substring( ., string-length( . ) - 3 ) = '.pnt' ) or 
				( substring( ., string-length( . ) - 2 ) = '.pm' ) or 
				( substring( ., string-length( . ) - 3 ) = '.pgm' ) or 
				( substring( ., string-length( . ) - 3 ) = '.pds' ) or 
				( substring( ., string-length( . ) - 3 ) = '.pdf' ) or 
				( substring( ., string-length( . ) - 3 ) = '.pcx' ) or 
				( substring( ., string-length( . ) - 3 ) = '.pct' ) or 
				( substring( ., string-length( . ) - 3 ) = '.pcm' ) or 
				( substring( ., string-length( . ) - 3 ) = '.pcc' ) or 
				( substring( ., string-length( . ) - 3 ) = '.pcd' ) or 
				( substring( ., string-length( . ) - 3 ) = '.pbm' ) or 
				( substring( ., string-length( . ) - 3 ) = '.omf' ) or 
				( substring( ., string-length( . ) - 3 ) = '.off' ) or 
				( substring( ., string-length( . ) - 3 ) = '.nst' ) or 
				( substring( ., string-length( . ) - 3 ) = '.nff' ) or 
				( substring( ., string-length( . ) - 3 ) = '.mtv' ) or 
				( substring( ., string-length( . ) - 3 ) = '.mtm' ) or 
				( substring( ., string-length( . ) - 3 ) = '.msp' ) or 
				( substring( ., string-length( . ) - 3 ) = '.mrb' ) or 
				( substring( ., string-length( . ) - 3 ) = '.mps' ) or 
				( substring( ., string-length( . ) - 3 ) = '.mpg' ) or 
				( substring( ., string-length( . ) - 3 ) = '.mpa' ) or 
				( substring( ., string-length( . ) - 3 ) = '.mp2' ) or 
				( substring( ., string-length( . ) - 3 ) = '.mod' ) or 
				( substring( ., string-length( . ) - 3 ) = '.mki' ) or 
				( substring( ., string-length( . ) - 3 ) = '.mid' ) or 
				( substring( ., string-length( . ) - 3 ) = '.mhg' ) or 
				( substring( ., string-length( . ) - 3 ) = '.mgf' ) or 
				( substring( ., string-length( . ) - 3 ) = '.mat' ) or 
				( substring( ., string-length( . ) - 3 ) = '.map' ) or 
				( substring( ., string-length( . ) - 3 ) = '.mag' ) or 
				( substring( ., string-length( . ) - 3 ) = '.mac' ) or 
				( substring( ., string-length( . ) - 3 ) = '.lm8' ) or 
				( substring( ., string-length( . ) - 3 ) = '.lbm' ) or 
				( substring( ., string-length( . ) - 3 ) = '.jpc' ) or 
				( substring( ., string-length( . ) - 3 ) = '.jis' ) or 
				( substring( ., string-length( . ) - 3 ) = '.jfi' ) or 
				( substring( ., string-length( . ) - 4 ) = '.jbig' ) or 
				( substring( ., string-length( . ) - 3 ) = '.jas' ) or 
				( substring( ., string-length( . ) - 3 ) = '.ish' ) or 
				( substring( ., string-length( . ) - 3 ) = '.iff' ) or 
				( substring( ., string-length( . ) - 3 ) = '.ief' ) or 
				( substring( ., string-length( . ) - 3 ) = '.ico' ) or 
				( substring( ., string-length( . ) - 3 ) = '.ibm' ) or 
				( substring( ., string-length( . ) - 2 ) = '.hz' ) or 
				( substring( ., string-length( . ) - 3 ) = '.hrz' ) or 
				( substring( ., string-length( . ) - 3 ) = '.hlp' ) or 
				( substring( ., string-length( . ) - 3 ) = '.hlb' ) or 
				( substring( ., string-length( . ) - 3 ) = '.ham' ) or 
				( substring( ., string-length( . ) - 3 ) = '.gry' ) or 
				( substring( ., string-length( . ) - 2 ) = '.gl' ) or 
				( substring( ., string-length( . ) - 2 ) = '.gb' ) or 
				( substring( ., string-length( . ) - 3 ) = '.gds' ) or 
				( substring( ., string-length( . ) - 4 ) = '.fssd' ) or 
				( substring( ., string-length( . ) - 3 ) = '.flx' ) or 
				( substring( ., string-length( . ) - 3 ) = '.fli' ) or 
				( substring( ., string-length( . ) - 3 ) = '.fic' ) or 
				( substring( ., string-length( . ) - 3 ) = '.fit' ) or 
				( substring( ., string-length( . ) - 4 ) = '.fits' ) or 
				( substring( ., string-length( . ) - 3 ) = '.fac' ) or 
				( substring( ., string-length( . ) - 1 ) = '.f' ) or 
				( substring( ., string-length( . ) - 3 ) = '.euc' ) or 
				( substring( ., string-length( . ) - 3 ) = '.eps' ) or 
				( substring( ., string-length( . ) - 3 ) = '.dxf' ) or 
				( substring( ., string-length( . ) - 3 ) = '.dwg' ) or 
				( substring( ., string-length( . ) - 3 ) = '.dlg' ) or 
				( substring( ., string-length( . ) - 2 ) = '.dl' ) or 
				( substring( ., string-length( . ) - 3 ) = '.dib' ) or 
				( substring( ., string-length( . ) - 3 ) = '.dcs' ) or 
				( substring( ., string-length( . ) - 3 ) = '.dat' ) or 
				( substring( ., string-length( . ) - 3 ) = '.cut' ) or 
				( substring( ., string-length( . ) - 3 ) = '.cur' ) or 
				( substring( ., string-length( . ) - 3 ) = '.cpt' )
			)]" priority="1">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str1_1_PossibleImageNameInAlt_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str1_1_PossibleImageNameInAlt"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
			<!-- following tests: with "alt" AND alt="image"; "photo"; or "picture" -->
			<xp:pattern match="@alt[( 
					( substring(., 0 ) = 'Image') or 
					( substring(., 0 ) = 'Photo') or 
					( substring(., 0 ) = 'Picture') or
					( substring(., 0 ) = 'image') or 
					( substring(., 0 ) = 'photo') or 
					( substring(., 0 ) = 'picture')
				)]" priority="1">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str1_1_InvalidDesc_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str1_1_InvalidDesc"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
		<xp:rule context="//area">
			<!-- following tests: no "alt" in AREA -->
			<xp:pattern match="@alt" is-assert="true" priority="1">
				<xp:report type="error">
					<xp:summary>
						<xp:value-of select="$str1_1_MissingAlternativeText_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str1_1_MissingAlternativeText"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
		<xp:rule context="//input[@type = 'image']">
			<!-- following tests: INPUT type = image with no "alt" -->
			<xp:pattern match="@alt" is-assert="true" priority="1">
				<xp:report type="error">
					<xp:summary>
						<xp:value-of select="$str1_1_MissingAlt_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str1_1_MissingAlt"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
		<xp:rule context="(//applet)">
			<!-- following tests: no "alt" AND no TEXT EQUIVALENT in the content of the Applet-->
			<xp:pattern match="@alt |.//text" is-assert="true" priority="1">
				<xp:report type="error">
					<xp:summary>
						<xp:value-of select="$str1_1_AppletMissingText_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str1_1_AppletMissingText"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
			<!-- following tests: 	alt-text ends with applet executable extension -->
			<xp:pattern match="@alt[(
					( substring( ., string-length( . ) - 5 ) = '.class' ) or
					( substring( ., string-length( . ) - 4 ) = '.java' ) or
					( substring( ., string-length( . ) - 3 ) = '.jar' ) or
					( substring( ., string-length( . ) - 3 ) = '.zip' ) or
					( substring( ., string-length( . ) - 3 ) = '.cal' ) or
					( substring( ., string-length( . ) - 3 ) = '.clp' ) or
					( substring( ., string-length( . ) - 3 ) = '.crd' ) or
					( substring( ., string-length( . ) - 3 ) = '.exe' )
				)]" priority="1">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str1_1_AltEndsWithExeExt_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str1_1_AltEndsWithExeExt"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
		<xp:rule context="//object">
			<!-- following tests: Object with image type and NO text element -->
			<xp:pattern match="@type[not (./parent::*//text())]" priority="1">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str1_1_ObjectTypeImageMissingTextEquivalent_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str1_1_ObjectTypeImageMissingTextEquivalent"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
			<!-- following tests: with text element AND text is placeholder contains words "goes here" -->
			<xp:pattern match="(self::object[contains (., 'GoesHere')]) | (self::object[contains (., 'Placeholder')]) " priority="1">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str1_1_GoesHereObjectText_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str1_1_GoesHereObjectText"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
		<!-- following tests: 	no -NOSCRIPT  /NOSCRIPT-, should follow SCRIPT tag -->
		<xp:rule context="//script">
			<xp:pattern match="./following-sibling::noscript" is-assert="true" priority="1">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str1_1_NoNoScriptTag_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str1_1_NoNoScriptTag"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
		<!-- following tests: FRAME and IFRAME AND no longdesc -->
		<xp:rule context="//frame | //iframe">
			<xp:pattern match="@longdesc" is-assert="true" priority="1">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str1_1_FrameIFrameNoLongdesc_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str1_1_FrameIFrameNoLongdesc"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
		<!-- following tests: FRAMESET AND no NOFRAMES -->
		<xp:rule context="//frameset[not(./ancestor::frameset)]">
			<xp:pattern match=".//noframes" is-assert="true" priority="1">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str1_1_FRAMESETMissingNOFRAMES_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str1_1_FRAMESETMissingNOFRAMES"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
		<!-- following tests: MAP with A elements with no text equivalent -->
		<xp:rule context="//a">
			<xp:pattern match="@coords[not (./parent::*//text())]" priority="1">
				<xp:report type="error">
					<xp:summary>
						<xp:value-of select="$str1_1_MapWithNoAltText_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str1_1_MapWithNoAltText"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
		<xp:rule>
		<!-- following tests: If you use ASCII art -->
			<xp:pattern priority="1">
				<xp:report type="guideline">
					<xp:summary>
						<xp:value-of select="$str1_1_PossibleAsciiArt_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str1_1_PossibleAsciiArt"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 1.2 -->
	<xp:category name="$Checkpoint1_2" href="$strRedir1_2">
		<xp:rule context="(//img) | (//input)">
			<xp:pattern match="@ismap" priority="1">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str1_2_ImageMapPossibleNoTextLinks_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str1_2_ImageMapPossibleNoTextLinks"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
		<!-- CATEGORY: 1.3 -->
	<xp:category name="$Checkpoint1_3" href="$strRedir1_3">
		<xp:rule context="//img | //input">
		<!-- following tests: for "dynsrc"    -->
			<xp:pattern match="@dynsrc" priority="1">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str1_3_PossibleVideoWithNoAudioTrack_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str1_3_PossibleVideoWithNoAudioTrack"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
		<!-- following tests: with "src" where src ends with a multimedia file type   -->
		<xp:rule context="//img | //input">
			<xp:pattern match="@src[(
				( substring( ., string-length( . ) - 4 ) = '.midi' ) or
				( substring( ., string-length( . ) - 3 ) = '.mid' ) or
				( substring( ., string-length( . ) - 3 ) = '.rmi' ) or
				( substring( ., string-length( . ) - 4 ) = '.mpeg' ) or
				( substring( ., string-length( . ) - 3 ) = '.mpg' ) or
				( substring( ., string-length( . ) - 3 ) = '.mpv' ) or
				( substring( ., string-length( . ) - 3 ) = '.mp2' ) or
				( substring( ., string-length( . ) - 3 ) = '.mpa' ) or
				( substring( ., string-length( . ) - 3 ) = '.mpe' ) or
				( substring( ., string-length( . ) - 3 ) = '.m1v' ) or
				( substring( ., string-length( . ) - 4 ) = '.mpv2' ) or
				( substring( ., string-length( . ) - 3 ) = '.mp3' ) or
				( substring( ., string-length( . ) - 3 ) = '.mp2v' ) or
				( substring( ., string-length( . ) - 3 ) = '.m3u' ) or
				( substring( ., string-length( . ) - 3 ) = '.asf' ) or
				( substring( ., string-length( . ) - 3 ) = '.asx' ) or
				( substring( ., string-length( . ) - 3 ) = '.avi' ) or
				( substring( ., string-length( . ) - 3 ) = '.wav' ) or
				( substring( ., string-length( . ) - 3 ) = '.wax' ) or
				( substring( ., string-length( . ) - 3 ) = '.wma' ) or
				( substring( ., string-length( . ) - 2 ) = '.wm' ) or
				( substring( ., string-length( . ) - 3 ) = '.wvx' ) or
				( substring( ., string-length( . ) - 2 ) = '.qt' ) or
				( substring( ., string-length( . ) - 3 ) = '.mov' ) or
				( substring( ., string-length( . ) - 3 ) = '.aif' ) or
				( substring( ., string-length( . ) - 4 ) = '.aifc' ) or
				( substring( ., string-length( . ) - 4 ) = '.aiff' ) or
				( substring( ., string-length( . ) - 2 ) = '.au' ) or
				( substring( ., string-length( . ) - 3 ) = '.snd' ) or
				( substring( ., string-length( . ) - 3 ) = '.ivf' ) or
				( substring( ., string-length( . ) - 3 ) = '.dat' ) or
				( substring( ., string-length( . ) - 3 ) = '.ram' ) or
				( substring( ., string-length( . ) - 2 ) = '.ra' ) or
				( substring( ., string-length( . ) - 3 ) = '.mod' ) or
				( substring( ., string-length( . ) - 4 ) = '.ulaw' ) or
				( substring( ., string-length( . ) - 3 ) = '.voc' )
				)]" priority="1">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str1_3_PossibleVideoWithNoAudioTrack_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str1_3_PossibleVideoWithNoAudioTrack"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
		<xp:rule context="//param">
		<!-- following tests: with Object, param where value equals multimedia file type   -->
			<xp:pattern match="@value[(
				( substring( ., string-length( . ) - 4 ) = '.midi' ) or
				( substring( ., string-length( . ) - 3 ) = '.mid' ) or
				( substring( ., string-length( . ) - 3 ) = '.rmi' ) or
				( substring( ., string-length( . ) - 4 ) = '.mpeg' ) or
				( substring( ., string-length( . ) - 3 ) = '.mpg' ) or
				( substring( ., string-length( . ) - 3 ) = '.mpv' ) or
				( substring( ., string-length( . ) - 3 ) = '.mp2' ) or
				( substring( ., string-length( . ) - 3 ) = '.mpa' ) or
				( substring( ., string-length( . ) - 3 ) = '.mpe' ) or
				( substring( ., string-length( . ) - 3 ) = '.m1v' ) or
				( substring( ., string-length( . ) - 4 ) = '.mpv2' ) or
				( substring( ., string-length( . ) - 3 ) = '.mp3' ) or
				( substring( ., string-length( . ) - 3 ) = '.mp2v' ) or
				( substring( ., string-length( . ) - 3 ) = '.m3u' ) or
				( substring( ., string-length( . ) - 3 ) = '.asf' ) or
				( substring( ., string-length( . ) - 3 ) = '.asx' ) or
				( substring( ., string-length( . ) - 3 ) = '.avi' ) or
				( substring( ., string-length( . ) - 3 ) = '.wav' ) or
				( substring( ., string-length( . ) - 3 ) = '.wax' ) or
				( substring( ., string-length( . ) - 3 ) = '.wma' ) or
				( substring( ., string-length( . ) - 2 ) = '.wm' ) or
				( substring( ., string-length( . ) - 3 ) = '.wvx' ) or
				( substring( ., string-length( . ) - 2 ) = '.qt' ) or
				( substring( ., string-length( . ) - 3 ) = '.mov' ) or
				( substring( ., string-length( . ) - 3 ) = '.aif' ) or
				( substring( ., string-length( . ) - 4 ) = '.aifc' ) or
				( substring( ., string-length( . ) - 4 ) = '.aiff' ) or
				( substring( ., string-length( . ) - 2 ) = '.au' ) or
				( substring( ., string-length( . ) - 3 ) = '.snd' ) or
				( substring( ., string-length( . ) - 3 ) = '.ivf' ) or
				( substring( ., string-length( . ) - 3 ) = '.dat' ) or
				( substring( ., string-length( . ) - 3 ) = '.ram' ) or
				( substring( ., string-length( . ) - 2 ) = '.ra' ) or
				( substring( ., string-length( . ) - 3 ) = '.mod' ) or
				( substring( ., string-length( . ) - 4 ) = '.ulaw' ) or
				( substring( ., string-length( . ) - 3 ) = '.voc' )
				)]" priority="1">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str1_3_PossibleVideoWithNoAudioTrack_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str1_3_PossibleVideoWithNoAudioTrack"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 1.4 -->
	<xp:category name="$Checkpoint1_4" href="$strRedir1_4">
		<xp:rule>
			<xp:pattern priority="1">
				<xp:report type="guideline">
					<xp:summary>
						<xp:value-of select="$str1_4_TimeBasedMultiMedia_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str1_4_TimeBasedMultiMedia"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>	
	<!-- CATEGORY: 2.1 -->
	<xp:category name="$Checkpoint2_1" href="$strRedir2_1">
		<xp:rule>
			<xp:pattern priority="1">
				<xp:report type="guideline">
				<xp:summary>
						<xp:value-of select="$str2_1_ColorCoding_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str2_1_ColorCoding"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>	
	<!-- CATEGORY: 2.2 -->
	<xp:category name="$Checkpoint2_2" href="$strRedir2_2">
		<xp:rule>
			<xp:pattern priority="2">
				<xp:report type="guideline">
				<xp:summary>
						<xp:value-of select="$str2_2_ColorContrast_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str2_2_ColorContrast"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 3.1 -->
	<xp:category name="$Checkpoint3_1" href="$strRedir3_1">
		<xp:rule>
			<xp:pattern priority="2">
				<xp:report type="guideline">
					<xp:summary>
						<xp:value-of select="$str3_1_MarkupNotImages_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str3_1_MarkupNotImages"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 3.2 -->
	<xp:category name="$Checkpoint3_2" href="$strRedir3_2">
		<xp:rule>
			<xp:pattern priority="2">
				<xp:report type="guideline">
				<xp:summary>
						<xp:value-of select="$str3_2_MissingDOCTYPE_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str3_2_MissingDOCTYPE"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 3.3 -->
	<xp:category name="$Checkpoint3_3" href="$strRedir3_3">
		<xp:rule>
			<xp:pattern priority="2">
				<xp:report type="guideline">
				<xp:summary>
						<xp:value-of select="$str3_3_StyleSheetsforLayout_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str3_3_StyleSheetsforLayout"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 3.4 -->
	<xp:category name="$Checkpoint3_4" href="$strRedir3_4">
		<xp:rule>
			<xp:pattern priority="2">
				<xp:report type="guideline">
					<xp:summary>
						<xp:value-of select="$str3_4_AbsoluteValues_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str3_4_AbsoluteValues"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 3.5 -->
	<xp:category name="$Checkpoint3_5"  href="$strRedir3_5">
		<xp:rule context="//h1">
			<xp:pattern match="//h2" is-assert="true" priority="2">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str3_5_HeadersForStructure_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str3_5_HeadersForStructure"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
			<xp:rule context="//h2">
			<xp:pattern match=" //h1 | //h3 " is-assert="true" priority="2">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str3_5_HeadersForStructure_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str3_5_HeadersForStructure"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
			<xp:rule context="//h3">
			<xp:pattern match=" //h2 | //h4 " is-assert="true" priority="2">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str3_5_HeadersForStructure_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str3_5_HeadersForStructure"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
			<xp:rule context="//h4">
			<xp:pattern match=" //h3 | //h5 " is-assert="true" priority="2">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str3_5_HeadersForStructure_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str3_5_HeadersForStructure"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
			<xp:rule context="//h5">
			<xp:pattern match=" //h4 | //h6" is-assert="true" priority="2">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str3_5_HeadersForStructure_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str3_5_HeadersForStructure"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
			<xp:rule context="//h6">
			<xp:pattern match=" //h5" is-assert="true" priority="2">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str3_5_HeadersForStructure_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str3_5_HeadersForStructure"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 3.6 -->	
	<xp:category name="$Checkpoint3_6" href="$strRedir3_6">
		<!--checks for li with ol ul dir-->
		<xp:rule context="//ol | //ul | //dir">
			<xp:pattern match=".//li" is-assert="true" priority="2">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str3_6_NoListItemsWithOLULDIR_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str3_6_NoListItemsWithOLULDIR"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
		<!--checks for dd and dt with dl-->
		<xp:rule context="//dl ">
			<xp:pattern match=".//dd | .//dt" is-assert="true" priority="2">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str3_6_NoDefinedTermDefinitionWithDL_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str3_6_NoDefinedTermDefinitionWithDL"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 3.7 -->
	<!-- following tests for use of <Q> and <BLOCKQUOTE>-->
	<xp:category name="$Checkpoint3_7" href="$strRedir3_7">
		<xp:rule context="//html">
			<xp:pattern match=".//q | .//blockquote" priority="2">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str3_7_QuoteBlockquote_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str3_7_QuoteBlockquote"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 4.1 -->
	<xp:category name="$Checkpoint4_1" href="$strRedir4_1">
		<xp:rule>
			<xp:pattern priority="1">
				<xp:report type="guideline">
				<xp:summary>
						<xp:value-of select="$str4_1_LanguageChanges_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str4_1_LanguageChanges"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 5.1 -->
	<xp:category name="$Checkpoint5_1" href="$strRedir5_1">
		<xp:rule context="//table">
			<xp:pattern match=".//th" is-assert="true" priority="1">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str5_1_TableNoTH_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str5_1_TableNoTH"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 5.2 -->
	<xp:category name="$Checkpoint5_2" href="$strRedir5_2">
		<xp:rule context="//table" >
			<!-- following tests: TABLE with or without TH AND without THEAD, TBODY, TFOOT, COL, COLGROUP, and "axis", "scope" and "headers" attributes.-->
			<xp:pattern match=".//thead  | .//tfoot | .//tbody | .//col | .//colgroup | .//th[@scope |@axis |@headers]" is-assert="true" priority="1">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str5_2_TableNoTHeadTFootTBodyColColgroupAxisScopeHeaders_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str5_2_TableNoTHeadTFootTBodyColColgroupAxisScopeHeaders"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 5.3 -->
	<xp:category name="$Checkpoint5_3" href="$strRedir5_3">
		<xp:rule context="//table">
			<xp:pattern match="self::table" priority="2">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str5_3_LinearizeLayoutTable_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str5_3_LinearizeLayoutTable"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 5.4 -->
	<xp:category name="$Checkpoint5_4" href="$strRedir5_4">
		<xp:rule context="//table">
			<xp:pattern match="self::table" priority="2">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str5_4_FormatforLayoutTable_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str5_4_FormatforLayoutTable"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 6.1 -->
	<xp:category name="$Checkpoint6_1" href="$strRedir6_1">
		<!-- checks for linked or embedded stylesheets -->
		<xp:rule context="//head">
			<xp:pattern match=" .//link | .//style" priority="1">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str6_1_PossibleStyleSheet_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str6_1_PossibleStyleSheet"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
		<!-- checks for inline styles -->
		<xp:rule context="//span">
			<xp:pattern match=" @style " priority="1">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str6_1_PossibleStyleSheet_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str6_1_PossibleStyleSheet"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 6.2 -->
	<xp:category name="$Checkpoint6_2" href="$strRedir6_2">
		<xp:rule>
			<xp:pattern priority="1">
				<xp:report type="guideline">
				<xp:summary>
						<xp:value-of select="$str6_2_DynamicContentSynch_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str6_2_DynamicContentSynch"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 6.3 -->
	<xp:category name="$Checkpoint6_3" href="$strRedir6_3">
		<xp:rule context="//html">
		<xp:pattern match=".//script[not(./ancestor::script)] | .//embed[not(./ancestor::object)] | .//object[not(./ancestor::object | script | applet)] | .//applet[not(./ancestor::applet | object | script)] " priority="1">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str6_3_PossibleProgrammaticObjects_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str6_3_PossibleProgrammaticObjects"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 6.4 -->
	<xp:category name="$Checkpoint6_4" href="$strRedir6_4">
		<xp:rule context="(//script) | (//object) | (//embed) | (//applet) ">
			<xp:pattern match="@onchange | @onclick | @ondblclick | @onload | @onmousedown | @onmousemove | @onmouseout | @onmouseover | @onmouseup | @onreset | onsubmit | @onrunload " priority="2">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str6_4_EventHandlers_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str6_4_EventHandlers"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 6.5 -->
	<xp:category name="$Checkpoint6_5" href="$strRedir6_5">
		<xp:rule>
			<xp:pattern priority="2">
				<xp:report type="guideline">
				<xp:summary>
						<xp:value-of select="$str6_5_DynamicContent_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str6_5_DynamicContent"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 7.1 -->
	<xp:category name="$Checkpoint7_1" href="$strRedir7_1">
		<xp:rule>
			<xp:pattern priority="1">
				<xp:report type="guideline">
				<xp:summary>
						<xp:value-of select="$str7_1_ScreenFlicker_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str7_1_ScreenFlicker"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 7.2 -->
	<xp:category name="$Checkpoint7_2" href="$strRedir7_2">
		<xp:rule context="//html">
			<xp:pattern match=".//blink" priority="1">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str7_2_Blink_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str7_2_Blink"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 7.3 -->
	<xp:category name="$Checkpoint7_3" href="$strRedir7_3">
		<xp:rule context="//script | //applet | //marquee">
			<xp:pattern match="self::script | self::applet | self::marquee" priority="2">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str7_3_MovingContent_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str7_3_MovingContent"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 7.4 -->
	<xp:category name="$Checkpoint7_4" href="$strRedir7_4">
		<xp:rule>
			<xp:pattern priority="2">
				<xp:report type="guideline">
				<xp:summary>
						<xp:value-of select="$str7_4_AutoRefresh_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str7_4_AutoRefresh"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 7.5 -->
	<xp:category name="$Checkpoint7_5" href="$strRedir7_5">
		<xp:rule>
			<xp:pattern priority="2">
				<xp:report type="guideline">
				<xp:summary>
						<xp:value-of select="$str7_5_ReDirects_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str7_5_ReDirects"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 8.1 -->
	<xp:category name="$Checkpoint8_1" href="$strRedir8_1">
		<!-- following tests:  for SCRIPT with onmouseover, onclick, ondblclick -->
		<xp:rule context="//script">
			<xp:pattern match="./following-sibling::onfocus | ./following-sibling::onblur | ./following-sibling::onselect | ./following-sibling::onmouseover | ./following-sibling::onclick | ./following-sibling::ondblclick" is-assert="true" priority="1">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str8_1_PossibleProgrammaticElements_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str8_1_PossibleProgrammaticElements"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
		<!-- following tests:  for APPLETS and OBJECT -->
		<xp:rule context="//applet | //object">
			<xp:pattern match="self::applet | self::object" priority="1">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str8_1_PossibleProgrammaticElements_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str8_1_PossibleProgrammaticElements"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 9.1 -->
	<xp:category name="$Checkpoint9_1" href="$strRedir9_1">
		<xp:rule context="//img | //input">
			<xp:pattern match="@ismap" priority="1">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str9_1_ServerSideImageMap_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str9_1_ServerSideImageMap"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 9.2 -->
	<xp:category name="$Checkpoint9_2" href="$strRedir9_2">
		<xp:rule context="//script | //applet | //embed">
			<xp:pattern match="self::script | self::applet | self::embed" priority="2">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str9_2_ElementWithUI_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str9_2_ElementWithUI"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 9.3 -->
	<xp:category name="$Checkpoint9_3" href="$strRedir9_3">
		<xp:rule context=" (//a) | (//button) | (//select) | (//frameset) | (//form) | (//area) | (//input) ">
			<xp:pattern match="@onchange | @onclick | @ondblclick | @onload | @onmousedown | @onmousemove | @onmouseout | @onmouseover | @onmouseup | @onreset | onsubmit | @onrunload " priority="2">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str9_3_DeviceDependentEventHandler_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str9_3_DeviceDependentEventHandler"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 10.1 -->
	<xp:category name="$Checkpoint10_1" href="$strRedir10_1">
		<xp:rule>
			<xp:pattern priority="2">
				<xp:report type="guideline">
				<xp:summary>
						<xp:value-of select="$str10_1_PopUps_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str10_1_PopUps"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 10.2 -->
	<xp:category name="$Checkpoint10_2" href="$strRedir10_2">
		<xp:rule context="//form">
			<xp:pattern match=".//label" is-assert="true" priority="2">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str10_2_LabelWithFormControl_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str10_2_LabelWithFormControl"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
		<xp:rule context="//label">
			<xp:pattern match="@for" is-assert="true" priority="2">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str10_2_LabelWithFormControl_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str10_2_LabelWithFormControl"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 11.1 -->
	<xp:category name="$Checkpoint11_1" href="$strRedir11_1">
		<xp:rule>
			<xp:pattern priority="2">
				<xp:report type="guideline">
				<xp:summary>
						<xp:value-of select="$str11_1_LatestW3CTechnologies_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str11_1_LatestW3CTechnologies"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 11.2 -->
	<xp:category name="$Checkpoint11_2" href="$strRedir11_2">
		<xp:rule context="//html">
			<xp:pattern match="//applet | //font | //basefont | //center |  //isindex | //dir | //menu |  //s | //strike | //u |  //xmp | //listing | //plaintext" priority="2">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str11_2_DeprecatedElement_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str11_2_DeprecatedElement"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 11.4 -->
	<xp:category name="$Checkpoint11_4" href="$strRedir11_4">
		<xp:rule>
			<xp:pattern priority="1">
				<xp:report type="guideline">
				<xp:summary>
						<xp:value-of select="$str11_4_AlternativeAccessiblePage_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str11_4_AlternativeAccessiblePage"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 12.1 -->
	<xp:category name="$Checkpoint12_1" href="$strRedir12_1">
		<xp:rule context="//frame | //frameset | //iframe">
		<!-- Tests for Frame, Frameset, iframe with no title attribute -->
			<xp:pattern match="@title" is-assert="true" priority="1">
				<xp:report type="error">
					<xp:summary>
						<xp:value-of select="$str12_1_NoTitleAttrib_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str12_1_NoTitleAttrib"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
			<!-- Tests for empty title attribute in frames, frameset, iframe, noframes -->
			<xp:pattern match="@title[string-length( . ) = 0] " priority="1">
				<xp:report type="error">
					<xp:summary>
						<xp:value-of select="$str12_1_EmptyTitleAttrib_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str12_1_EmptyTitleAttrib"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
		<!-- Tests for noframes with no title attribute-->
		<xp:rule context="//noframes/a">
			<xp:pattern match="@title" is-assert="true " priority="1">
				<xp:report type="error">
					<xp:summary>
						<xp:value-of select="$str12_1_NoTitleAttrib_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str12_1_NoTitleAttrib"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
			<!--Tests for noframes with empty title attribute-->
			<xp:pattern match="@title[string-length( . ) = 0] " priority="1">
				<xp:report type="error">
					<xp:summary>
						<xp:value-of select="$str12_1_EmptyTitleAttrib_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str12_1_EmptyTitleAttrib"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 12.2 -->
	<xp:category name="$Checkpoint12_2" href="$strRedir12_2">
		<xp:rule context="//noframes">
			<xp:pattern match=".//a[@href]" is-assert="true" priority="2">
				<xp:report type="error">
					<xp:summary>
						<xp:value-of select="$str12_2_NoframesWithoutHREF_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str12_2_NoframesWithoutHREF"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 12.3 -->
	<xp:category name="$Checkpoint12_3" href="$strRedir12_3">
		<!--checks for form without fieldset -->
		<xp:rule context="//form ">
			<xp:pattern match=".//fieldset " is-assert="true" priority="2">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str12_3_FormNoFieldset_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str12_3_FormNoFieldset"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
		<!--checks for form with fieldset and no legend -->
		<xp:rule context="//form[.//fieldset]">
			<xp:pattern match=".//legend " is-assert="true" priority="2">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str12_3_FormAndFieldsetNoLegend_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str12_3_FormAndFieldsetNoLegend"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
		<!-- checks for Select with no Optgroup -->
		<xp:rule context="//select">
			<xp:pattern match=".//optgroup" is-assert="true" priority="2">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str12_3_SelectOptionandNoOptgroup_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str12_3_SelectOptionandNoOptgroup"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
		<!-- checks for table with no caption-->
		<xp:rule context="//table">
			<xp:pattern match=".//caption" is-assert="true" priority="2">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str12_3_TableandNoCaption_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str12_3_TableandNoCaption"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
		<!-- checks for LI with no OL, UL, or DL -->
		<xp:rule context="//li[1] | //dd[1] | //dt[1]">
			<xp:pattern match="//ol/li | //ul/li  | //dd/dl | //dd/dt | //dir/li " is-assert="true" priority="2">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str12_3_ListNoULOLDL_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str12_3_ListNoULOLDL"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 12.4 -->
	<xp:category name="$Checkpoint12_4" href="$strRedir12_4">
		<xp:rule context="//form | //label">
			<!-- checks for form with no label and no for attrib-->
			<xp:pattern match=".//label | @for" is-assert= "true" priority="2">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str12_4_FormNoLabelNoFor_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str12_4_FormNoLabelNoFor"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 13.1 -->
	<xp:category name="$Checkpoint13_1" href="$strRedir13_1">
		<xp:rule context="//a">
			<xp:pattern match="(self::a[contains (., 'ClickHere')]) | (self::a[contains (., 'GoTo')]) | (self::a[contains (., 'Go')]) " priority="2">
				<xp:report type="error">
					<xp:summary>
						<xp:value-of select="$str13_1_ClickHereLinkTarget_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str13_1_ClickHereLinkTarget"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 13.2 -->
	<xp:category name="$Checkpoint13_2" href="$strRedir13_2">
		<xp:rule>
			<xp:pattern priority="2">
				<xp:report type="guideline">
				<xp:summary>
						<xp:value-of select="$str13_2_SemanticInformationOrientation_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str13_2_SemanticInformationOrientation"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 13.3 -->
	<xp:category name="$Checkpoint13_3" href="$strRedir13_3">
		<xp:rule>
			<xp:pattern priority="2">
				<xp:report type="guideline">
				<xp:summary>
						<xp:value-of select="$str13_3_ProvideLayoutInformation_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str13_3_ProvideLayoutInformation"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 13.4 -->
	<xp:category name="$Checkpoint13_4" href="$strRedir13_4">
		<xp:rule>
			<xp:pattern priority="2">
				<xp:report type="guideline">
				<xp:summary>
						<xp:value-of select="$str13_4_ConsistentNavigation_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str13_4_ConsistentNavigation"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 14.1 -->
	<xp:category name="$Checkpoint14_1" href="$strRedir14_1">
		<xp:rule>
			<xp:pattern priority="1">
				<xp:report type="guideline">
				<xp:summary>
						<xp:value-of select="$str14_1_ClearLanguage_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str14_1_ClearLanguage"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 1194_22_(l) -->
	<xp:category name="$Access_Board_Part_1194_22(l)">
		<xp:rule context=".//script | .//object | .//embed | .//applet">
			<xp:pattern match="self::script | self::object | self::embed | self::applet" priority="4">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str1194_22_(l)_AssistiveDeviceReadableScriptInfo_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str1194_22_(l)_AssistiveDeviceReadableScriptInfo"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 1194_22_(m) -->
	<xp:category name="$Access_Board_Part_1194_22(m)">
		<xp:rule context=".//script | .//object | .//embed | .//applet">
			<xp:pattern match="self::script | self::object | self::embed | self::applet" priority="4">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str1194_22_(m)_ClientSideAppletPlugInOrAppRequired_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str1194_22_(m)_ClientSideAppletPlugInOrAppRequired"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 1194_22_(n) -->
	<xp:category name="$Access_Board_Part_1194_22(n)">
		<xp:rule context=".//form | .//legend | .//fieldset">
			<xp:pattern match="self::form | self::legend | self::fieldset" priority="4">
				<xp:report type="warning">
					<xp:summary>
						<xp:value-of select="$str1194_22_(n)_OnlineElectronicForms_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str1194_22_(n)_OnlineElectronicForms"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 1194_22_(o) -->
	<xp:category name="$Access_Board_Part_1194_22(o)">
		<xp:rule>
			<xp:pattern priority="4">
				<xp:report type="guideline">
				<xp:summary>
						<xp:value-of select="$str1194_22_(o)_SkipRepetitiveLinks_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str1194_22_(o)_SkipRepetitiveLinks"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
	<!-- CATEGORY: 1194_22_(p) -->
	<xp:category name="$Access_Board_Part_1194_22(p)">
		<xp:rule>
			<xp:pattern priority="4">
				<xp:report type="guideline">
				<xp:summary>
						<xp:value-of select="$str1194_22_(p)_TimeBasedResponseRequired_Summary"/>
					</xp:summary>
					<xp:message>
						<xp:value-of select="$str1194_22_(p)_TimeBasedResponseRequired"/>
					</xp:message>
				</xp:report>
			</xp:pattern>
		</xp:rule>
	</xp:category>
</xp:ruleset>