home *** CD-ROM | disk | FTP | other *** search
- <?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" > than 255 characters -->
- <xp:rule context="(//img) | (//noembed) | (//input[@type = 'image']) | (//area)">
- <xp:pattern match="@alt[string-length( . ) > 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[not(@runat)]">
- <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="//h2">
- <xp:pattern match="preceding::h1" 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="preceding::h1 | preceding::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="//h4">
- <xp:pattern match="preceding::h1 | preceding::h2 | preceding::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="//h5">
- <xp:pattern match="preceding::h1 | preceding::h2 | preceding::h3 | preceding::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="//h6">
- <xp:pattern match="preceding::h1 | preceding::h2 | preceding::h3 | preceding::h4 | preceding::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(@runat) and 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[not(@runat)]) | (//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[not(@runat)] | //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[not(@runat)]">
- <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[not(@runat)] | //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[not(@runat)] | //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[not(@runat)] | //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>
- <!-- CATEGORY: none -->
- <xp:category name="">
- <xp:rule context="//html">
- <xp:pattern match=".//webbot" priority="1">
- <xp:report type="webbot">
- <xp:summary>
- <xp:value-of select="$str_WebBotGeneric_Summary"/>
- </xp:summary>
- <xp:message>
- <xp:value-of select="$str_WebBotGeneric"/>
- </xp:message>
- </xp:report>
- </xp:pattern>
- </xp:rule>
- </xp:category>
- </xp:ruleset>