home *** CD-ROM | disk | FTP | other *** search
/ Clickx 75 / Clickx 75.iso / software / expressionweb / expressionwebv3 / ExpressionWeb_en.exe / Setup / WeConen.cab / xweb.Accessibility.WCAG1_0.XML.en < prev    next >
Encoding:
Extensible Markup Language  |  2009-06-09  |  55.1 KB  |  1,468 lines

  1. <?xml version="1.0"?>
  2. <!--
  3.  Web Accessibility Initiative (WAI)/Section 508 Compliance rule set.
  4.  Copyright 2001, Microsoft Corporation, All rights reserved.   
  5.  
  6. Version 11.4526
  7. -->
  8. <xp:ruleset version="1.0" xmlns:xp="http://schemas.microsoft.com/2001/xmlpatterns">
  9.     <!-- INCLUDE SECTION -->
  10.     <xp:include src="WCAG_str.xml"/>
  11.     <!-- CATEGORY: 1.1 -->
  12.     <xp:category name="$Checkpoint1_1" href="$strRedir1_1">
  13.         <xp:rule context="(//img) | (//noembed)">
  14.             <!-- following tests: no "alt" AND no longdesc -->
  15.             <xp:pattern match="@alt | @longdesc" is-assert="true" priority="1">
  16.                 <xp:report type="error">
  17.                     <xp:summary>
  18.                         <xp:value-of select="$str1_1_MissingAltAndLongDesc_Summary"/>
  19.                     </xp:summary>
  20.                     <xp:message>
  21.                         <xp:value-of select="$str1_1_MissingAltAndLongDesc"/>
  22.                     </xp:message>
  23.                 </xp:report>
  24.             </xp:pattern>
  25.         </xp:rule>
  26.         <!-- following tests: with "alt" > than 255 characters  -->
  27.         <xp:rule context="(//img) | (//noembed) | (//input[@type = 'image']) | (//area)">
  28.             <xp:pattern match="@alt[string-length( . ) > 255]" priority="1">
  29.                 <xp:report type="warning">
  30.                     <xp:summary>
  31.                         <xp:value-of select="$str1_1_AttributeTooLong_Summary"/>
  32.                     </xp:summary>
  33.                     <xp:message>
  34.                         <xp:value-of select="$str1_1_AttributeTooLong"/>
  35.                     </xp:message>
  36.                 </xp:report>
  37.             </xp:pattern>        
  38.             <!-- following tests: with "alt" AND alt text ends with a file type of image   -->
  39.             <xp:pattern match="@alt[(
  40.                 ( substring( ., string-length( . ) - 3 ) = '.bmp' ) or
  41.                  ( substring( ., string-length( . ) - 3 ) = '.gif' ) or
  42.                  ( substring( ., string-length( . ) - 3 ) = '.png' ) or
  43.                 ( substring( ., string-length( . ) - 3 ) = '.jpg' ) or
  44.                 ( substring( ., string-length( . ) - 3 ) = '.mix' ) or
  45.                 ( substring( ., string-length( . ) - 3 ) = '.tif' ) or
  46.                 ( substring( ., string-length( . ) - 3 ) = '.pic' ) or
  47.                 ( substring( ., string-length( . ) - 4 ) = '.pict' ) or
  48.                 ( substring( ., string-length( . ) - 4 ) = '.jpeg' ) or
  49.                 ( substring( ., string-length( . ) - 3 ) = '.avi' ) or
  50.                 ( substring( ., string-length( . ) - 3 ) = '.jpe' ) or
  51.                 ( substring( ., string-length( . ) - 3 ) = '.tiff' ) or
  52.                 ( substring( ., string-length( . ) - 3 ) = '.pcx' ) or 
  53.                 ( substring( ., string-length( . ) - 3 ) = '.pcd' ) or 
  54.                 ( substring( ., string-length( . ) - 3 ) = '.asf' ) or 
  55.                 ( substring( ., string-length( . ) - 3 ) = '.asx' ) or 
  56.                 ( substring( ., string-length( . ) - 2 ) = '.wm' ) or 
  57.                 ( substring( ., string-length( . ) - 3 ) = '.wmx' ) or 
  58.                 ( substring( ., string-length( . ) - 3 ) = '.wmp' ) or 
  59.                 ( substring( ., string-length( . ) - 3 ) = '.wma' ) or 
  60.                 ( substring( ., string-length( . ) - 3 ) = '.wax' ) or 
  61.                 ( substring( ., string-length( . ) - 3 ) = '.wmv' ) or 
  62.                 ( substring( ., string-length( . ) - 3 ) = '.wvx' ) or  
  63.                 ( substring( ., string-length( . ) - 3 ) = '.wav' ) or 
  64.                 ( substring( ., string-length( . ) - 4 ) = '.mpeg' ) or 
  65.                 ( substring( ., string-length( . ) - 3 ) = '.mpg' ) or 
  66.                 ( substring( ., string-length( . ) - 3 ) = '.mpe' ) or
  67.                 ( substring( ., string-length( . ) - 3 ) = '.m1v' ) or 
  68.                 ( substring( ., string-length( . ) - 3 ) = '.mp2' ) or 
  69.                 ( substring( ., string-length( . ) - 4 ) = '.mp2v' ) or 
  70.                 ( substring( ., string-length( . ) - 3 ) = '.mpa' ) or 
  71.                 ( substring( ., string-length( . ) - 3 ) = '.mp3' ) or 
  72.                 ( substring( ., string-length( . ) - 3 ) = '.m3u' ) or 
  73.                 ( substring( ., string-length( . ) - 3 ) = '.mid' ) or 
  74.                 ( substring( ., string-length( . ) - 4 ) = '.midi' ) or 
  75.                 ( substring( ., string-length( . ) - 3 ) = '.rmi' ) or 
  76.                 ( substring( ., string-length( . ) - 3 ) = '.ivf' ) or 
  77.                 ( substring( ., string-length( . ) - 3 ) = '.aif' ) or 
  78.                 ( substring( ., string-length( . ) - 3 ) = '.aiff' ) or 
  79.                 ( substring( ., string-length( . ) - 2 ) = '.au' ) or 
  80.                 ( substring( ., string-length( . ) - 3 ) = '.acr' ) or 
  81.                 ( substring( ., string-length( . ) - 3 ) = '.arc' ) or 
  82.                 ( substring( ., string-length( . ) - 3 ) = '.arj' ) or 
  83.                 ( substring( ., string-length( . ) - 3 ) = '.art' ) or 
  84.                 ( substring( ., string-length( . ) - 3 ) = '.asc' ) or 
  85.                 ( substring( ., string-length( . ) - 3 ) = '.avr' ) or 
  86.                 ( substring( ., string-length( . ) - 3 ) = '.avs' ) or 
  87.                 ( substring( ., string-length( . ) - 3 ) = '.bac' ) or 
  88.                 ( substring( ., string-length( . ) - 3 ) = '.bas' ) or 
  89.                 ( substring( ., string-length( . ) - 3 ) = '.bbm' ) or 
  90.                 ( substring( ., string-length( . ) - 3 ) = '.bck' ) or 
  91.                 ( substring( ., string-length( . ) - 3 ) = '.big' ) or 
  92.                 ( substring( ., string-length( . ) - 4 ) = '.big5' ) or 
  93.                 ( substring( ., string-length( . ) - 3 ) = '.bmf' ) or 
  94.                 ( substring( ., string-length( . ) - 3 ) = '.boo' ) or 
  95.                 ( substring( ., string-length( . ) - 3 ) = '.byu' ) or 
  96.                 ( substring( ., string-length( . ) - 3 ) = '.cgm' ) or 
  97.                 ( substring( ., string-length( . ) - 3 ) = '.clp' ) or 
  98.                 ( substring( ., string-length( . ) - 3 ) = '.cmf' ) or 
  99.                 ( substring( ., string-length( . ) - 3 ) = '.com' ) or 
  100.                 ( substring( ., string-length( . ) - 3 ) = '.cpt' ) or 
  101.                 ( substring( ., string-length( . ) - 3 ) = '.cur' ) or 
  102.                 ( substring( ., string-length( . ) - 3 ) = '.cut' ) or 
  103.                 ( substring( ., string-length( . ) - 3 ) = '.dat' ) or
  104.                 ( substring( ., string-length( . ) - 3 ) = '.ram' ) or 
  105.                 ( substring( ., string-length( . ) - 2 ) = '.ra' ) or 
  106.                 ( substring( ., string-length( . ) - 3 ) = '.tar' ) or 
  107.                 ( substring( ., string-length( . ) - 1 ) = '.z' ) or 
  108.                 ( substring( ., string-length( . ) - 2 ) = '.gz' ) or
  109.                 ( substring( ., string-length( . ) - 3 ) = '.tgz' ) or 
  110.                 ( substring( ., string-length( . ) - 3 ) = '.zip' ) or 
  111.                 ( substring( ., string-length( . ) - 3 ) = '.rft'  ) or 
  112.                 ( substring( ., string-length( . ) - 2 ) = '.ai' ) or 
  113.                 ( substring( ., string-length( . ) - 3 ) = '.eps' ) or 
  114.                 ( substring( ., string-length( . ) - 2 ) = '.ps' ) or 
  115.                  ( substring( ., string-length( . ) - 3 ) = '.exe' ) or 
  116.                 ( substring( ., string-length( . ) - 3 ) = '.bin' ) or 
  117.                 ( substring( ., string-length( . ) - 3 ) = '.sit' ) or 
  118.                 ( substring( ., string-length( . ) - 3 ) = '.hqz' ) or 
  119.                 ( substring( ., string-length( . ) - 3 ) = '.wav' ) or 
  120.                 ( substring( ., string-length( . ) - 3 ) = '.snd' ) or 
  121.                 ( substring( ., string-length( . ) - 3 ) = '.xbm' ) or 
  122.                 ( substring( ., string-length( . ) - 2 ) = '.zw' ) or 
  123.                 ( substring( ., string-length( . ) - 3 ) = '.yuv' ) or 
  124.                 ( substring( ., string-length( . ) - 3 ) = '.xwd' ) or 
  125.                 ( substring( ., string-length( . ) - 3 ) = '.xpm' ) or 
  126.                 ( substring( ., string-length( . ) - 2 ) = '.xm' ) or 
  127.                 ( substring( ., string-length( . ) - 3 ) = '.sbm' ) or 
  128.                 ( substring( ., string-length( . ) - 3 ) = '.wmf' ) or 
  129.                 ( substring( ., string-length( . ) - 3 ) = '.voc' ) or 
  130.                 ( substring( ., string-length( . ) - 3 ) = '.vis' ) or 
  131.                 ( substring( ., string-length( . ) - 3 ) = '.vik' ) or 
  132.                 ( substring( ., string-length( . ) - 3 ) = '.uud' ) or 
  133.                 ( substring( ., string-length( . ) - 3 ) = '.uue' ) or 
  134.                 ( substring( ., string-length( . ) - 3 ) = '.utl' ) or 
  135.                 ( substring( ., string-length( . ) - 2 ) = '.ul' ) or 
  136.                 ( substring( ., string-length( . ) - 3 ) = '.tga' ) or 
  137.                 ( substring( ., string-length( . ) - 3 ) = '.stm' ) or 
  138.                 ( substring( ., string-length( . ) - 3 ) = '.shg' ) or 
  139.                 ( substring( ., string-length( . ) - 3 ) = '.sgi' ) or 
  140.                 ( substring( ., string-length( . ) - 2 ) = '.sf' ) or 
  141.                 ( substring( ., string-length( . ) - 3 ) = '.sea' ) or 
  142.                 ( substring( ., string-length( . ) - 3 ) = '.scx' ) or 
  143.                 ( substring( ., string-length( . ) - 3 ) = '.s3m' ) or 
  144.                 ( substring( ., string-length( . ) - 3 ) = '.rol' ) or 
  145.                 ( substring( ., string-length( . ) - 3 ) = '.rle' ) or 
  146.                 ( substring( ., string-length( . ) - 3 ) = '.rmi' ) or 
  147.                 ( substring( ., string-length( . ) - 3 ) = '.rgb' ) or 
  148.                 ( substring( ., string-length( . ) - 3 ) = '.raw' ) or 
  149.                 ( substring( ., string-length( . ) - 3 ) = '.rax' ) or 
  150.                 ( substring( ., string-length( . ) - 3 ) = '.ras' ) or 
  151.                 ( substring( ., string-length( . ) - 2 ) = '.ps' ) or 
  152.                 ( substring( ., string-length( . ) - 3 ) = '.ppm' ) or 
  153.                 ( substring( ., string-length( . ) - 3 ) = '.pol' ) or 
  154.                 ( substring( ., string-length( . ) - 3 ) = '.pnt' ) or 
  155.                 ( substring( ., string-length( . ) - 2 ) = '.pm' ) or 
  156.                 ( substring( ., string-length( . ) - 3 ) = '.pgm' ) or 
  157.                 ( substring( ., string-length( . ) - 3 ) = '.pds' ) or 
  158.                 ( substring( ., string-length( . ) - 3 ) = '.pdf' ) or 
  159.                 ( substring( ., string-length( . ) - 3 ) = '.pcx' ) or 
  160.                 ( substring( ., string-length( . ) - 3 ) = '.pct' ) or 
  161.                 ( substring( ., string-length( . ) - 3 ) = '.pcm' ) or 
  162.                 ( substring( ., string-length( . ) - 3 ) = '.pcc' ) or 
  163.                 ( substring( ., string-length( . ) - 3 ) = '.pcd' ) or 
  164.                 ( substring( ., string-length( . ) - 3 ) = '.pbm' ) or 
  165.                 ( substring( ., string-length( . ) - 3 ) = '.omf' ) or 
  166.                 ( substring( ., string-length( . ) - 3 ) = '.off' ) or 
  167.                 ( substring( ., string-length( . ) - 3 ) = '.nst' ) or 
  168.                 ( substring( ., string-length( . ) - 3 ) = '.nff' ) or 
  169.                 ( substring( ., string-length( . ) - 3 ) = '.mtv' ) or 
  170.                 ( substring( ., string-length( . ) - 3 ) = '.mtm' ) or 
  171.                 ( substring( ., string-length( . ) - 3 ) = '.msp' ) or 
  172.                 ( substring( ., string-length( . ) - 3 ) = '.mrb' ) or 
  173.                 ( substring( ., string-length( . ) - 3 ) = '.mps' ) or 
  174.                 ( substring( ., string-length( . ) - 3 ) = '.mpg' ) or 
  175.                 ( substring( ., string-length( . ) - 3 ) = '.mpa' ) or 
  176.                 ( substring( ., string-length( . ) - 3 ) = '.mp2' ) or 
  177.                 ( substring( ., string-length( . ) - 3 ) = '.mod' ) or 
  178.                 ( substring( ., string-length( . ) - 3 ) = '.mki' ) or 
  179.                 ( substring( ., string-length( . ) - 3 ) = '.mid' ) or 
  180.                 ( substring( ., string-length( . ) - 3 ) = '.mhg' ) or 
  181.                 ( substring( ., string-length( . ) - 3 ) = '.mgf' ) or 
  182.                 ( substring( ., string-length( . ) - 3 ) = '.mat' ) or 
  183.                 ( substring( ., string-length( . ) - 3 ) = '.map' ) or 
  184.                 ( substring( ., string-length( . ) - 3 ) = '.mag' ) or 
  185.                 ( substring( ., string-length( . ) - 3 ) = '.mac' ) or 
  186.                 ( substring( ., string-length( . ) - 3 ) = '.lm8' ) or 
  187.                 ( substring( ., string-length( . ) - 3 ) = '.lbm' ) or 
  188.                 ( substring( ., string-length( . ) - 3 ) = '.jpc' ) or 
  189.                 ( substring( ., string-length( . ) - 3 ) = '.jis' ) or 
  190.                 ( substring( ., string-length( . ) - 3 ) = '.jfi' ) or 
  191.                 ( substring( ., string-length( . ) - 4 ) = '.jbig' ) or 
  192.                 ( substring( ., string-length( . ) - 3 ) = '.jas' ) or 
  193.                 ( substring( ., string-length( . ) - 3 ) = '.ish' ) or 
  194.                 ( substring( ., string-length( . ) - 3 ) = '.iff' ) or 
  195.                 ( substring( ., string-length( . ) - 3 ) = '.ief' ) or 
  196.                 ( substring( ., string-length( . ) - 3 ) = '.ico' ) or 
  197.                 ( substring( ., string-length( . ) - 3 ) = '.ibm' ) or 
  198.                 ( substring( ., string-length( . ) - 2 ) = '.hz' ) or 
  199.                 ( substring( ., string-length( . ) - 3 ) = '.hrz' ) or 
  200.                 ( substring( ., string-length( . ) - 3 ) = '.hlp' ) or 
  201.                 ( substring( ., string-length( . ) - 3 ) = '.hlb' ) or 
  202.                 ( substring( ., string-length( . ) - 3 ) = '.ham' ) or 
  203.                 ( substring( ., string-length( . ) - 3 ) = '.gry' ) or 
  204.                 ( substring( ., string-length( . ) - 2 ) = '.gl' ) or 
  205.                 ( substring( ., string-length( . ) - 2 ) = '.gb' ) or 
  206.                 ( substring( ., string-length( . ) - 3 ) = '.gds' ) or 
  207.                 ( substring( ., string-length( . ) - 4 ) = '.fssd' ) or 
  208.                 ( substring( ., string-length( . ) - 3 ) = '.flx' ) or 
  209.                 ( substring( ., string-length( . ) - 3 ) = '.fli' ) or 
  210.                 ( substring( ., string-length( . ) - 3 ) = '.fic' ) or 
  211.                 ( substring( ., string-length( . ) - 3 ) = '.fit' ) or 
  212.                 ( substring( ., string-length( . ) - 4 ) = '.fits' ) or 
  213.                 ( substring( ., string-length( . ) - 3 ) = '.fac' ) or 
  214.                 ( substring( ., string-length( . ) - 1 ) = '.f' ) or 
  215.                 ( substring( ., string-length( . ) - 3 ) = '.euc' ) or 
  216.                 ( substring( ., string-length( . ) - 3 ) = '.eps' ) or 
  217.                 ( substring( ., string-length( . ) - 3 ) = '.dxf' ) or 
  218.                 ( substring( ., string-length( . ) - 3 ) = '.dwg' ) or 
  219.                 ( substring( ., string-length( . ) - 3 ) = '.dlg' ) or 
  220.                 ( substring( ., string-length( . ) - 2 ) = '.dl' ) or 
  221.                 ( substring( ., string-length( . ) - 3 ) = '.dib' ) or 
  222.                 ( substring( ., string-length( . ) - 3 ) = '.dcs' ) or 
  223.                 ( substring( ., string-length( . ) - 3 ) = '.dat' ) or 
  224.                 ( substring( ., string-length( . ) - 3 ) = '.cut' ) or 
  225.                 ( substring( ., string-length( . ) - 3 ) = '.cur' ) or 
  226.                 ( substring( ., string-length( . ) - 3 ) = '.cpt' )
  227.             )]" priority="1">
  228.                 <xp:report type="warning">
  229.                     <xp:summary>
  230.                         <xp:value-of select="$str1_1_PossibleImageNameInAlt_Summary"/>
  231.                     </xp:summary>
  232.                     <xp:message>
  233.                         <xp:value-of select="$str1_1_PossibleImageNameInAlt"/>
  234.                     </xp:message>
  235.                 </xp:report>
  236.             </xp:pattern>
  237.             <!-- following tests: with "alt" AND alt="image"; "photo"; or "picture" -->
  238.             <xp:pattern match="@alt[( 
  239.                     ( substring(., 0 ) = 'Image') or 
  240.                     ( substring(., 0 ) = 'Photo') or 
  241.                     ( substring(., 0 ) = 'Picture') or
  242.                     ( substring(., 0 ) = 'image') or 
  243.                     ( substring(., 0 ) = 'photo') or 
  244.                     ( substring(., 0 ) = 'picture')
  245.                 )]" priority="1">
  246.                 <xp:report type="warning">
  247.                     <xp:summary>
  248.                         <xp:value-of select="$str1_1_InvalidDesc_Summary"/>
  249.                     </xp:summary>
  250.                     <xp:message>
  251.                         <xp:value-of select="$str1_1_InvalidDesc"/>
  252.                     </xp:message>
  253.                 </xp:report>
  254.             </xp:pattern>
  255.         </xp:rule>
  256.         <xp:rule context="//area">
  257.             <!-- following tests: no "alt" in AREA -->
  258.             <xp:pattern match="@alt" is-assert="true" priority="1">
  259.                 <xp:report type="error">
  260.                     <xp:summary>
  261.                         <xp:value-of select="$str1_1_MissingAlternativeText_Summary"/>
  262.                     </xp:summary>
  263.                     <xp:message>
  264.                         <xp:value-of select="$str1_1_MissingAlternativeText"/>
  265.                     </xp:message>
  266.                 </xp:report>
  267.             </xp:pattern>
  268.         </xp:rule>
  269.         <xp:rule context="//input[@type = 'image']">
  270.             <!-- following tests: INPUT type = image with no "alt" -->
  271.             <xp:pattern match="@alt" is-assert="true" priority="1">
  272.                 <xp:report type="error">
  273.                     <xp:summary>
  274.                         <xp:value-of select="$str1_1_MissingAlt_Summary"/>
  275.                     </xp:summary>
  276.                     <xp:message>
  277.                         <xp:value-of select="$str1_1_MissingAlt"/>
  278.                     </xp:message>
  279.                 </xp:report>
  280.             </xp:pattern>
  281.         </xp:rule>
  282.         <xp:rule context="(//applet)">
  283.             <!-- following tests: no "alt" AND no TEXT EQUIVALENT in the content of the Applet-->
  284.             <xp:pattern match="@alt |.//text" is-assert="true" priority="1">
  285.                 <xp:report type="error">
  286.                     <xp:summary>
  287.                         <xp:value-of select="$str1_1_AppletMissingText_Summary"/>
  288.                     </xp:summary>
  289.                     <xp:message>
  290.                         <xp:value-of select="$str1_1_AppletMissingText"/>
  291.                     </xp:message>
  292.                 </xp:report>
  293.             </xp:pattern>
  294.             <!-- following tests:     alt-text ends with applet executable extension -->
  295.             <xp:pattern match="@alt[(
  296.                     ( substring( ., string-length( . ) - 5 ) = '.class' ) or
  297.                     ( substring( ., string-length( . ) - 4 ) = '.java' ) or
  298.                     ( substring( ., string-length( . ) - 3 ) = '.jar' ) or
  299.                     ( substring( ., string-length( . ) - 3 ) = '.zip' ) or
  300.                     ( substring( ., string-length( . ) - 3 ) = '.cal' ) or
  301.                     ( substring( ., string-length( . ) - 3 ) = '.clp' ) or
  302.                     ( substring( ., string-length( . ) - 3 ) = '.crd' ) or
  303.                     ( substring( ., string-length( . ) - 3 ) = '.exe' )
  304.                 )]" priority="1">
  305.                 <xp:report type="warning">
  306.                     <xp:summary>
  307.                         <xp:value-of select="$str1_1_AltEndsWithExeExt_Summary"/>
  308.                     </xp:summary>
  309.                     <xp:message>
  310.                         <xp:value-of select="$str1_1_AltEndsWithExeExt"/>
  311.                     </xp:message>
  312.                 </xp:report>
  313.             </xp:pattern>
  314.         </xp:rule>
  315.         <xp:rule context="//object">
  316.             <!-- following tests: Object with image type and NO text element -->
  317.             <xp:pattern match="@type[not (./parent::*//text())]" priority="1">
  318.                 <xp:report type="warning">
  319.                     <xp:summary>
  320.                         <xp:value-of select="$str1_1_ObjectTypeImageMissingTextEquivalent_Summary"/>
  321.                     </xp:summary>
  322.                     <xp:message>
  323.                         <xp:value-of select="$str1_1_ObjectTypeImageMissingTextEquivalent"/>
  324.                     </xp:message>
  325.                 </xp:report>
  326.             </xp:pattern>
  327.             <!-- following tests: with text element AND text is placeholder contains words "goes here" -->
  328.             <xp:pattern match="(self::object[contains (., 'GoesHere')]) | (self::object[contains (., 'Placeholder')]) " priority="1">
  329.                 <xp:report type="warning">
  330.                     <xp:summary>
  331.                         <xp:value-of select="$str1_1_GoesHereObjectText_Summary"/>
  332.                     </xp:summary>
  333.                     <xp:message>
  334.                         <xp:value-of select="$str1_1_GoesHereObjectText"/>
  335.                     </xp:message>
  336.                 </xp:report>
  337.             </xp:pattern>
  338.         </xp:rule>
  339.         <!-- following tests:     no -NOSCRIPT  /NOSCRIPT-, should follow SCRIPT tag -->
  340.         <xp:rule context="//script[not(@runat)]">
  341.             <xp:pattern match="./following-sibling::noscript" is-assert="true" priority="1">
  342.                 <xp:report type="warning">
  343.                     <xp:summary>
  344.                         <xp:value-of select="$str1_1_NoNoScriptTag_Summary"/>
  345.                     </xp:summary>
  346.                     <xp:message>
  347.                         <xp:value-of select="$str1_1_NoNoScriptTag"/>
  348.                     </xp:message>
  349.                 </xp:report>
  350.             </xp:pattern>
  351.         </xp:rule>
  352.         <!-- following tests: FRAME and IFRAME AND no longdesc -->
  353.         <xp:rule context="//frame | //iframe">
  354.             <xp:pattern match="@longdesc" is-assert="true" priority="1">
  355.                 <xp:report type="warning">
  356.                     <xp:summary>
  357.                         <xp:value-of select="$str1_1_FrameIFrameNoLongdesc_Summary"/>
  358.                     </xp:summary>
  359.                     <xp:message>
  360.                         <xp:value-of select="$str1_1_FrameIFrameNoLongdesc"/>
  361.                     </xp:message>
  362.                 </xp:report>
  363.             </xp:pattern>
  364.         </xp:rule>
  365.         <!-- following tests: FRAMESET AND no NOFRAMES -->
  366.         <xp:rule context="//frameset[not(./ancestor::frameset)]">
  367.             <xp:pattern match=".//noframes" is-assert="true" priority="1">
  368.                 <xp:report type="warning">
  369.                     <xp:summary>
  370.                         <xp:value-of select="$str1_1_FRAMESETMissingNOFRAMES_Summary"/>
  371.                     </xp:summary>
  372.                     <xp:message>
  373.                         <xp:value-of select="$str1_1_FRAMESETMissingNOFRAMES"/>
  374.                     </xp:message>
  375.                 </xp:report>
  376.             </xp:pattern>
  377.         </xp:rule>
  378.         <!-- following tests: MAP with A elements with no text equivalent -->
  379.         <xp:rule context="//a">
  380.             <xp:pattern match="@coords[not (./parent::*//text())]" priority="1">
  381.                 <xp:report type="error">
  382.                     <xp:summary>
  383.                         <xp:value-of select="$str1_1_MapWithNoAltText_Summary"/>
  384.                     </xp:summary>
  385.                     <xp:message>
  386.                         <xp:value-of select="$str1_1_MapWithNoAltText"/>
  387.                     </xp:message>
  388.                 </xp:report>
  389.             </xp:pattern>
  390.         </xp:rule>
  391.         <xp:rule>
  392.         <!-- following tests: If you use ASCII art -->
  393.             <xp:pattern priority="1">
  394.                 <xp:report type="guideline">
  395.                     <xp:summary>
  396.                         <xp:value-of select="$str1_1_PossibleAsciiArt_Summary"/>
  397.                     </xp:summary>
  398.                     <xp:message>
  399.                         <xp:value-of select="$str1_1_PossibleAsciiArt"/>
  400.                     </xp:message>
  401.                 </xp:report>
  402.             </xp:pattern>
  403.         </xp:rule>
  404.     </xp:category>
  405.     <!-- CATEGORY: 1.2 -->
  406.     <xp:category name="$Checkpoint1_2" href="$strRedir1_2">
  407.         <xp:rule context="(//img) | (//input)">
  408.             <xp:pattern match="@ismap" priority="1">
  409.                 <xp:report type="warning">
  410.                     <xp:summary>
  411.                         <xp:value-of select="$str1_2_ImageMapPossibleNoTextLinks_Summary"/>
  412.                     </xp:summary>
  413.                     <xp:message>
  414.                         <xp:value-of select="$str1_2_ImageMapPossibleNoTextLinks"/>
  415.                     </xp:message>
  416.                 </xp:report>
  417.             </xp:pattern>
  418.         </xp:rule>
  419.     </xp:category>
  420.         <!-- CATEGORY: 1.3 -->
  421.     <xp:category name="$Checkpoint1_3" href="$strRedir1_3">
  422.         <xp:rule context="//img | //input">
  423.         <!-- following tests: for "dynsrc"    -->
  424.             <xp:pattern match="@dynsrc" priority="1">
  425.                 <xp:report type="warning">
  426.                     <xp:summary>
  427.                         <xp:value-of select="$str1_3_PossibleVideoWithNoAudioTrack_Summary"/>
  428.                     </xp:summary>
  429.                     <xp:message>
  430.                         <xp:value-of select="$str1_3_PossibleVideoWithNoAudioTrack"/>
  431.                     </xp:message>
  432.                 </xp:report>
  433.             </xp:pattern>
  434.         </xp:rule>
  435.         <!-- following tests: with "src" where src ends with a multimedia file type   -->
  436.         <xp:rule context="//img | //input">
  437.             <xp:pattern match="@src[(
  438.                 ( substring( ., string-length( . ) - 4 ) = '.midi' ) or
  439.                 ( substring( ., string-length( . ) - 3 ) = '.mid' ) or
  440.                 ( substring( ., string-length( . ) - 3 ) = '.rmi' ) or
  441.                 ( substring( ., string-length( . ) - 4 ) = '.mpeg' ) or
  442.                 ( substring( ., string-length( . ) - 3 ) = '.mpg' ) or
  443.                 ( substring( ., string-length( . ) - 3 ) = '.mpv' ) or
  444.                 ( substring( ., string-length( . ) - 3 ) = '.mp2' ) or
  445.                 ( substring( ., string-length( . ) - 3 ) = '.mpa' ) or
  446.                 ( substring( ., string-length( . ) - 3 ) = '.mpe' ) or
  447.                 ( substring( ., string-length( . ) - 3 ) = '.m1v' ) or
  448.                 ( substring( ., string-length( . ) - 4 ) = '.mpv2' ) or
  449.                 ( substring( ., string-length( . ) - 3 ) = '.mp3' ) or
  450.                 ( substring( ., string-length( . ) - 3 ) = '.mp2v' ) or
  451.                 ( substring( ., string-length( . ) - 3 ) = '.m3u' ) or
  452.                 ( substring( ., string-length( . ) - 3 ) = '.asf' ) or
  453.                 ( substring( ., string-length( . ) - 3 ) = '.asx' ) or
  454.                 ( substring( ., string-length( . ) - 3 ) = '.avi' ) or
  455.                 ( substring( ., string-length( . ) - 3 ) = '.wav' ) or
  456.                 ( substring( ., string-length( . ) - 3 ) = '.wax' ) or
  457.                 ( substring( ., string-length( . ) - 3 ) = '.wma' ) or
  458.                 ( substring( ., string-length( . ) - 2 ) = '.wm' ) or
  459.                 ( substring( ., string-length( . ) - 3 ) = '.wvx' ) or
  460.                 ( substring( ., string-length( . ) - 2 ) = '.qt' ) or
  461.                 ( substring( ., string-length( . ) - 3 ) = '.mov' ) or
  462.                 ( substring( ., string-length( . ) - 3 ) = '.aif' ) or
  463.                 ( substring( ., string-length( . ) - 4 ) = '.aifc' ) or
  464.                 ( substring( ., string-length( . ) - 4 ) = '.aiff' ) or
  465.                 ( substring( ., string-length( . ) - 2 ) = '.au' ) or
  466.                 ( substring( ., string-length( . ) - 3 ) = '.snd' ) or
  467.                 ( substring( ., string-length( . ) - 3 ) = '.ivf' ) or
  468.                 ( substring( ., string-length( . ) - 3 ) = '.dat' ) or
  469.                 ( substring( ., string-length( . ) - 3 ) = '.ram' ) or
  470.                 ( substring( ., string-length( . ) - 2 ) = '.ra' ) or
  471.                 ( substring( ., string-length( . ) - 3 ) = '.mod' ) or
  472.                 ( substring( ., string-length( . ) - 4 ) = '.ulaw' ) or
  473.                 ( substring( ., string-length( . ) - 3 ) = '.voc' )
  474.                 )]" priority="1">
  475.                 <xp:report type="warning">
  476.                     <xp:summary>
  477.                         <xp:value-of select="$str1_3_PossibleVideoWithNoAudioTrack_Summary"/>
  478.                     </xp:summary>
  479.                     <xp:message>
  480.                         <xp:value-of select="$str1_3_PossibleVideoWithNoAudioTrack"/>
  481.                     </xp:message>
  482.                 </xp:report>
  483.             </xp:pattern>
  484.         </xp:rule>
  485.         <xp:rule context="//param">
  486.         <!-- following tests: with Object, param where value equals multimedia file type   -->
  487.             <xp:pattern match="@value[(
  488.                 ( substring( ., string-length( . ) - 4 ) = '.midi' ) or
  489.                 ( substring( ., string-length( . ) - 3 ) = '.mid' ) or
  490.                 ( substring( ., string-length( . ) - 3 ) = '.rmi' ) or
  491.                 ( substring( ., string-length( . ) - 4 ) = '.mpeg' ) or
  492.                 ( substring( ., string-length( . ) - 3 ) = '.mpg' ) or
  493.                 ( substring( ., string-length( . ) - 3 ) = '.mpv' ) or
  494.                 ( substring( ., string-length( . ) - 3 ) = '.mp2' ) or
  495.                 ( substring( ., string-length( . ) - 3 ) = '.mpa' ) or
  496.                 ( substring( ., string-length( . ) - 3 ) = '.mpe' ) or
  497.                 ( substring( ., string-length( . ) - 3 ) = '.m1v' ) or
  498.                 ( substring( ., string-length( . ) - 4 ) = '.mpv2' ) or
  499.                 ( substring( ., string-length( . ) - 3 ) = '.mp3' ) or
  500.                 ( substring( ., string-length( . ) - 3 ) = '.mp2v' ) or
  501.                 ( substring( ., string-length( . ) - 3 ) = '.m3u' ) or
  502.                 ( substring( ., string-length( . ) - 3 ) = '.asf' ) or
  503.                 ( substring( ., string-length( . ) - 3 ) = '.asx' ) or
  504.                 ( substring( ., string-length( . ) - 3 ) = '.avi' ) or
  505.                 ( substring( ., string-length( . ) - 3 ) = '.wav' ) or
  506.                 ( substring( ., string-length( . ) - 3 ) = '.wax' ) or
  507.                 ( substring( ., string-length( . ) - 3 ) = '.wma' ) or
  508.                 ( substring( ., string-length( . ) - 2 ) = '.wm' ) or
  509.                 ( substring( ., string-length( . ) - 3 ) = '.wvx' ) or
  510.                 ( substring( ., string-length( . ) - 2 ) = '.qt' ) or
  511.                 ( substring( ., string-length( . ) - 3 ) = '.mov' ) or
  512.                 ( substring( ., string-length( . ) - 3 ) = '.aif' ) or
  513.                 ( substring( ., string-length( . ) - 4 ) = '.aifc' ) or
  514.                 ( substring( ., string-length( . ) - 4 ) = '.aiff' ) or
  515.                 ( substring( ., string-length( . ) - 2 ) = '.au' ) or
  516.                 ( substring( ., string-length( . ) - 3 ) = '.snd' ) or
  517.                 ( substring( ., string-length( . ) - 3 ) = '.ivf' ) or
  518.                 ( substring( ., string-length( . ) - 3 ) = '.dat' ) or
  519.                 ( substring( ., string-length( . ) - 3 ) = '.ram' ) or
  520.                 ( substring( ., string-length( . ) - 2 ) = '.ra' ) or
  521.                 ( substring( ., string-length( . ) - 3 ) = '.mod' ) or
  522.                 ( substring( ., string-length( . ) - 4 ) = '.ulaw' ) or
  523.                 ( substring( ., string-length( . ) - 3 ) = '.voc' )
  524.                 )]" priority="1">
  525.                 <xp:report type="warning">
  526.                     <xp:summary>
  527.                         <xp:value-of select="$str1_3_PossibleVideoWithNoAudioTrack_Summary"/>
  528.                     </xp:summary>
  529.                     <xp:message>
  530.                         <xp:value-of select="$str1_3_PossibleVideoWithNoAudioTrack"/>
  531.                     </xp:message>
  532.                 </xp:report>
  533.             </xp:pattern>
  534.         </xp:rule>
  535.     </xp:category>
  536.     <!-- CATEGORY: 1.4 -->
  537.     <xp:category name="$Checkpoint1_4" href="$strRedir1_4">
  538.         <xp:rule>
  539.             <xp:pattern priority="1">
  540.                 <xp:report type="guideline">
  541.                     <xp:summary>
  542.                         <xp:value-of select="$str1_4_TimeBasedMultiMedia_Summary"/>
  543.                     </xp:summary>
  544.                     <xp:message>
  545.                         <xp:value-of select="$str1_4_TimeBasedMultiMedia"/>
  546.                     </xp:message>
  547.                 </xp:report>
  548.             </xp:pattern>
  549.         </xp:rule>
  550.     </xp:category>    
  551.     <!-- CATEGORY: 2.1 -->
  552.     <xp:category name="$Checkpoint2_1" href="$strRedir2_1">
  553.         <xp:rule>
  554.             <xp:pattern priority="1">
  555.                 <xp:report type="guideline">
  556.                 <xp:summary>
  557.                         <xp:value-of select="$str2_1_ColorCoding_Summary"/>
  558.                     </xp:summary>
  559.                     <xp:message>
  560.                         <xp:value-of select="$str2_1_ColorCoding"/>
  561.                     </xp:message>
  562.                 </xp:report>
  563.             </xp:pattern>
  564.         </xp:rule>
  565.     </xp:category>    
  566.     <!-- CATEGORY: 2.2 -->
  567.     <xp:category name="$Checkpoint2_2" href="$strRedir2_2">
  568.         <xp:rule>
  569.             <xp:pattern priority="2">
  570.                 <xp:report type="guideline">
  571.                 <xp:summary>
  572.                         <xp:value-of select="$str2_2_ColorContrast_Summary"/>
  573.                     </xp:summary>
  574.                     <xp:message>
  575.                         <xp:value-of select="$str2_2_ColorContrast"/>
  576.                     </xp:message>
  577.                 </xp:report>
  578.             </xp:pattern>
  579.         </xp:rule>
  580.     </xp:category>
  581.     <!-- CATEGORY: 3.1 -->
  582.     <xp:category name="$Checkpoint3_1" href="$strRedir3_1">
  583.         <xp:rule>
  584.             <xp:pattern priority="2">
  585.                 <xp:report type="guideline">
  586.                     <xp:summary>
  587.                         <xp:value-of select="$str3_1_MarkupNotImages_Summary"/>
  588.                     </xp:summary>
  589.                     <xp:message>
  590.                         <xp:value-of select="$str3_1_MarkupNotImages"/>
  591.                     </xp:message>
  592.                 </xp:report>
  593.             </xp:pattern>
  594.         </xp:rule>
  595.     </xp:category>
  596.     <!-- CATEGORY: 3.2 -->
  597.     <xp:category name="$Checkpoint3_2" href="$strRedir3_2">
  598.         <xp:rule>
  599.             <xp:pattern priority="2">
  600.                 <xp:report type="guideline">
  601.                 <xp:summary>
  602.                         <xp:value-of select="$str3_2_MissingDOCTYPE_Summary"/>
  603.                     </xp:summary>
  604.                     <xp:message>
  605.                         <xp:value-of select="$str3_2_MissingDOCTYPE"/>
  606.                     </xp:message>
  607.                 </xp:report>
  608.             </xp:pattern>
  609.         </xp:rule>
  610.     </xp:category>
  611.     <!-- CATEGORY: 3.3 -->
  612.     <xp:category name="$Checkpoint3_3" href="$strRedir3_3">
  613.         <xp:rule>
  614.             <xp:pattern priority="2">
  615.                 <xp:report type="guideline">
  616.                 <xp:summary>
  617.                         <xp:value-of select="$str3_3_StyleSheetsforLayout_Summary"/>
  618.                     </xp:summary>
  619.                     <xp:message>
  620.                         <xp:value-of select="$str3_3_StyleSheetsforLayout"/>
  621.                     </xp:message>
  622.                 </xp:report>
  623.             </xp:pattern>
  624.         </xp:rule>
  625.     </xp:category>
  626.     <!-- CATEGORY: 3.4 -->
  627.     <xp:category name="$Checkpoint3_4" href="$strRedir3_4">
  628.         <xp:rule>
  629.             <xp:pattern priority="2">
  630.                 <xp:report type="guideline">
  631.                     <xp:summary>
  632.                         <xp:value-of select="$str3_4_AbsoluteValues_Summary"/>
  633.                     </xp:summary>
  634.                     <xp:message>
  635.                         <xp:value-of select="$str3_4_AbsoluteValues"/>
  636.                     </xp:message>
  637.                 </xp:report>
  638.             </xp:pattern>
  639.         </xp:rule>
  640.     </xp:category>
  641.     <!-- CATEGORY: 3.5 -->
  642.     <xp:category name="$Checkpoint3_5"  href="$strRedir3_5">
  643.         <xp:rule context="//h2">
  644.             <xp:pattern match="preceding::h1" is-assert="true" priority="2">
  645.                 <xp:report type="warning">
  646.                     <xp:summary>
  647.                         <xp:value-of select="$str3_5_HeadersForStructure_Summary"/>
  648.                     </xp:summary>
  649.                     <xp:message>
  650.                         <xp:value-of select="$str3_5_HeadersForStructure"/>
  651.                     </xp:message>
  652.                 </xp:report>
  653.             </xp:pattern>
  654.         </xp:rule>
  655.             <xp:rule context="//h3">
  656.             <xp:pattern match="preceding::h1 | preceding::h2" is-assert="true" priority="2">
  657.                 <xp:report type="warning">
  658.                     <xp:summary>
  659.                         <xp:value-of select="$str3_5_HeadersForStructure_Summary"/>
  660.                     </xp:summary>
  661.                     <xp:message>
  662.                         <xp:value-of select="$str3_5_HeadersForStructure"/>
  663.                     </xp:message>
  664.                 </xp:report>
  665.             </xp:pattern>
  666.         </xp:rule>
  667.             <xp:rule context="//h4">
  668.             <xp:pattern match="preceding::h1 | preceding::h2 | preceding::h3" is-assert="true" priority="2">
  669.                 <xp:report type="warning">
  670.                     <xp:summary>
  671.                         <xp:value-of select="$str3_5_HeadersForStructure_Summary"/>
  672.                     </xp:summary>
  673.                     <xp:message>
  674.                         <xp:value-of select="$str3_5_HeadersForStructure"/>
  675.                     </xp:message>
  676.                 </xp:report>
  677.             </xp:pattern>
  678.         </xp:rule>
  679.             <xp:rule context="//h5">
  680.             <xp:pattern match="preceding::h1 | preceding::h2 | preceding::h3 | preceding::h4" is-assert="true" priority="2">
  681.                 <xp:report type="warning">
  682.                     <xp:summary>
  683.                         <xp:value-of select="$str3_5_HeadersForStructure_Summary"/>
  684.                     </xp:summary>
  685.                     <xp:message>
  686.                         <xp:value-of select="$str3_5_HeadersForStructure"/>
  687.                     </xp:message>
  688.                 </xp:report>
  689.             </xp:pattern>
  690.         </xp:rule>
  691.             <xp:rule context="//h6">
  692.             <xp:pattern match="preceding::h1 | preceding::h2 | preceding::h3 | preceding::h4 | preceding::h5" is-assert="true" priority="2">
  693.                 <xp:report type="warning">
  694.                     <xp:summary>
  695.                         <xp:value-of select="$str3_5_HeadersForStructure_Summary"/>
  696.                     </xp:summary>
  697.                     <xp:message>
  698.                         <xp:value-of select="$str3_5_HeadersForStructure"/>
  699.                     </xp:message>
  700.                 </xp:report>
  701.             </xp:pattern>
  702.         </xp:rule>
  703.     </xp:category>
  704.     <!-- CATEGORY: 3.6 -->    
  705.     <xp:category name="$Checkpoint3_6" href="$strRedir3_6">
  706.         <!--checks for li with ol ul dir-->
  707.         <xp:rule context="//ol | //ul | //dir">
  708.             <xp:pattern match=".//li" is-assert="true" priority="2">
  709.                 <xp:report type="warning">
  710.                     <xp:summary>
  711.                         <xp:value-of select="$str3_6_NoListItemsWithOLULDIR_Summary"/>
  712.                     </xp:summary>
  713.                     <xp:message>
  714.                         <xp:value-of select="$str3_6_NoListItemsWithOLULDIR"/>
  715.                     </xp:message>
  716.                 </xp:report>
  717.             </xp:pattern>
  718.         </xp:rule>
  719.         <!--checks for dd and dt with dl-->
  720.         <xp:rule context="//dl ">
  721.             <xp:pattern match=".//dd | .//dt" is-assert="true" priority="2">
  722.                 <xp:report type="warning">
  723.                     <xp:summary>
  724.                         <xp:value-of select="$str3_6_NoDefinedTermDefinitionWithDL_Summary"/>
  725.                     </xp:summary>
  726.                     <xp:message>
  727.                         <xp:value-of select="$str3_6_NoDefinedTermDefinitionWithDL"/>
  728.                     </xp:message>
  729.                 </xp:report>
  730.             </xp:pattern>
  731.         </xp:rule>
  732.     </xp:category>
  733.     <!-- CATEGORY: 3.7 -->
  734.     <!-- following tests for use of <Q> and <BLOCKQUOTE>-->
  735.     <xp:category name="$Checkpoint3_7" href="$strRedir3_7">
  736.         <xp:rule context="//html">
  737.             <xp:pattern match=".//q | .//blockquote" priority="2">
  738.                 <xp:report type="warning">
  739.                     <xp:summary>
  740.                         <xp:value-of select="$str3_7_QuoteBlockquote_Summary"/>
  741.                     </xp:summary>
  742.                     <xp:message>
  743.                         <xp:value-of select="$str3_7_QuoteBlockquote"/>
  744.                     </xp:message>
  745.                 </xp:report>
  746.             </xp:pattern>
  747.         </xp:rule>
  748.     </xp:category>
  749.     <!-- CATEGORY: 4.1 -->
  750.     <xp:category name="$Checkpoint4_1" href="$strRedir4_1">
  751.         <xp:rule>
  752.             <xp:pattern priority="1">
  753.                 <xp:report type="guideline">
  754.                 <xp:summary>
  755.                         <xp:value-of select="$str4_1_LanguageChanges_Summary"/>
  756.                     </xp:summary>
  757.                     <xp:message>
  758.                         <xp:value-of select="$str4_1_LanguageChanges"/>
  759.                     </xp:message>
  760.                 </xp:report>
  761.             </xp:pattern>
  762.         </xp:rule>
  763.     </xp:category>
  764.     <!-- CATEGORY: 5.1 -->
  765.     <xp:category name="$Checkpoint5_1" href="$strRedir5_1">
  766.         <xp:rule context="//table">
  767.             <xp:pattern match=".//th" is-assert="true" priority="1">
  768.                 <xp:report type="warning">
  769.                     <xp:summary>
  770.                         <xp:value-of select="$str5_1_TableNoTH_Summary"/>
  771.                     </xp:summary>
  772.                     <xp:message>
  773.                         <xp:value-of select="$str5_1_TableNoTH"/>
  774.                     </xp:message>
  775.                 </xp:report>
  776.             </xp:pattern>
  777.         </xp:rule>
  778.     </xp:category>
  779.     <!-- CATEGORY: 5.2 -->
  780.     <xp:category name="$Checkpoint5_2" href="$strRedir5_2">
  781.         <xp:rule context="//table" >
  782.             <!-- following tests: TABLE with or without TH AND without THEAD, TBODY, TFOOT, COL, COLGROUP, and "axis", "scope" and "headers" attributes.-->
  783.             <xp:pattern match=".//thead  | .//tfoot | .//tbody | .//col | .//colgroup | .//th[@scope |@axis |@headers]" is-assert="true" priority="1">
  784.                 <xp:report type="warning">
  785.                     <xp:summary>
  786.                         <xp:value-of select="$str5_2_TableNoTHeadTFootTBodyColColgroupAxisScopeHeaders_Summary"/>
  787.                     </xp:summary>
  788.                     <xp:message>
  789.                         <xp:value-of select="$str5_2_TableNoTHeadTFootTBodyColColgroupAxisScopeHeaders"/>
  790.                     </xp:message>
  791.                 </xp:report>
  792.             </xp:pattern>
  793.         </xp:rule>
  794.     </xp:category>
  795.     <!-- CATEGORY: 5.3 -->
  796.     <xp:category name="$Checkpoint5_3" href="$strRedir5_3">
  797.         <xp:rule context="//table">
  798.             <xp:pattern match="self::table" priority="2">
  799.                 <xp:report type="warning">
  800.                     <xp:summary>
  801.                         <xp:value-of select="$str5_3_LinearizeLayoutTable_Summary"/>
  802.                     </xp:summary>
  803.                     <xp:message>
  804.                         <xp:value-of select="$str5_3_LinearizeLayoutTable"/>
  805.                     </xp:message>
  806.                 </xp:report>
  807.             </xp:pattern>
  808.         </xp:rule>
  809.     </xp:category>
  810.     <!-- CATEGORY: 5.4 -->
  811.     <xp:category name="$Checkpoint5_4" href="$strRedir5_4">
  812.         <xp:rule context="//table">
  813.             <xp:pattern match="self::table" priority="2">
  814.                 <xp:report type="warning">
  815.                     <xp:summary>
  816.                         <xp:value-of select="$str5_4_FormatforLayoutTable_Summary"/>
  817.                     </xp:summary>
  818.                     <xp:message>
  819.                         <xp:value-of select="$str5_4_FormatforLayoutTable"/>
  820.                     </xp:message>
  821.                 </xp:report>
  822.             </xp:pattern>
  823.         </xp:rule>
  824.     </xp:category>
  825.     <!-- CATEGORY: 6.1 -->
  826.     <xp:category name="$Checkpoint6_1" href="$strRedir6_1">
  827.         <!-- checks for linked or embedded stylesheets -->
  828.         <xp:rule context="//head">
  829.             <xp:pattern match=" .//link | .//style" priority="1">
  830.                 <xp:report type="warning">
  831.                     <xp:summary>
  832.                         <xp:value-of select="$str6_1_PossibleStyleSheet_Summary"/>
  833.                     </xp:summary>
  834.                     <xp:message>
  835.                         <xp:value-of select="$str6_1_PossibleStyleSheet"/>
  836.                     </xp:message>
  837.                 </xp:report>
  838.             </xp:pattern>
  839.         </xp:rule>
  840.         <!-- checks for inline styles -->
  841.         <xp:rule context="//span">
  842.             <xp:pattern match=" @style " priority="1">
  843.                 <xp:report type="warning">
  844.                     <xp:summary>
  845.                         <xp:value-of select="$str6_1_PossibleStyleSheet_Summary"/>
  846.                     </xp:summary>
  847.                     <xp:message>
  848.                         <xp:value-of select="$str6_1_PossibleStyleSheet"/>
  849.                     </xp:message>
  850.                 </xp:report>
  851.             </xp:pattern>
  852.         </xp:rule>
  853.     </xp:category>
  854.     <!-- CATEGORY: 6.2 -->
  855.     <xp:category name="$Checkpoint6_2" href="$strRedir6_2">
  856.         <xp:rule>
  857.             <xp:pattern priority="1">
  858.                 <xp:report type="guideline">
  859.                 <xp:summary>
  860.                         <xp:value-of select="$str6_2_DynamicContentSynch_Summary"/>
  861.                     </xp:summary>
  862.                     <xp:message>
  863.                         <xp:value-of select="$str6_2_DynamicContentSynch"/>
  864.                     </xp:message>
  865.                 </xp:report>
  866.             </xp:pattern>
  867.         </xp:rule>
  868.     </xp:category>
  869.     <!-- CATEGORY: 6.3 -->
  870.     <xp:category name="$Checkpoint6_3" href="$strRedir6_3">
  871.         <xp:rule context="//html">
  872.             <xp:pattern match=".//script[not(@runat) and not(./ancestor::script)] | 
  873.                                .//embed[not(./ancestor::object)] | 
  874.                                .//object[not(./ancestor::object | script | applet)] | 
  875.                                .//applet[not(./ancestor::applet | object | script)]" priority="1">
  876.                 <xp:report type="warning">
  877.                     <xp:summary>
  878.                         <xp:value-of select="$str6_3_PossibleProgrammaticObjects_Summary"/>
  879.                     </xp:summary>
  880.                     <xp:message>
  881.                         <xp:value-of select="$str6_3_PossibleProgrammaticObjects"/>
  882.                     </xp:message>
  883.                 </xp:report>
  884.             </xp:pattern>
  885.         </xp:rule>
  886.     </xp:category>
  887.     <!-- CATEGORY: 6.4 -->
  888.     <xp:category name="$Checkpoint6_4" href="$strRedir6_4">
  889.         <xp:rule context="(//script[not(@runat)]) | (//object) | (//embed) | (//applet) ">
  890.             <xp:pattern match="@onchange | @onclick | @ondblclick | @onload | @onmousedown | @onmousemove | @onmouseout | @onmouseover | @onmouseup | @onreset | onsubmit | @onrunload " priority="2">
  891.                 <xp:report type="warning">
  892.                     <xp:summary>
  893.                         <xp:value-of select="$str6_4_EventHandlers_Summary"/>
  894.                     </xp:summary>
  895.                     <xp:message>
  896.                         <xp:value-of select="$str6_4_EventHandlers"/>
  897.                     </xp:message>
  898.                 </xp:report>
  899.             </xp:pattern>
  900.         </xp:rule>
  901.     </xp:category>
  902.     <!-- CATEGORY: 6.5 -->
  903.     <xp:category name="$Checkpoint6_5" href="$strRedir6_5">
  904.         <xp:rule>
  905.             <xp:pattern priority="2">
  906.                 <xp:report type="guideline">
  907.                 <xp:summary>
  908.                         <xp:value-of select="$str6_5_DynamicContent_Summary"/>
  909.                     </xp:summary>
  910.                     <xp:message>
  911.                         <xp:value-of select="$str6_5_DynamicContent"/>
  912.                     </xp:message>
  913.                 </xp:report>
  914.             </xp:pattern>
  915.         </xp:rule>
  916.     </xp:category>
  917.     <!-- CATEGORY: 7.1 -->
  918.     <xp:category name="$Checkpoint7_1" href="$strRedir7_1">
  919.         <xp:rule>
  920.             <xp:pattern priority="1">
  921.                 <xp:report type="guideline">
  922.                 <xp:summary>
  923.                         <xp:value-of select="$str7_1_ScreenFlicker_Summary"/>
  924.                     </xp:summary>
  925.                     <xp:message>
  926.                         <xp:value-of select="$str7_1_ScreenFlicker"/>
  927.                     </xp:message>
  928.                 </xp:report>
  929.             </xp:pattern>
  930.         </xp:rule>
  931.     </xp:category>
  932.     <!-- CATEGORY: 7.2 -->
  933.     <xp:category name="$Checkpoint7_2" href="$strRedir7_2">
  934.         <xp:rule context="//html">
  935.             <xp:pattern match=".//blink" priority="1">
  936.                 <xp:report type="warning">
  937.                     <xp:summary>
  938.                         <xp:value-of select="$str7_2_Blink_Summary"/>
  939.                     </xp:summary>
  940.                     <xp:message>
  941.                         <xp:value-of select="$str7_2_Blink"/>
  942.                     </xp:message>
  943.                 </xp:report>
  944.             </xp:pattern>
  945.         </xp:rule>
  946.     </xp:category>
  947.     <!-- CATEGORY: 7.3 -->
  948.     <xp:category name="$Checkpoint7_3" href="$strRedir7_3">
  949.         <xp:rule context="//script[not(@runat)] | //applet | //marquee">
  950.             <xp:pattern match="self::script | self::applet | self::marquee" priority="2">
  951.                 <xp:report type="warning">
  952.                     <xp:summary>
  953.                         <xp:value-of select="$str7_3_MovingContent_Summary"/>
  954.                     </xp:summary>
  955.                     <xp:message>
  956.                         <xp:value-of select="$str7_3_MovingContent"/>
  957.                     </xp:message>
  958.                 </xp:report>
  959.             </xp:pattern>
  960.         </xp:rule>
  961.     </xp:category>
  962.     <!-- CATEGORY: 7.4 -->
  963.     <xp:category name="$Checkpoint7_4" href="$strRedir7_4">
  964.         <xp:rule>
  965.             <xp:pattern priority="2">
  966.                 <xp:report type="guideline">
  967.                 <xp:summary>
  968.                         <xp:value-of select="$str7_4_AutoRefresh_Summary"/>
  969.                     </xp:summary>
  970.                     <xp:message>
  971.                         <xp:value-of select="$str7_4_AutoRefresh"/>
  972.                     </xp:message>
  973.                 </xp:report>
  974.             </xp:pattern>
  975.         </xp:rule>
  976.     </xp:category>
  977.     <!-- CATEGORY: 7.5 -->
  978.     <xp:category name="$Checkpoint7_5" href="$strRedir7_5">
  979.         <xp:rule>
  980.             <xp:pattern priority="2">
  981.                 <xp:report type="guideline">
  982.                 <xp:summary>
  983.                         <xp:value-of select="$str7_5_ReDirects_Summary"/>
  984.                     </xp:summary>
  985.                     <xp:message>
  986.                         <xp:value-of select="$str7_5_ReDirects"/>
  987.                     </xp:message>
  988.                 </xp:report>
  989.             </xp:pattern>
  990.         </xp:rule>
  991.     </xp:category>
  992.     <!-- CATEGORY: 8.1 -->
  993.     <xp:category name="$Checkpoint8_1" href="$strRedir8_1">
  994.         <!-- following tests:  for SCRIPT with onmouseover, onclick, ondblclick -->
  995.         <xp:rule context="//script[not(@runat)]">
  996.             <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">
  997.                 <xp:report type="warning">
  998.                     <xp:summary>
  999.                         <xp:value-of select="$str8_1_PossibleProgrammaticElements_Summary"/>
  1000.                     </xp:summary>
  1001.                     <xp:message>
  1002.                         <xp:value-of select="$str8_1_PossibleProgrammaticElements"/>
  1003.                     </xp:message>
  1004.                 </xp:report>
  1005.             </xp:pattern>
  1006.         </xp:rule>
  1007.         <!-- following tests:  for APPLETS and OBJECT -->
  1008.         <xp:rule context="//applet | //object">
  1009.             <xp:pattern match="self::applet | self::object" priority="1">
  1010.                 <xp:report type="warning">
  1011.                     <xp:summary>
  1012.                         <xp:value-of select="$str8_1_PossibleProgrammaticElements_Summary"/>
  1013.                     </xp:summary>
  1014.                     <xp:message>
  1015.                         <xp:value-of select="$str8_1_PossibleProgrammaticElements"/>
  1016.                     </xp:message>
  1017.                 </xp:report>
  1018.             </xp:pattern>
  1019.         </xp:rule>
  1020.     </xp:category>
  1021.     <!-- CATEGORY: 9.1 -->
  1022.     <xp:category name="$Checkpoint9_1" href="$strRedir9_1">
  1023.         <xp:rule context="//img | //input">
  1024.             <xp:pattern match="@ismap" priority="1">
  1025.                 <xp:report type="warning">
  1026.                     <xp:summary>
  1027.                         <xp:value-of select="$str9_1_ServerSideImageMap_Summary"/>
  1028.                     </xp:summary>
  1029.                     <xp:message>
  1030.                         <xp:value-of select="$str9_1_ServerSideImageMap"/>
  1031.                     </xp:message>
  1032.                 </xp:report>
  1033.             </xp:pattern>
  1034.         </xp:rule>
  1035.     </xp:category>
  1036.     <!-- CATEGORY: 9.2 -->
  1037.     <xp:category name="$Checkpoint9_2" href="$strRedir9_2">
  1038.         <xp:rule context="//script[not(@runat)] | //applet | //embed">
  1039.             <xp:pattern match="self::script | self::applet | self::embed" priority="2">
  1040.                 <xp:report type="warning">
  1041.                     <xp:summary>
  1042.                         <xp:value-of select="$str9_2_ElementWithUI_Summary"/>
  1043.                     </xp:summary>
  1044.                     <xp:message>
  1045.                         <xp:value-of select="$str9_2_ElementWithUI"/>
  1046.                     </xp:message>
  1047.                 </xp:report>
  1048.             </xp:pattern>
  1049.         </xp:rule>
  1050.     </xp:category>
  1051.     <!-- CATEGORY: 9.3 -->
  1052.     <xp:category name="$Checkpoint9_3" href="$strRedir9_3">
  1053.         <xp:rule context=" (//a) | (//button) | (//select) | (//frameset) | (//form) | (//area) | (//input) ">
  1054.             <xp:pattern match="@onchange | @onclick | @ondblclick | @onload | @onmousedown | @onmousemove | @onmouseout | @onmouseover | @onmouseup | @onreset | onsubmit | @onrunload " priority="2">
  1055.                 <xp:report type="warning">
  1056.                     <xp:summary>
  1057.                         <xp:value-of select="$str9_3_DeviceDependentEventHandler_Summary"/>
  1058.                     </xp:summary>
  1059.                     <xp:message>
  1060.                         <xp:value-of select="$str9_3_DeviceDependentEventHandler"/>
  1061.                     </xp:message>
  1062.                 </xp:report>
  1063.             </xp:pattern>
  1064.         </xp:rule>
  1065.     </xp:category>
  1066.     <!-- CATEGORY: 10.1 -->
  1067.     <xp:category name="$Checkpoint10_1" href="$strRedir10_1">
  1068.         <xp:rule>
  1069.             <xp:pattern priority="2">
  1070.                 <xp:report type="guideline">
  1071.                 <xp:summary>
  1072.                         <xp:value-of select="$str10_1_PopUps_Summary"/>
  1073.                     </xp:summary>
  1074.                     <xp:message>
  1075.                         <xp:value-of select="$str10_1_PopUps"/>
  1076.                     </xp:message>
  1077.                 </xp:report>
  1078.             </xp:pattern>
  1079.         </xp:rule>
  1080.     </xp:category>
  1081.     <!-- CATEGORY: 10.2 -->
  1082.     <xp:category name="$Checkpoint10_2" href="$strRedir10_2">
  1083.         <xp:rule context="//form">
  1084.             <xp:pattern match=".//label" is-assert="true" priority="2">
  1085.                 <xp:report type="warning">
  1086.                     <xp:summary>
  1087.                         <xp:value-of select="$str10_2_LabelWithFormControl_Summary"/>
  1088.                     </xp:summary>
  1089.                     <xp:message>
  1090.                         <xp:value-of select="$str10_2_LabelWithFormControl"/>
  1091.                     </xp:message>
  1092.                 </xp:report>
  1093.             </xp:pattern>
  1094.         </xp:rule>
  1095.         <xp:rule context="//label">
  1096.             <xp:pattern match="@for" is-assert="true" priority="2">
  1097.                 <xp:report type="warning">
  1098.                     <xp:summary>
  1099.                         <xp:value-of select="$str10_2_LabelWithFormControl_Summary"/>
  1100.                     </xp:summary>
  1101.                     <xp:message>
  1102.                         <xp:value-of select="$str10_2_LabelWithFormControl"/>
  1103.                     </xp:message>
  1104.                 </xp:report>
  1105.             </xp:pattern>
  1106.         </xp:rule>
  1107.     </xp:category>
  1108.     <!-- CATEGORY: 11.1 -->
  1109.     <xp:category name="$Checkpoint11_1" href="$strRedir11_1">
  1110.         <xp:rule>
  1111.             <xp:pattern priority="2">
  1112.                 <xp:report type="guideline">
  1113.                 <xp:summary>
  1114.                         <xp:value-of select="$str11_1_LatestW3CTechnologies_Summary"/>
  1115.                     </xp:summary>
  1116.                     <xp:message>
  1117.                         <xp:value-of select="$str11_1_LatestW3CTechnologies"/>
  1118.                     </xp:message>
  1119.                 </xp:report>
  1120.             </xp:pattern>
  1121.         </xp:rule>
  1122.     </xp:category>
  1123.     <!-- CATEGORY: 11.2 -->
  1124.     <xp:category name="$Checkpoint11_2" href="$strRedir11_2">
  1125.         <xp:rule context="//html">
  1126.             <xp:pattern match="//applet | //font | //basefont | //center |  //isindex | //dir | //menu |  //s | //strike | //u |  //xmp | //listing | //plaintext" priority="2">
  1127.                 <xp:report type="warning">
  1128.                     <xp:summary>
  1129.                         <xp:value-of select="$str11_2_DeprecatedElement_Summary"/>
  1130.                     </xp:summary>
  1131.                     <xp:message>
  1132.                         <xp:value-of select="$str11_2_DeprecatedElement"/>
  1133.                     </xp:message>
  1134.                 </xp:report>
  1135.             </xp:pattern>
  1136.         </xp:rule>
  1137.     </xp:category>
  1138.     <!-- CATEGORY: 11.4 -->
  1139.     <xp:category name="$Checkpoint11_4" href="$strRedir11_4">
  1140.         <xp:rule>
  1141.             <xp:pattern priority="1">
  1142.                 <xp:report type="guideline">
  1143.                 <xp:summary>
  1144.                         <xp:value-of select="$str11_4_AlternativeAccessiblePage_Summary"/>
  1145.                     </xp:summary>
  1146.                     <xp:message>
  1147.                         <xp:value-of select="$str11_4_AlternativeAccessiblePage"/>
  1148.                     </xp:message>
  1149.                 </xp:report>
  1150.             </xp:pattern>
  1151.         </xp:rule>
  1152.     </xp:category>
  1153.     <!-- CATEGORY: 12.1 -->
  1154.     <xp:category name="$Checkpoint12_1" href="$strRedir12_1">
  1155.         <xp:rule context="//frame | //frameset | //iframe">
  1156.         <!-- Tests for Frame, Frameset, iframe with no title attribute -->
  1157.             <xp:pattern match="@title" is-assert="true" priority="1">
  1158.                 <xp:report type="error">
  1159.                     <xp:summary>
  1160.                         <xp:value-of select="$str12_1_NoTitleAttrib_Summary"/>
  1161.                     </xp:summary>
  1162.                     <xp:message>
  1163.                         <xp:value-of select="$str12_1_NoTitleAttrib"/>
  1164.                     </xp:message>
  1165.                 </xp:report>
  1166.             </xp:pattern>
  1167.             <!-- Tests for empty title attribute in frames, frameset, iframe, noframes -->
  1168.             <xp:pattern match="@title[string-length( . ) = 0] " priority="1">
  1169.                 <xp:report type="error">
  1170.                     <xp:summary>
  1171.                         <xp:value-of select="$str12_1_EmptyTitleAttrib_Summary"/>
  1172.                     </xp:summary>
  1173.                     <xp:message>
  1174.                         <xp:value-of select="$str12_1_EmptyTitleAttrib"/>
  1175.                     </xp:message>
  1176.                 </xp:report>
  1177.             </xp:pattern>
  1178.         </xp:rule>
  1179.         <!-- Tests for noframes with no title attribute-->
  1180.         <xp:rule context="//noframes/a">
  1181.             <xp:pattern match="@title" is-assert="true " priority="1">
  1182.                 <xp:report type="error">
  1183.                     <xp:summary>
  1184.                         <xp:value-of select="$str12_1_NoTitleAttrib_Summary"/>
  1185.                     </xp:summary>
  1186.                     <xp:message>
  1187.                         <xp:value-of select="$str12_1_NoTitleAttrib"/>
  1188.                     </xp:message>
  1189.                 </xp:report>
  1190.             </xp:pattern>
  1191.             <!--Tests for noframes with empty title attribute-->
  1192.             <xp:pattern match="@title[string-length( . ) = 0] " priority="1">
  1193.                 <xp:report type="error">
  1194.                     <xp:summary>
  1195.                         <xp:value-of select="$str12_1_EmptyTitleAttrib_Summary"/>
  1196.                     </xp:summary>
  1197.                     <xp:message>
  1198.                         <xp:value-of select="$str12_1_EmptyTitleAttrib"/>
  1199.                     </xp:message>
  1200.                 </xp:report>
  1201.             </xp:pattern>
  1202.         </xp:rule>
  1203.     </xp:category>
  1204.     <!-- CATEGORY: 12.2 -->
  1205.     <xp:category name="$Checkpoint12_2" href="$strRedir12_2">
  1206.         <xp:rule context="//noframes">
  1207.             <xp:pattern match=".//a[@href]" is-assert="true" priority="2">
  1208.                 <xp:report type="error">
  1209.                     <xp:summary>
  1210.                         <xp:value-of select="$str12_2_NoframesWithoutHREF_Summary"/>
  1211.                     </xp:summary>
  1212.                     <xp:message>
  1213.                         <xp:value-of select="$str12_2_NoframesWithoutHREF"/>
  1214.                     </xp:message>
  1215.                 </xp:report>
  1216.             </xp:pattern>
  1217.         </xp:rule>
  1218.     </xp:category>
  1219.     <!-- CATEGORY: 12.3 -->
  1220.     <xp:category name="$Checkpoint12_3" href="$strRedir12_3">
  1221.         <!--checks for form without fieldset -->
  1222.         <xp:rule context="//form ">
  1223.             <xp:pattern match=".//fieldset " is-assert="true" priority="2">
  1224.                 <xp:report type="warning">
  1225.                     <xp:summary>
  1226.                         <xp:value-of select="$str12_3_FormNoFieldset_Summary"/>
  1227.                     </xp:summary>
  1228.                     <xp:message>
  1229.                         <xp:value-of select="$str12_3_FormNoFieldset"/>
  1230.                     </xp:message>
  1231.                 </xp:report>
  1232.             </xp:pattern>
  1233.         </xp:rule>
  1234.         <!--checks for form with fieldset and no legend -->
  1235.         <xp:rule context="//form[.//fieldset]">
  1236.             <xp:pattern match=".//legend " is-assert="true" priority="2">
  1237.                 <xp:report type="warning">
  1238.                     <xp:summary>
  1239.                         <xp:value-of select="$str12_3_FormAndFieldsetNoLegend_Summary"/>
  1240.                     </xp:summary>
  1241.                     <xp:message>
  1242.                         <xp:value-of select="$str12_3_FormAndFieldsetNoLegend"/>
  1243.                     </xp:message>
  1244.                 </xp:report>
  1245.             </xp:pattern>
  1246.         </xp:rule>
  1247.         <!-- checks for Select with no Optgroup -->
  1248.         <xp:rule context="//select">
  1249.             <xp:pattern match=".//optgroup" is-assert="true" priority="2">
  1250.                 <xp:report type="warning">
  1251.                     <xp:summary>
  1252.                         <xp:value-of select="$str12_3_SelectOptionandNoOptgroup_Summary"/>
  1253.                     </xp:summary>
  1254.                     <xp:message>
  1255.                         <xp:value-of select="$str12_3_SelectOptionandNoOptgroup"/>
  1256.                     </xp:message>
  1257.                 </xp:report>
  1258.             </xp:pattern>
  1259.         </xp:rule>
  1260.         <!-- checks for table with no caption-->
  1261.         <xp:rule context="//table">
  1262.             <xp:pattern match=".//caption" is-assert="true" priority="2">
  1263.                 <xp:report type="warning">
  1264.                     <xp:summary>
  1265.                         <xp:value-of select="$str12_3_TableandNoCaption_Summary"/>
  1266.                     </xp:summary>
  1267.                     <xp:message>
  1268.                         <xp:value-of select="$str12_3_TableandNoCaption"/>
  1269.                     </xp:message>
  1270.                 </xp:report>
  1271.             </xp:pattern>
  1272.         </xp:rule>
  1273.         <!-- checks for LI with no OL, UL, or DL -->
  1274.         <xp:rule context="//li[1] | //dd[1] | //dt[1]">
  1275.             <xp:pattern match="//ol/li | //ul/li  | //dd/dl | //dd/dt | //dir/li " is-assert="true" priority="2">
  1276.                 <xp:report type="warning">
  1277.                     <xp:summary>
  1278.                         <xp:value-of select="$str12_3_ListNoULOLDL_Summary"/>
  1279.                     </xp:summary>
  1280.                     <xp:message>
  1281.                         <xp:value-of select="$str12_3_ListNoULOLDL"/>
  1282.                     </xp:message>
  1283.                 </xp:report>
  1284.             </xp:pattern>
  1285.         </xp:rule>
  1286.     </xp:category>
  1287.     <!-- CATEGORY: 12.4 -->
  1288.     <xp:category name="$Checkpoint12_4" href="$strRedir12_4">
  1289.         <xp:rule context="//form | //label">
  1290.             <!-- checks for form with no label and no for attrib-->
  1291.             <xp:pattern match=".//label | @for" is-assert= "true" priority="2">
  1292.                 <xp:report type="warning">
  1293.                     <xp:summary>
  1294.                         <xp:value-of select="$str12_4_FormNoLabelNoFor_Summary"/>
  1295.                     </xp:summary>
  1296.                     <xp:message>
  1297.                         <xp:value-of select="$str12_4_FormNoLabelNoFor"/>
  1298.                     </xp:message>
  1299.                 </xp:report>
  1300.             </xp:pattern>
  1301.         </xp:rule>
  1302.     </xp:category>
  1303.     <!-- CATEGORY: 13.1 -->
  1304.     <xp:category name="$Checkpoint13_1" href="$strRedir13_1">
  1305.         <xp:rule context="//a">
  1306.             <xp:pattern match="(self::a[contains (., 'ClickHere')]) | (self::a[contains (., 'GoTo')]) | (self::a[contains (., 'Go')]) " priority="2">
  1307.                 <xp:report type="error">
  1308.                     <xp:summary>
  1309.                         <xp:value-of select="$str13_1_ClickHereLinkTarget_Summary"/>
  1310.                     </xp:summary>
  1311.                     <xp:message>
  1312.                         <xp:value-of select="$str13_1_ClickHereLinkTarget"/>
  1313.                     </xp:message>
  1314.                 </xp:report>
  1315.             </xp:pattern>
  1316.         </xp:rule>
  1317.     </xp:category>
  1318.     <!-- CATEGORY: 13.2 -->
  1319.     <xp:category name="$Checkpoint13_2" href="$strRedir13_2">
  1320.         <xp:rule>
  1321.             <xp:pattern priority="2">
  1322.                 <xp:report type="guideline">
  1323.                 <xp:summary>
  1324.                         <xp:value-of select="$str13_2_SemanticInformationOrientation_Summary"/>
  1325.                     </xp:summary>
  1326.                     <xp:message>
  1327.                         <xp:value-of select="$str13_2_SemanticInformationOrientation"/>
  1328.                     </xp:message>
  1329.                 </xp:report>
  1330.             </xp:pattern>
  1331.         </xp:rule>
  1332.     </xp:category>
  1333.     <!-- CATEGORY: 13.3 -->
  1334.     <xp:category name="$Checkpoint13_3" href="$strRedir13_3">
  1335.         <xp:rule>
  1336.             <xp:pattern priority="2">
  1337.                 <xp:report type="guideline">
  1338.                 <xp:summary>
  1339.                         <xp:value-of select="$str13_3_ProvideLayoutInformation_Summary"/>
  1340.                     </xp:summary>
  1341.                     <xp:message>
  1342.                         <xp:value-of select="$str13_3_ProvideLayoutInformation"/>
  1343.                     </xp:message>
  1344.                 </xp:report>
  1345.             </xp:pattern>
  1346.         </xp:rule>
  1347.     </xp:category>
  1348.     <!-- CATEGORY: 13.4 -->
  1349.     <xp:category name="$Checkpoint13_4" href="$strRedir13_4">
  1350.         <xp:rule>
  1351.             <xp:pattern priority="2">
  1352.                 <xp:report type="guideline">
  1353.                 <xp:summary>
  1354.                         <xp:value-of select="$str13_4_ConsistentNavigation_Summary"/>
  1355.                     </xp:summary>
  1356.                     <xp:message>
  1357.                         <xp:value-of select="$str13_4_ConsistentNavigation"/>
  1358.                     </xp:message>
  1359.                 </xp:report>
  1360.             </xp:pattern>
  1361.         </xp:rule>
  1362.     </xp:category>
  1363.     <!-- CATEGORY: 14.1 -->
  1364.     <xp:category name="$Checkpoint14_1" href="$strRedir14_1">
  1365.         <xp:rule>
  1366.             <xp:pattern priority="1">
  1367.                 <xp:report type="guideline">
  1368.                 <xp:summary>
  1369.                         <xp:value-of select="$str14_1_ClearLanguage_Summary"/>
  1370.                     </xp:summary>
  1371.                     <xp:message>
  1372.                         <xp:value-of select="$str14_1_ClearLanguage"/>
  1373.                     </xp:message>
  1374.                 </xp:report>
  1375.             </xp:pattern>
  1376.         </xp:rule>
  1377.     </xp:category>
  1378.     <!-- CATEGORY: 1194_22_(l) -->
  1379.     <xp:category name="$Access_Board_Part_1194_22(l)">
  1380.         <xp:rule context="//script[not(@runat)] | //object | //embed | //applet">
  1381.             <xp:pattern match="self::script | self::object | self::embed | self::applet" priority="4">
  1382.                 <xp:report type="warning">
  1383.                     <xp:summary>
  1384.                         <xp:value-of select="$str1194_22_(l)_AssistiveDeviceReadableScriptInfo_Summary"/>
  1385.                     </xp:summary>
  1386.                     <xp:message>
  1387.                         <xp:value-of select="$str1194_22_(l)_AssistiveDeviceReadableScriptInfo"/>
  1388.                     </xp:message>
  1389.                 </xp:report>
  1390.             </xp:pattern>
  1391.         </xp:rule>
  1392.     </xp:category>
  1393.     <!-- CATEGORY: 1194_22_(m) -->
  1394.     <xp:category name="$Access_Board_Part_1194_22(m)">
  1395.         <xp:rule context="//script[not(@runat)] | //object | //embed | //applet">
  1396.             <xp:pattern match="self::script | self::object | self::embed | self::applet" priority="4">
  1397.                 <xp:report type="warning">
  1398.                     <xp:summary>
  1399.                         <xp:value-of select="$str1194_22_(m)_ClientSideAppletPlugInOrAppRequired_Summary"/>
  1400.                     </xp:summary>
  1401.                     <xp:message>
  1402.                         <xp:value-of select="$str1194_22_(m)_ClientSideAppletPlugInOrAppRequired"/>
  1403.                     </xp:message>
  1404.                 </xp:report>
  1405.             </xp:pattern>
  1406.         </xp:rule>
  1407.     </xp:category>
  1408.     <!-- CATEGORY: 1194_22_(n) -->
  1409.     <xp:category name="$Access_Board_Part_1194_22(n)">
  1410.         <xp:rule context=".//form | .//legend | .//fieldset">
  1411.             <xp:pattern match="self::form | self::legend | self::fieldset" priority="4">
  1412.                 <xp:report type="warning">
  1413.                     <xp:summary>
  1414.                         <xp:value-of select="$str1194_22_(n)_OnlineElectronicForms_Summary"/>
  1415.                     </xp:summary>
  1416.                     <xp:message>
  1417.                         <xp:value-of select="$str1194_22_(n)_OnlineElectronicForms"/>
  1418.                     </xp:message>
  1419.                 </xp:report>
  1420.             </xp:pattern>
  1421.         </xp:rule>
  1422.     </xp:category>
  1423.     <!-- CATEGORY: 1194_22_(o) -->
  1424.     <xp:category name="$Access_Board_Part_1194_22(o)">
  1425.         <xp:rule>
  1426.             <xp:pattern priority="4">
  1427.                 <xp:report type="guideline">
  1428.                 <xp:summary>
  1429.                         <xp:value-of select="$str1194_22_(o)_SkipRepetitiveLinks_Summary"/>
  1430.                     </xp:summary>
  1431.                     <xp:message>
  1432.                         <xp:value-of select="$str1194_22_(o)_SkipRepetitiveLinks"/>
  1433.                     </xp:message>
  1434.                 </xp:report>
  1435.             </xp:pattern>
  1436.         </xp:rule>
  1437.     </xp:category>
  1438.     <!-- CATEGORY: 1194_22_(p) -->
  1439.     <xp:category name="$Access_Board_Part_1194_22(p)">
  1440.         <xp:rule>
  1441.             <xp:pattern priority="4">
  1442.                 <xp:report type="guideline">
  1443.                 <xp:summary>
  1444.                         <xp:value-of select="$str1194_22_(p)_TimeBasedResponseRequired_Summary"/>
  1445.                     </xp:summary>
  1446.                     <xp:message>
  1447.                         <xp:value-of select="$str1194_22_(p)_TimeBasedResponseRequired"/>
  1448.                     </xp:message>
  1449.                 </xp:report>
  1450.             </xp:pattern>
  1451.         </xp:rule>
  1452.     </xp:category>
  1453.     <!-- CATEGORY: none -->
  1454.     <xp:category name="">
  1455.         <xp:rule context="//html">
  1456.             <xp:pattern match=".//webbot" priority="1">
  1457.                 <xp:report type="webbot">
  1458.                     <xp:summary>
  1459.                         <xp:value-of select="$str_WebBotGeneric_Summary"/>
  1460.                     </xp:summary>
  1461.                     <xp:message>
  1462.                         <xp:value-of select="$str_WebBotGeneric"/>
  1463.                     </xp:message>
  1464.                 </xp:report>
  1465.             </xp:pattern>
  1466.         </xp:rule>
  1467.     </xp:category>
  1468. </xp:ruleset>