home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 2000 April / VPR0004A.BIN / OLS / HTMLLINT / htmllint.lzh / webexp.rul < prev    next >
Text File  |  1999-11-03  |  13KB  |  372 lines

  1. # WebExplorer1.1
  2.  
  3. #======= ELEMENTS =======
  4. $emptyTags = 'BASE|BR|FRAME|HR|IMAGE|IMG|INPUT|ISINDEX|P|TAB';
  5. $pairTags = 'A|ADDRESS|ANIMATE|B|BASEFONT|BLOCKQUOTE|BODY|CAPTION|CENTER|CITE'.
  6.             '|CODE|DD|DIR|DL|DT|EM|FONT|FORM|H1|H2|H3|H4|H5|H6|H7|HEAD|HTML|I'.
  7.             '|LI|LISTING|MENU|OL|OPTION|PLAINTEXT|PRE|Q|QUOTE|S|SELECT|STRONG'.
  8.             '|TABLE|TD|TEXTAREA|TH|TITLE|TR|TT|U|UL|XMP';
  9. $deprecatedTags = '';
  10. $omitStartTags = 'BODY|HEAD|HTML';
  11. $omitEndTags = 'BASEFONT|BODY|DD|DT|HEAD|HTML|LI|OPTION|PLAINTEXT|TD|TH|TR';
  12. #$maybeEmpty = 'A|ADDRESS|B|BASEFONT|BLOCKQUOTE|BODY|CAPTION|CENTER|CITE|CODE'.
  13. #              '|DD|DT|EM|FONT|FORM|H1|H2|H3|H4|H5|H6|H7|I|LI|LISTING|OPTION'.
  14. #              '|PLAINTEXT|PRE|Q|QUOTE|S|STRONG|TD|TEXTAREA|TH|TITLE|TR|TT|U'.
  15. #              '|XMP';
  16. $maybeEmpty = 'LISTING|PLAINTEXT|PRE|TD|TEXTAREA|TH|XMP';
  17. %requiredTags = (
  18.   'HEAD'  => 'TITLE',
  19.   'HTML'  => 'HEAD|BODY',
  20.   'TABLE' => 'TR',
  21. );
  22. %onceonlyTags = (
  23.   'HEAD'  => 'TITLE|ISINDEX|BASE',
  24.   'HTML'  => 'HEAD|BODY|PLAINTEXT',
  25.   'TABLE' => 'CAPTION',
  26. );
  27. $sequencialTags = 'TABLE|HTML';
  28. %tagsElements = (
  29.   'A'          => 'BASEFONT|FONT|U|S|I|B|TT|QUOTE|Q|CITE|CODE|STRONG|EM|BR'.
  30.                   '|IMAGE|IMG|ANIMATE|#PCDATA|H7|H6|H5|H4|H3|H2|H1',
  31.   'ADDRESS'    => 'P|BASEFONT|FONT|U|S|I|B|TT|QUOTE|Q|CITE|CODE|STRONG|EM|BR'.
  32.                   '|IMAGE|IMG|ANIMATE|A|#PCDATA',
  33.   'ANIMATE'    => 'FRAME',
  34.   'B'          => 'BASEFONT|FONT|U|S|I|B|TT|QUOTE|Q|CITE|CODE|STRONG|EM|BR'.
  35.                   '|IMAGE|IMG|ANIMATE|A|#PCDATA',
  36.   'BASEFONT'   => 'BASEFONT|FONT|U|S|I|B|TT|QUOTE|Q|CITE|CODE|STRONG|EM|BR'.
  37.                   '|IMAGE|IMG|ANIMATE|A|#PCDATA',
  38.   'BLOCKQUOTE' => 'ADDRESS|HR|ISINDEX|FORM|BLOCKQUOTE|LISTING|XMP|PRE|TABLE'.
  39.                   '|CENTER|DL|MENU|DIR|OL|UL|P|BASEFONT|FONT|U|S|I|B|TT|QUOTE'.
  40.                   '|Q|CITE|CODE|STRONG|EM|BR|IMAGE|IMG|ANIMATE|A|#PCDATA|H7'.
  41.                   '|H6|H5|H4|H3|H2|H1',
  42.   'BODY'       => 'ADDRESS|HR|ISINDEX|FORM|BLOCKQUOTE|LISTING|XMP|PRE|TABLE'.
  43.                   '|CENTER|DL|MENU|DIR|OL|UL|P|BASEFONT|FONT|U|S|I|B|TT|QUOTE'.
  44.                   '|Q|CITE|CODE|STRONG|EM|BR|IMAGE|IMG|ANIMATE|A|#PCDATA|H7'.
  45.                   '|H6|H5|H4|H3|H2|H1',
  46.   'CAPTION'    => 'BASEFONT|FONT|U|S|I|B|TT|QUOTE|Q|CITE|CODE|STRONG|EM|BR'.
  47.                   '|IMAGE|IMG|ANIMATE|A|#PCDATA',
  48.   'CENTER'     => 'ADDRESS|HR|ISINDEX|FORM|BLOCKQUOTE|LISTING|XMP|PRE|TABLE'.
  49.                   '|CENTER|DL|MENU|DIR|OL|UL|P|BASEFONT|FONT|U|S|I|B|TT|QUOTE'.
  50.                   '|Q|CITE|CODE|STRONG|EM|BR|IMAGE|IMG|ANIMATE|A|#PCDATA|H7'.
  51.                   '|H6|H5|H4|H3|H2|H1',
  52.   'CITE'       => 'BASEFONT|FONT|U|S|I|B|TT|QUOTE|Q|CITE|CODE|STRONG|EM|BR'.
  53.                   '|IMAGE|IMG|ANIMATE|A|#PCDATA',
  54.   'CODE'       => 'BASEFONT|FONT|U|S|I|B|TT|QUOTE|Q|CITE|CODE|STRONG|EM|BR'.
  55.                   '|IMAGE|IMG|ANIMATE|A|#PCDATA',
  56.   'DD'         => 'ISINDEX|FORM|BLOCKQUOTE|LISTING|XMP|PRE|TABLE|CENTER|DL'.
  57.                   '|MENU|DIR|OL|UL|P|BASEFONT|FONT|U|S|I|B|TT|QUOTE|Q|CITE'.
  58.                   '|CODE|STRONG|EM|BR|IMAGE|IMG|ANIMATE|A|#PCDATA',
  59.   'DIR'        => 'LI',
  60.   'DL'         => 'DD|DT',
  61.   'DT'         => 'BASEFONT|FONT|U|S|I|B|TT|QUOTE|Q|CITE|CODE|STRONG|EM|BR'.
  62.                   '|IMAGE|IMG|ANIMATE|A|#PCDATA',
  63.   'EM'         => 'BASEFONT|FONT|U|S|I|B|TT|QUOTE|Q|CITE|CODE|STRONG|EM|BR'.
  64.                   '|IMAGE|IMG|ANIMATE|A|#PCDATA',
  65.   'FONT'       => 'BASEFONT|FONT|U|S|I|B|TT|QUOTE|Q|CITE|CODE|STRONG|EM|BR'.
  66.                   '|IMAGE|IMG|ANIMATE|A|#PCDATA',
  67.   'FORM'       => 'ADDRESS|HR|ISINDEX|BLOCKQUOTE|LISTING|XMP|PRE|TABLE|CENTER'.
  68.                   '|DL|MENU|DIR|OL|UL|P|BASEFONT|FONT|U|S|I|B|TT|QUOTE|Q|CITE'.
  69.                   '|CODE|STRONG|EM|BR|IMAGE|IMG|ANIMATE|A|#PCDATA|H7|H6|H5|H4'.
  70.                   '|H3|H2|H1|INPUT|SELECT|TEXTAREA',
  71.   'H1'         => 'BASEFONT|FONT|U|S|I|B|TT|QUOTE|Q|CITE|CODE|STRONG|EM|BR'.
  72.                   '|IMAGE|IMG|ANIMATE|A|#PCDATA',
  73.   'H2'         => 'BASEFONT|FONT|U|S|I|B|TT|QUOTE|Q|CITE|CODE|STRONG|EM|BR'.
  74.                   '|IMAGE|IMG|ANIMATE|A|#PCDATA',
  75.   'H3'         => 'BASEFONT|FONT|U|S|I|B|TT|QUOTE|Q|CITE|CODE|STRONG|EM|BR'.
  76.                   '|IMAGE|IMG|ANIMATE|A|#PCDATA',
  77.   'H4'         => 'BASEFONT|FONT|U|S|I|B|TT|QUOTE|Q|CITE|CODE|STRONG|EM|BR'.
  78.                   '|IMAGE|IMG|ANIMATE|A|#PCDATA',
  79.   'H5'         => 'BASEFONT|FONT|U|S|I|B|TT|QUOTE|Q|CITE|CODE|STRONG|EM|BR'.
  80.                   '|IMAGE|IMG|ANIMATE|A|#PCDATA',
  81.   'H6'         => 'BASEFONT|FONT|U|S|I|B|TT|QUOTE|Q|CITE|CODE|STRONG|EM|BR'.
  82.                   '|IMAGE|IMG|ANIMATE|A|#PCDATA',
  83.   'H7'         => 'BASEFONT|FONT|U|S|I|B|TT|QUOTE|Q|CITE|CODE|STRONG|EM|BR'.
  84.                   '|IMAGE|IMG|ANIMATE|A|#PCDATA',
  85.   'HEAD'       => 'TITLE|ISINDEX|BASE',
  86.   'HTML'       => 'HEAD|BODY|PLAINTEXT',
  87.   'I'          => 'BASEFONT|FONT|U|S|I|B|TT|QUOTE|Q|CITE|CODE|STRONG|EM|BR'.
  88.                   '|IMAGE|IMG|ANIMATE|A|#PCDATA',
  89.   'LI'         => 'ISINDEX|FORM|BLOCKQUOTE|LISTING|XMP|PRE|TABLE|CENTER|DL'.
  90.                   '|MENU|DIR|OL|UL|P|BASEFONT|FONT|U|S|I|B|TT|QUOTE|Q|CITE'.
  91.                   '|CODE|STRONG|EM|BR|IMAGE|IMG|ANIMATE|A|#PCDATA',
  92.   'LISTING'    => '%literal',
  93.   'MENU'       => 'LI',
  94.   'OL'         => 'LI',
  95.   'OPTION'     => '#PCDATA',
  96.   'PLAINTEXT'  => '%literal',
  97.   'PRE'        => 'TAB|QUOTE|Q|CITE|CODE|STRONG|EM|U|S|I|B|TT|BR|HR|A|#PCDATA',
  98.   'Q'          => 'BASEFONT|FONT|U|S|I|B|TT|QUOTE|Q|CITE|CODE|STRONG|EM|BR'.
  99.                   '|IMAGE|IMG|ANIMATE|A|#PCDATA',
  100.   'QUOTE'      => 'BASEFONT|FONT|U|S|I|B|TT|QUOTE|Q|CITE|CODE|STRONG|EM|BR'.
  101.                   '|IMAGE|IMG|ANIMATE|A|#PCDATA',
  102.   'S'          => 'BASEFONT|FONT|U|S|I|B|TT|QUOTE|Q|CITE|CODE|STRONG|EM|BR'.
  103.                   '|IMAGE|IMG|ANIMATE|A|#PCDATA',
  104.   'SELECT'     => 'OPTION',
  105.   'STRONG'     => 'BASEFONT|FONT|U|S|I|B|TT|QUOTE|Q|CITE|CODE|STRONG|EM|BR'.
  106.                   '|IMAGE|IMG|ANIMATE|A|#PCDATA',
  107.   'TABLE'      => 'CAPTION|TR',
  108.   'TD'         => 'ADDRESS|HR|ISINDEX|FORM|BLOCKQUOTE|LISTING|XMP|PRE|TABLE'.
  109.                   '|CENTER|DL|MENU|DIR|OL|UL|P|BASEFONT|FONT|U|S|I|B|TT|QUOTE'.
  110.                   '|Q|CITE|CODE|STRONG|EM|BR|IMAGE|IMG|ANIMATE|A|#PCDATA|H7'.
  111.                   '|H6|H5|H4|H3|H2|H1',
  112.   'TEXTAREA'   => '#PCDATA',
  113.   'TH'         => 'ADDRESS|HR|ISINDEX|FORM|BLOCKQUOTE|LISTING|XMP|PRE|TABLE'.
  114.                   '|CENTER|DL|MENU|DIR|OL|UL|P|BASEFONT|FONT|U|S|I|B|TT|QUOTE'.
  115.                   '|Q|CITE|CODE|STRONG|EM|BR|IMAGE|IMG|ANIMATE|A|#PCDATA|H7'.
  116.                   '|H6|H5|H4|H3|H2|H1',
  117.   'TITLE'      => '#PCDATA',
  118.   'TR'         => 'TD|TH',
  119.   'TT'         => 'BASEFONT|FONT|U|S|I|B|TT|QUOTE|Q|CITE|CODE|STRONG|EM|BR'.
  120.                   '|IMAGE|IMG|ANIMATE|A|#PCDATA',
  121.   'U'          => 'BASEFONT|FONT|U|S|I|B|TT|QUOTE|Q|CITE|CODE|STRONG|EM|BR'.
  122.                   '|IMAGE|IMG|ANIMATE|A|#PCDATA',
  123.   'UL'         => 'LI',
  124.   'XMP'        => '%literal',
  125. );
  126. %excludedElems = (
  127.   'A'        => 'A',
  128.   'DIR'      => 'P|UL|OL|DIR|MENU|DL|CENTER|TABLE|PRE|XMP|LISTING|BLOCKQUOTE'.
  129.                 '|FORM|ISINDEX',
  130.   'FORM'     => 'FORM',
  131.   'MENU'     => 'P|UL|OL|DIR|MENU|DL|CENTER|TABLE|PRE|XMP|LISTING|BLOCKQUOTE'.
  132.                 '|FORM|ISINDEX',
  133.   'SELECT'   => 'INPUT|SELECT|TEXTAREA',
  134.   'TEXTAREA' => 'INPUT|SELECT|TEXTAREA',
  135. );
  136. %includedElems = (
  137.   'FORM' => 'INPUT|SELECT|TEXTAREA',
  138. );
  139. #======= ATTRIBUTES =======
  140. %tagsAttributes = (
  141.   'A' => {
  142.     'HREF'  => '%URL',
  143.     'NAME'  => 'CDATA',
  144.     'TITLE' => 'CDATA',
  145.   },
  146.   'BASE' => {
  147.     'HREF' => '%URL',
  148.   },
  149.   'BASEFONT' => {
  150.     'SIZE' => '%fsize',
  151.   },
  152.   'BODY' => {
  153.     'ALINK'      => '%color',
  154.     'BACKGROUND' => '%URL',
  155.     'BGCOLOR'    => '%color',
  156.     'LINK'       => '%color',
  157.     'TEXT'       => '%color',
  158.     'VLINK'      => '%color',
  159.   },
  160.   'CAPTION' => {
  161.     'ALIGN' => 'TOP|BOTTOM',
  162.   },
  163.   'DL' => {
  164.     'COMPACT' => 'COMPACT',
  165.   },
  166.   'FONT' => {
  167.     'SIZE' => '%rsize',
  168.   },
  169.   'FORM' => {
  170.     'ACTION'  => 'CDATA',
  171.     'ENCTYPE' => '%Content-Type',
  172.     'METHOD'  => 'GET|POST',
  173.   },
  174.   'FRAME' => {
  175.     'SRC' => '%URL',
  176.   },
  177.   'HR' => {
  178.     'ALIGN' => 'LEFT|RIGHT|CENTER',
  179.     'SIZE'  => '%Pixels',
  180.     'WIDTH' => '%Length',
  181.   },
  182.   'IMAGE' => {
  183.     'ALIGN'  => 'TOP|MIDDLE|BOTTOM',
  184.     'ALT'    => 'CDATA',
  185.     'HSPACE' => '%Pixels',
  186.     'ISMAP'  => 'ISMAP',
  187.     'SRC'    => '%URL',
  188.     'VSPACE' => '%Pixels',
  189.   },
  190.   'IMG' => {
  191.     'ALIGN'  => 'TOP|MIDDLE|BOTTOM',
  192.     'ALT'    => 'CDATA',
  193.     'HSPACE' => '%Pixels',
  194.     'ISMAP'  => 'ISMAP',
  195.     'SRC'    => '%URL',
  196.     'VSPACE' => '%Pixels',
  197.   },
  198.   'INPUT' => {
  199.     'ALIGN'     => 'TOP|MIDDLE|BOTTOM',
  200.     'CHECKED'   => 'CHECKED',
  201.     'MAXLENGTH' => 'NUMBER',
  202.     'NAME'      => 'CDATA',
  203.     'SIZE'      => 'CDATA',
  204.     'SRC'       => '%URL',
  205.     'TYPE'      => 'TEXT|PASSWORD|CHECKBOX|RADIO|SUBMIT|RESET|IMAGE|HIDDEN',
  206.     'VALUE'     => 'CDATA',
  207.   },
  208.   'OPTION' => {
  209.     'SELECTED' => 'SELECTED',
  210.     'VALUE'    => 'CDATA',
  211.   },
  212.   'PRE' => {
  213.     'WIDTH' => 'NUMBER',
  214.   },
  215.   'SELECT' => {
  216.     'MULTIPLE' => 'MULTIPLE',
  217.     'NAME'     => 'CDATA',
  218.     'SIZE'     => 'NUMBER',
  219.   },
  220.   'TAB' => {
  221.     'ID' => 'CDATA',
  222.     'TO' => 'CDATA',
  223.   },
  224.   'TABLE' => {
  225.     'BORDER'      => '%border',
  226.     'CELLPADDING' => '%Pixels',
  227.     'CELLSPACING' => '%Pixels',
  228.   },
  229.   'TD' => {
  230.     'ALIGN'   => 'LEFT|CENTER|RIGHT',
  231.     'COLSPAN' => 'NUMBER',
  232.     'NOWRAP'  => 'NOWRAP',
  233.     'ROWSPAN' => 'NUMBER',
  234.     'VALIGN'  => 'TOP|MIDDLE|BOTTOM',
  235.   },
  236.   'TEXTAREA' => {
  237.     'COLS' => 'NUMBER',
  238.     'NAME' => 'CDATA',
  239.     'ROWS' => 'NUMBER',
  240.   },
  241.   'TH' => {
  242.     'ALIGN'   => 'LEFT|CENTER|RIGHT',
  243.     'COLSPAN' => 'NUMBER',
  244.     'NOWRAP'  => 'NOWRAP',
  245.     'ROWSPAN' => 'NUMBER',
  246.     'VALIGN'  => 'TOP|MIDDLE|BOTTOM',
  247.   },
  248. );
  249. %requiredAttrs = (
  250.   'BASE'     => 'HREF',
  251.   'IMAGE'    => 'SRC',
  252.   'IMG'      => 'SRC',
  253.   'SELECT'   => 'NAME',
  254.   'TEXTAREA' => 'NAME&ROWS&COLS',
  255. );
  256. #======= ENTITIES =======
  257. %refEntities = (
  258.   'AElig'  => 'Æ',
  259.   'Aacute' => 'Á',
  260.   'Acirc'  => 'Â',
  261.   'Agrave' => 'À',
  262.   'Aring'  => 'Å',
  263.   'Atilde' => 'Ã',
  264.   'Auml'   => 'Ä',
  265.   'Ccedil' => 'Ç',
  266.   'ETH'    => 'Ð',
  267.   'Eacute' => 'É',
  268.   'Ecirc'  => 'Ê',
  269.   'Egrave' => 'È',
  270.   'Euml'   => 'Ë',
  271.   'Iacute' => 'Í',
  272.   'Icirc'  => 'Î',
  273.   'Igrave' => 'Ì',
  274.   'Iuml'   => 'Ï',
  275.   'Ntilde' => 'Ñ',
  276.   'Oacute' => 'Ó',
  277.   'Ocirc'  => 'Ô',
  278.   'Ograve' => 'Ò',
  279.   'Oslash' => 'Ø',
  280.   'Otilde' => 'Õ',
  281.   'Ouml'   => 'Ö',
  282.   'THORN'  => 'Þ',
  283.   'Uacute' => 'Ú',
  284.   'Ucirc'  => 'Û',
  285.   'Ugrave' => 'Ù',
  286.   'Uuml'   => 'Ü',
  287.   'Yacute' => 'Ý',
  288.   'aacute' => 'á',
  289.   'acirc'  => 'â',
  290.   'acute'  => '´',
  291.   'aelig'  => 'æ',
  292.   'agrave' => 'à',
  293.   'amp'    => '&',
  294.   'aring'  => 'å',
  295.   'atilde' => 'ã',
  296.   'auml'   => 'ä',
  297.   'brvbar' => '¦',
  298.   'ccedil' => 'ç',
  299.   'cedil'  => '¸',
  300.   'cent'   => '¢',
  301.   'copy'   => '©',
  302.   'curren' => '¤',
  303.   'deg'    => '°',
  304.   'divide' => '÷',
  305.   'eacute' => 'é',
  306.   'ecirc'  => 'ê',
  307.   'egrave' => 'è',
  308.   'eth'    => 'ð',
  309.   'euml'   => 'ë',
  310.   'frac12' => '½',
  311.   'frac14' => '¼',
  312.   'frac34' => '¾',
  313.   'gt'     => '>',
  314.   'iacute' => 'í',
  315.   'icirc'  => 'î',
  316.   'iexcl'  => '¡',
  317.   'igrave' => 'ì',
  318.   'iquest' => '¿',
  319.   'iuml'   => 'ï',
  320.   'laquo'  => '«',
  321.   'lt'     => '<',
  322.   'macr'   => '¯',
  323.   'micro'  => 'µ',
  324.   'middot' => '·',
  325.   'nbsp'   => ' ',
  326.   'not'    => '¬',
  327.   'ntilde' => 'ñ',
  328.   'oacute' => 'ó',
  329.   'ocirc'  => 'ô',
  330.   'ograve' => 'ò',
  331.   'ordf'   => 'ª',
  332.   'ordm'   => 'º',
  333.   'oslash' => 'ø',
  334.   'otilde' => 'õ',
  335.   'ouml'   => 'ö',
  336.   'para'   => '¶',
  337.   'plusmn' => '±',
  338.   'pound'  => '£',
  339.   'quot'   => '"',
  340.   'raquo'  => '»',
  341.   'reg'    => '®',
  342.   'sect'   => '§',
  343.   'shy'    => '­',
  344.   'sup1'   => '¹',
  345.   'sup2'   => '²',
  346.   'sup3'   => '³',
  347.   'szlig'  => 'ß',
  348.   'thorn'  => 'þ',
  349.   'times'  => '×',
  350.   'uacute' => 'ú',
  351.   'ucirc'  => 'û',
  352.   'ugrave' => 'ù',
  353.   'uml'    => '¨',
  354.   'uuml'   => 'ü',
  355.   'yacute' => 'ý',
  356.   'yen'    => '¥',
  357.   'yuml'   => 'ÿ',
  358. );
  359. %refParams = (
  360.   'Content-Type' => 'CDATA+',
  361.   'Length'       => '\d+[%]?',
  362.   'Pixels'       => '\d+',
  363.   'URL'          => '&URL',
  364.   'fsize'        => '[1-7]',
  365.   'rsize'        => '[+|-]?[1-7]',
  366.   'border'       => '(?i)\d+|BORDER',
  367.   'color'        => '(?i)#[0-9A-F]{6}',
  368.   'literal'      => 'CDATA',
  369. );
  370.  
  371. 1;
  372.