home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 2001 December (DVD) / VPR0112A.ISO / OLS / HTMLLINT / htmllint.lzh / wilbur.rul < prev    next >
Text File  |  2000-01-31  |  21KB  |  534 lines

  1. # HTML3.2 (Wilbur)
  2.  
  3. #======= ELEMENTS =======
  4. $emptyTags = 'AREA|BASE|BASEFONT|BR|HR|IMG|INPUT|ISINDEX|LINK|META|PARAM';
  5. $pairTags = 'A|ADDRESS|APPLET|B|BIG|BLOCKQUOTE|BODY|CAPTION|CENTER|CITE|CODE'.
  6.             '|DD|DFN|DIR|DIV|DL|DT|EM|FONT|FORM|H1|H2|H3|H4|H5|H6|HEAD|HTML|I'.
  7.             '|KBD|LI|LISTING|MAP|MENU|OL|OPTION|P|PLAINTEXT|PRE|SAMP|SCRIPT'.
  8.             '|SELECT|SMALL|STRIKE|STRONG|STYLE|SUB|SUP|TABLE|TD|TEXTAREA|TH'.
  9.             '|TITLE|TR|TT|U|UL|VAR|XMP';
  10. $deprecatedTags = 'XMP|LISTING|PLAINTEXT';
  11. $omitStartTags = 'BODY|HEAD|HTML';
  12. $omitEndTags = 'BODY|DD|DT|HEAD|HTML|LI|OPTION|P|PLAINTEXT|TD|TH|TR';
  13. #$maybeEmpty = 'A|ADDRESS|APPLET|B|BIG|BLOCKQUOTE|BODY|CAPTION|CENTER|CITE'.
  14. #              '|CODE|DD|DFN|DIV|DT|EM|FONT|FORM|H1|H2|H3|H4|H5|H6|I|KBD|LI'.
  15. #              '|LISTING|MAP|OPTION|P|PLAINTEXT|PRE|SAMP|SCRIPT|SMALL|STRIKE'.
  16. #              '|STRONG|STYLE|SUB|SUP|TD|TEXTAREA|TH|TITLE|TR|TT|U|VAR|XMP';
  17. $maybeEmpty = 'LISTING|PLAINTEXT|PRE|SCRIPT|STYLE|TD|TEXTAREA|TH|XMP';
  18. %requiredTags = (
  19.   'HEAD'  => 'TITLE',
  20.   'HTML'  => 'HEAD|BODY',
  21.   'TABLE' => 'TR',
  22. );
  23. %onceonlyTags = (
  24.   'HEAD'  => 'TITLE|ISINDEX|BASE',
  25.   'HTML'  => 'HEAD|BODY|PLAINTEXT',
  26.   'TABLE' => 'CAPTION',
  27. );
  28. $sequencialTags = 'TABLE|HTML';
  29. %tagsElements = (
  30.   'A'          => 'TEXTAREA|SELECT|INPUT|MAP|SCRIPT|BR|BASEFONT|FONT|APPLET'.
  31.                   '|IMG|CITE|VAR|KBD|SAMP|CODE|DFN|STRONG|EM|SUP|SUB|SMALL'.
  32.                   '|BIG|STRIKE|U|B|I|TT|#PCDATA',
  33.   'ADDRESS'    => 'P|TEXTAREA|SELECT|INPUT|MAP|SCRIPT|BR|BASEFONT|FONT|APPLET'.
  34.                   '|IMG|A|CITE|VAR|KBD|SAMP|CODE|DFN|STRONG|EM|SUP|SUB|SMALL'.
  35.                   '|BIG|STRIKE|U|B|I|TT|#PCDATA',
  36.   'APPLET'     => 'TEXTAREA|SELECT|INPUT|MAP|SCRIPT|BR|BASEFONT|FONT|APPLET'.
  37.                   '|IMG|A|CITE|VAR|KBD|SAMP|CODE|DFN|STRONG|EM|SUP|SUB|SMALL'.
  38.                   '|BIG|STRIKE|U|B|I|TT|#PCDATA|PARAM',
  39.   'B'          => 'TEXTAREA|SELECT|INPUT|MAP|SCRIPT|BR|BASEFONT|FONT|APPLET'.
  40.                   '|IMG|A|CITE|VAR|KBD|SAMP|CODE|DFN|STRONG|EM|SUP|SUB|SMALL'.
  41.                   '|BIG|STRIKE|U|B|I|TT|#PCDATA',
  42.   'BIG'        => 'TEXTAREA|SELECT|INPUT|MAP|SCRIPT|BR|BASEFONT|FONT|APPLET'.
  43.                   '|IMG|A|CITE|VAR|KBD|SAMP|CODE|DFN|STRONG|EM|SUP|SUB|SMALL'.
  44.                   '|BIG|STRIKE|U|B|I|TT|#PCDATA',
  45.   'BLOCKQUOTE' => 'ADDRESS|TABLE|HR|ISINDEX|FORM|BLOCKQUOTE|CENTER|DIV|DL'.
  46.                   '|LISTING|XMP|PRE|MENU|DIR|OL|UL|P|TEXTAREA|SELECT|INPUT'.
  47.                   '|MAP|SCRIPT|BR|BASEFONT|FONT|APPLET|IMG|A|CITE|VAR|KBD'.
  48.                   '|SAMP|CODE|DFN|STRONG|EM|SUP|SUB|SMALL|BIG|STRIKE|U|B|I|TT'.
  49.                   '|#PCDATA|H6|H5|H4|H3|H2|H1',
  50.   'BODY'       => 'ADDRESS|TABLE|HR|ISINDEX|FORM|BLOCKQUOTE|CENTER|DIV|DL'.
  51.                   '|LISTING|XMP|PRE|MENU|DIR|OL|UL|P|TEXTAREA|SELECT|INPUT'.
  52.                   '|MAP|SCRIPT|BR|BASEFONT|FONT|APPLET|IMG|A|CITE|VAR|KBD'.
  53.                   '|SAMP|CODE|DFN|STRONG|EM|SUP|SUB|SMALL|BIG|STRIKE|U|B|I|TT'.
  54.                   '|#PCDATA|H6|H5|H4|H3|H2|H1',
  55.   'CAPTION'    => 'TEXTAREA|SELECT|INPUT|MAP|SCRIPT|BR|BASEFONT|FONT|APPLET'.
  56.                   '|IMG|A|CITE|VAR|KBD|SAMP|CODE|DFN|STRONG|EM|SUP|SUB|SMALL'.
  57.                   '|BIG|STRIKE|U|B|I|TT|#PCDATA',
  58.   'CENTER'     => 'ADDRESS|TABLE|HR|ISINDEX|FORM|BLOCKQUOTE|CENTER|DIV|DL'.
  59.                   '|LISTING|XMP|PRE|MENU|DIR|OL|UL|P|TEXTAREA|SELECT|INPUT'.
  60.                   '|MAP|SCRIPT|BR|BASEFONT|FONT|APPLET|IMG|A|CITE|VAR|KBD'.
  61.                   '|SAMP|CODE|DFN|STRONG|EM|SUP|SUB|SMALL|BIG|STRIKE|U|B|I|TT'.
  62.                   '|#PCDATA|H6|H5|H4|H3|H2|H1',
  63.   'CITE'       => 'TEXTAREA|SELECT|INPUT|MAP|SCRIPT|BR|BASEFONT|FONT|APPLET'.
  64.                   '|IMG|A|CITE|VAR|KBD|SAMP|CODE|DFN|STRONG|EM|SUP|SUB|SMALL'.
  65.                   '|BIG|STRIKE|U|B|I|TT|#PCDATA',
  66.   'CODE'       => 'TEXTAREA|SELECT|INPUT|MAP|SCRIPT|BR|BASEFONT|FONT|APPLET'.
  67.                   '|IMG|A|CITE|VAR|KBD|SAMP|CODE|DFN|STRONG|EM|SUP|SUB|SMALL'.
  68.                   '|BIG|STRIKE|U|B|I|TT|#PCDATA',
  69.   'DD'         => 'TABLE|HR|ISINDEX|FORM|BLOCKQUOTE|CENTER|DIV|DL|LISTING|XMP'.
  70.                   '|PRE|MENU|DIR|OL|UL|P|TEXTAREA|SELECT|INPUT|MAP|SCRIPT|BR'.
  71.                   '|BASEFONT|FONT|APPLET|IMG|A|CITE|VAR|KBD|SAMP|CODE|DFN'.
  72.                   '|STRONG|EM|SUP|SUB|SMALL|BIG|STRIKE|U|B|I|TT|#PCDATA',
  73.   'DFN'        => 'TEXTAREA|SELECT|INPUT|MAP|SCRIPT|BR|BASEFONT|FONT|APPLET'.
  74.                   '|IMG|A|CITE|VAR|KBD|SAMP|CODE|DFN|STRONG|EM|SUP|SUB|SMALL'.
  75.                   '|BIG|STRIKE|U|B|I|TT|#PCDATA',
  76.   'DIR'        => 'LI',
  77.   'DIV'        => 'ADDRESS|TABLE|HR|ISINDEX|FORM|BLOCKQUOTE|CENTER|DIV|DL'.
  78.                   '|LISTING|XMP|PRE|MENU|DIR|OL|UL|P|TEXTAREA|SELECT|INPUT'.
  79.                   '|MAP|SCRIPT|BR|BASEFONT|FONT|APPLET|IMG|A|CITE|VAR|KBD'.
  80.                   '|SAMP|CODE|DFN|STRONG|EM|SUP|SUB|SMALL|BIG|STRIKE|U|B|I|TT'.
  81.                   '|#PCDATA|H6|H5|H4|H3|H2|H1',
  82.   'DL'         => 'DD|DT',
  83.   'DT'         => 'TEXTAREA|SELECT|INPUT|MAP|SCRIPT|BR|BASEFONT|FONT|APPLET'.
  84.                   '|IMG|A|CITE|VAR|KBD|SAMP|CODE|DFN|STRONG|EM|SUP|SUB|SMALL'.
  85.                   '|BIG|STRIKE|U|B|I|TT|#PCDATA',
  86.   'EM'         => 'TEXTAREA|SELECT|INPUT|MAP|SCRIPT|BR|BASEFONT|FONT|APPLET'.
  87.                   '|IMG|A|CITE|VAR|KBD|SAMP|CODE|DFN|STRONG|EM|SUP|SUB|SMALL'.
  88.                   '|BIG|STRIKE|U|B|I|TT|#PCDATA',
  89.   'FONT'       => 'TEXTAREA|SELECT|INPUT|MAP|SCRIPT|BR|BASEFONT|FONT|APPLET'.
  90.                   '|IMG|A|CITE|VAR|KBD|SAMP|CODE|DFN|STRONG|EM|SUP|SUB|SMALL'.
  91.                   '|BIG|STRIKE|U|B|I|TT|#PCDATA',
  92.   'FORM'       => 'ADDRESS|TABLE|HR|ISINDEX|BLOCKQUOTE|CENTER|DIV|DL|LISTING'.
  93.                   '|XMP|PRE|MENU|DIR|OL|UL|P|TEXTAREA|SELECT|INPUT|MAP|SCRIPT'.
  94.                   '|BR|BASEFONT|FONT|APPLET|IMG|A|CITE|VAR|KBD|SAMP|CODE|DFN'.
  95.                   '|STRONG|EM|SUP|SUB|SMALL|BIG|STRIKE|U|B|I|TT|#PCDATA|H6|H5'.
  96.                   '|H4|H3|H2|H1',
  97.   'H1'         => 'TEXTAREA|SELECT|INPUT|MAP|SCRIPT|BR|BASEFONT|FONT|APPLET'.
  98.                   '|IMG|A|CITE|VAR|KBD|SAMP|CODE|DFN|STRONG|EM|SUP|SUB|SMALL'.
  99.                   '|BIG|STRIKE|U|B|I|TT|#PCDATA',
  100.   'H2'         => 'TEXTAREA|SELECT|INPUT|MAP|SCRIPT|BR|BASEFONT|FONT|APPLET'.
  101.                   '|IMG|A|CITE|VAR|KBD|SAMP|CODE|DFN|STRONG|EM|SUP|SUB|SMALL'.
  102.                   '|BIG|STRIKE|U|B|I|TT|#PCDATA',
  103.   'H3'         => 'TEXTAREA|SELECT|INPUT|MAP|SCRIPT|BR|BASEFONT|FONT|APPLET'.
  104.                   '|IMG|A|CITE|VAR|KBD|SAMP|CODE|DFN|STRONG|EM|SUP|SUB|SMALL'.
  105.                   '|BIG|STRIKE|U|B|I|TT|#PCDATA',
  106.   'H4'         => 'TEXTAREA|SELECT|INPUT|MAP|SCRIPT|BR|BASEFONT|FONT|APPLET'.
  107.                   '|IMG|A|CITE|VAR|KBD|SAMP|CODE|DFN|STRONG|EM|SUP|SUB|SMALL'.
  108.                   '|BIG|STRIKE|U|B|I|TT|#PCDATA',
  109.   'H5'         => 'TEXTAREA|SELECT|INPUT|MAP|SCRIPT|BR|BASEFONT|FONT|APPLET'.
  110.                   '|IMG|A|CITE|VAR|KBD|SAMP|CODE|DFN|STRONG|EM|SUP|SUB|SMALL'.
  111.                   '|BIG|STRIKE|U|B|I|TT|#PCDATA',
  112.   'H6'         => 'TEXTAREA|SELECT|INPUT|MAP|SCRIPT|BR|BASEFONT|FONT|APPLET'.
  113.                   '|IMG|A|CITE|VAR|KBD|SAMP|CODE|DFN|STRONG|EM|SUP|SUB|SMALL'.
  114.                   '|BIG|STRIKE|U|B|I|TT|#PCDATA',
  115.   'HEAD'       => 'TITLE|ISINDEX|BASE|SCRIPT|STYLE|META|LINK',
  116.   'HTML'       => 'HEAD|BODY|PLAINTEXT',
  117.   'I'          => 'TEXTAREA|SELECT|INPUT|MAP|SCRIPT|BR|BASEFONT|FONT|APPLET'.
  118.                   '|IMG|A|CITE|VAR|KBD|SAMP|CODE|DFN|STRONG|EM|SUP|SUB|SMALL'.
  119.                   '|BIG|STRIKE|U|B|I|TT|#PCDATA',
  120.   'KBD'        => 'TEXTAREA|SELECT|INPUT|MAP|SCRIPT|BR|BASEFONT|FONT|APPLET'.
  121.                   '|IMG|A|CITE|VAR|KBD|SAMP|CODE|DFN|STRONG|EM|SUP|SUB|SMALL'.
  122.                   '|BIG|STRIKE|U|B|I|TT|#PCDATA',
  123.   'LI'         => 'TABLE|HR|ISINDEX|FORM|BLOCKQUOTE|CENTER|DIV|DL|LISTING|XMP'.
  124.                   '|PRE|MENU|DIR|OL|UL|P|TEXTAREA|SELECT|INPUT|MAP|SCRIPT|BR'.
  125.                   '|BASEFONT|FONT|APPLET|IMG|A|CITE|VAR|KBD|SAMP|CODE|DFN'.
  126.                   '|STRONG|EM|SUP|SUB|SMALL|BIG|STRIKE|U|B|I|TT|#PCDATA',
  127.   'LISTING'    => '%literal',
  128.   'MAP'        => 'AREA',
  129.   'MENU'       => 'LI',
  130.   'OL'         => 'LI',
  131.   'OPTION'     => '#PCDATA',
  132.   'P'          => 'TEXTAREA|SELECT|INPUT|MAP|SCRIPT|BR|BASEFONT|FONT|APPLET'.
  133.                   '|IMG|A|CITE|VAR|KBD|SAMP|CODE|DFN|STRONG|EM|SUP|SUB|SMALL'.
  134.                   '|BIG|STRIKE|U|B|I|TT|#PCDATA',
  135.   'PLAINTEXT'  => '%literal',
  136.   'PRE'        => 'TEXTAREA|SELECT|INPUT|MAP|SCRIPT|BR|BASEFONT|APPLET|A|CITE'.
  137.                   '|VAR|KBD|SAMP|CODE|DFN|STRONG|EM|STRIKE|U|B|I|TT|#PCDATA',
  138.   'SAMP'       => 'TEXTAREA|SELECT|INPUT|MAP|SCRIPT|BR|BASEFONT|FONT|APPLET'.
  139.                   '|IMG|A|CITE|VAR|KBD|SAMP|CODE|DFN|STRONG|EM|SUP|SUB|SMALL'.
  140.                   '|BIG|STRIKE|U|B|I|TT|#PCDATA',
  141.   'SCRIPT'     => 'CDATA',
  142.   'SELECT'     => 'OPTION',
  143.   'SMALL'      => 'TEXTAREA|SELECT|INPUT|MAP|SCRIPT|BR|BASEFONT|FONT|APPLET'.
  144.                   '|IMG|A|CITE|VAR|KBD|SAMP|CODE|DFN|STRONG|EM|SUP|SUB|SMALL'.
  145.                   '|BIG|STRIKE|U|B|I|TT|#PCDATA',
  146.   'STRIKE'     => 'TEXTAREA|SELECT|INPUT|MAP|SCRIPT|BR|BASEFONT|FONT|APPLET'.
  147.                   '|IMG|A|CITE|VAR|KBD|SAMP|CODE|DFN|STRONG|EM|SUP|SUB|SMALL'.
  148.                   '|BIG|STRIKE|U|B|I|TT|#PCDATA',
  149.   'STRONG'     => 'TEXTAREA|SELECT|INPUT|MAP|SCRIPT|BR|BASEFONT|FONT|APPLET'.
  150.                   '|IMG|A|CITE|VAR|KBD|SAMP|CODE|DFN|STRONG|EM|SUP|SUB|SMALL'.
  151.                   '|BIG|STRIKE|U|B|I|TT|#PCDATA',
  152.   'STYLE'      => 'CDATA',
  153.   'SUB'        => 'TEXTAREA|SELECT|INPUT|MAP|SCRIPT|BR|BASEFONT|FONT|APPLET'.
  154.                   '|IMG|A|CITE|VAR|KBD|SAMP|CODE|DFN|STRONG|EM|SUP|SUB|SMALL'.
  155.                   '|BIG|STRIKE|U|B|I|TT|#PCDATA',
  156.   'SUP'        => 'TEXTAREA|SELECT|INPUT|MAP|SCRIPT|BR|BASEFONT|FONT|APPLET'.
  157.                   '|IMG|A|CITE|VAR|KBD|SAMP|CODE|DFN|STRONG|EM|SUP|SUB|SMALL'.
  158.                   '|BIG|STRIKE|U|B|I|TT|#PCDATA',
  159.   'TABLE'      => 'CAPTION|TR',
  160.   'TD'         => 'ADDRESS|TABLE|HR|ISINDEX|FORM|BLOCKQUOTE|CENTER|DIV|DL'.
  161.                   '|LISTING|XMP|PRE|MENU|DIR|OL|UL|P|TEXTAREA|SELECT|INPUT'.
  162.                   '|MAP|SCRIPT|BR|BASEFONT|FONT|APPLET|IMG|A|CITE|VAR|KBD'.
  163.                   '|SAMP|CODE|DFN|STRONG|EM|SUP|SUB|SMALL|BIG|STRIKE|U|B|I|TT'.
  164.                   '|#PCDATA|H6|H5|H4|H3|H2|H1',
  165.   'TEXTAREA'   => '#PCDATA',
  166.   'TH'         => 'ADDRESS|TABLE|HR|ISINDEX|FORM|BLOCKQUOTE|CENTER|DIV|DL'.
  167.                   '|LISTING|XMP|PRE|MENU|DIR|OL|UL|P|TEXTAREA|SELECT|INPUT'.
  168.                   '|MAP|SCRIPT|BR|BASEFONT|FONT|APPLET|IMG|A|CITE|VAR|KBD'.
  169.                   '|SAMP|CODE|DFN|STRONG|EM|SUP|SUB|SMALL|BIG|STRIKE|U|B|I|TT'.
  170.                   '|#PCDATA|H6|H5|H4|H3|H2|H1',
  171.   'TITLE'      => '#PCDATA',
  172.   'TR'         => 'TD|TH',
  173.   'TT'         => 'TEXTAREA|SELECT|INPUT|MAP|SCRIPT|BR|BASEFONT|FONT|APPLET'.
  174.                   '|IMG|A|CITE|VAR|KBD|SAMP|CODE|DFN|STRONG|EM|SUP|SUB|SMALL'.
  175.                   '|BIG|STRIKE|U|B|I|TT|#PCDATA',
  176.   'U'          => 'TEXTAREA|SELECT|INPUT|MAP|SCRIPT|BR|BASEFONT|FONT|APPLET'.
  177.                   '|IMG|A|CITE|VAR|KBD|SAMP|CODE|DFN|STRONG|EM|SUP|SUB|SMALL'.
  178.                   '|BIG|STRIKE|U|B|I|TT|#PCDATA',
  179.   'UL'         => 'LI',
  180.   'VAR'        => 'TEXTAREA|SELECT|INPUT|MAP|SCRIPT|BR|BASEFONT|FONT|APPLET'.
  181.                   '|IMG|A|CITE|VAR|KBD|SAMP|CODE|DFN|STRONG|EM|SUP|SUB|SMALL'.
  182.                   '|BIG|STRIKE|U|B|I|TT|#PCDATA',
  183.   'XMP'        => '%literal',
  184. );
  185. %excludedElems = (
  186.   'A'     => 'A',
  187.   'DIR'   => 'P|UL|OL|DIR|MENU|PRE|XMP|LISTING|DL|DIV|CENTER|BLOCKQUOTE|FORM'.
  188.              '|ISINDEX|HR|TABLE',
  189.   'FORM'  => 'FORM',
  190.   'MENU'  => 'P|UL|OL|DIR|MENU|PRE|XMP|LISTING|DL|DIV|CENTER|BLOCKQUOTE|FORM'.
  191.              '|ISINDEX|HR|TABLE',
  192.   'PRE'   => 'IMG|BIG|SMALL|SUB|SUP|FONT',
  193.   'TITLE' => 'SCRIPT|STYLE|META|LINK',
  194. );
  195. %includedElems = (
  196.   'HEAD' => 'SCRIPT|STYLE|META|LINK',
  197. );
  198. #======= ATTRIBUTES =======
  199. %tagsAttributes = (
  200.   'A' => {
  201.     'HREF'  => '%URL',
  202.     'NAME'  => '%Name', # org:CDATA
  203.     'REL'   => 'CDATA',
  204.     'REV'   => 'CDATA',
  205.     'TITLE' => 'CDATA',
  206.   },
  207.   'APPLET' => {
  208.     'ALIGN'    => 'TOP|MIDDLE|BOTTOM|LEFT|RIGHT',
  209.     'ALT'      => 'CDATA',
  210.     'CODE'     => 'CDATA',
  211.     'CODEBASE' => '%URL',
  212.     'HEIGHT'   => '%Pixels',
  213.     'HSPACE'   => '%Pixels',
  214.     'NAME'     => '%Name', # org:CDATA
  215.     'VSPACE'   => '%Pixels',
  216.     'WIDTH'    => '%Pixels',
  217.   },
  218.   'AREA' => {
  219.     'ALT'    => 'CDATA',
  220.     'COORDS' => '%COORDS',
  221.     'HREF'   => '%URL',
  222.     'NOHREF' => 'NOHREF',
  223.     'SHAPE'  => 'RECT|CIRCLE|POLY',
  224.   },
  225.   'BASE' => {
  226.     'HREF' => '%URL',
  227.   },
  228.   'BASEFONT' => {
  229.     'SIZE' => '%fsize', # org:CDATA
  230.   },
  231.   'BODY' => {
  232.     'ALINK'      => '%color',
  233.     'BACKGROUND' => '%URL',
  234.     'BGCOLOR'    => '%color',
  235.     'LINK'       => '%color',
  236.     'TEXT'       => '%color',
  237.     'VLINK'      => '%color',
  238.   },
  239.   'BR' => {
  240.     'CLEAR' => 'LEFT|ALL|RIGHT|NONE',
  241.   },
  242.   'CAPTION' => {
  243.     'ALIGN' => 'TOP|BOTTOM',
  244.   },
  245.   'DIR' => {
  246.     'COMPACT' => 'COMPACT',
  247.   },
  248.   'DIV' => {
  249.     'ALIGN' => 'LEFT|CENTER|RIGHT',
  250.   },
  251.   'DL' => {
  252.     'COMPACT' => 'COMPACT',
  253.   },
  254.   'FONT' => {
  255.     'COLOR' => '%color', # org:CDATA
  256.     'SIZE'  => '%rsize', # org:CDATA
  257.   },
  258.   'FORM' => {
  259.     'ACTION'  => '%URL',
  260.     'ENCTYPE' => '%Content-Type',
  261.     'METHOD'  => 'GET|POST',
  262.   },
  263.   'H1' => {
  264.     'ALIGN' => 'LEFT|CENTER|RIGHT',
  265.   },
  266.   'H2' => {
  267.     'ALIGN' => 'LEFT|CENTER|RIGHT',
  268.   },
  269.   'H3' => {
  270.     'ALIGN' => 'LEFT|CENTER|RIGHT',
  271.   },
  272.   'H4' => {
  273.     'ALIGN' => 'LEFT|CENTER|RIGHT',
  274.   },
  275.   'H5' => {
  276.     'ALIGN' => 'LEFT|CENTER|RIGHT',
  277.   },
  278.   'H6' => {
  279.     'ALIGN' => 'LEFT|CENTER|RIGHT',
  280.   },
  281.   'HR' => {
  282.     'ALIGN'   => 'LEFT|RIGHT|CENTER',
  283.     'NOSHADE' => 'NOSHADE',
  284.     'SIZE'    => '%Pixels',
  285.     'WIDTH'   => '%Length',
  286.   },
  287.   'HTML' => {
  288.     'VERSION' => 'CDATA=-//W3C//DTD HTML 3.2 Final//EN',
  289.   },
  290.   'IMG' => {
  291.     'ALIGN'  => 'TOP|MIDDLE|BOTTOM|LEFT|RIGHT',
  292.     'ALT'    => 'CDATA',
  293.     'BORDER' => '%Pixels',
  294.     'HEIGHT' => '%Length', # org:%Pixels
  295.     'HSPACE' => '%Pixels',
  296.     'ISMAP'  => 'ISMAP',
  297.     'SRC'    => '%URL',
  298.     'USEMAP' => '%URL',
  299.     'VSPACE' => '%Pixels',
  300.     'WIDTH'  => '%Length', # org:%Pixels
  301.   },
  302.   'INPUT' => {
  303.     'ALIGN'     => 'TOP|MIDDLE|BOTTOM|LEFT|RIGHT',
  304.     'CHECKED'   => 'CHECKED',
  305.     'MAXLENGTH' => 'NUMBER',
  306.     'NAME'      => '%Name', # org:CDATA
  307.     'SIZE'      => 'CDATA',
  308.     'SRC'       => '%URL',
  309.     'TYPE'      => 'TEXT|PASSWORD|CHECKBOX|RADIO|SUBMIT|RESET|FILE|HIDDEN'.
  310.                    '|IMAGE',
  311.     'VALUE'     => 'CDATA',
  312.   },
  313.   'ISINDEX' => {
  314.     'PROMPT' => 'CDATA',
  315.   },
  316.   'LI' => {
  317.     'TYPE'  => '%LIStyle',
  318.     'VALUE' => 'NUMBER',
  319.   },
  320.   'LINK' => {
  321.     'HREF'  => '%URL',
  322.     'REL'   => '%Types',
  323.     'REV'   => '%Types',
  324.     'TITLE' => 'CDATA',
  325.   },
  326.   'MAP' => {
  327.     'NAME' => '%Name', # org:CDATA
  328.   },
  329.   'MENU' => {
  330.     'COMPACT' => 'COMPACT',
  331.   },
  332.   'META' => {
  333.     'CONTENT'    => 'CDATA',
  334.     'HTTP-EQUIV' => 'NAME',
  335.     'NAME'       => '%Name', # org:NAME
  336.   },
  337.   'OL' => {
  338.     'COMPACT' => 'COMPACT',
  339.     'START'   => 'NUMBER',
  340.     'TYPE'    => '%OLStyle',
  341.   },
  342.   'OPTION' => {
  343.     'SELECTED' => 'SELECTED',
  344.     'VALUE'    => 'CDATA',
  345.   },
  346.   'P' => {
  347.     'ALIGN' => 'LEFT|CENTER|RIGHT',
  348.   },
  349.   'PARAM' => {
  350.     'NAME'  => 'NMTOKEN',
  351.     'VALUE' => 'CDATA',
  352.   },
  353.   'PRE' => {
  354.     'WIDTH' => 'NUMBER',
  355.   },
  356.   'SELECT' => {
  357.     'MULTIPLE' => 'MULTIPLE',
  358.     'NAME'     => '%Name', # org:CDATA
  359.     'SIZE'     => 'NUMBER',
  360.   },
  361.   'TABLE' => {
  362.     'ALIGN'       => 'LEFT|CENTER|RIGHT',
  363.     'BORDER'      => '%border', # org:%Pixels
  364.     'CELLPADDING' => '%Pixels',
  365.     'CELLSPACING' => '%Pixels',
  366.     'WIDTH'       => '%Length',
  367.   },
  368.   'TD' => {
  369.     'ALIGN'   => 'LEFT|CENTER|RIGHT',
  370.     'COLSPAN' => 'NUMBER',
  371.     'HEIGHT'  => '%Pixels',
  372.     'NOWRAP'  => 'NOWRAP',
  373.     'ROWSPAN' => 'NUMBER',
  374.     'VALIGN'  => 'TOP|MIDDLE|BOTTOM',
  375.     'WIDTH'   => '%Length', # org:Pixels
  376.   },
  377.   'TEXTAREA' => {
  378.     'COLS' => 'NUMBER',
  379.     'NAME' => '%Name', # org:CDATA
  380.     'ROWS' => 'NUMBER',
  381.   },
  382.   'TH' => {
  383.     'ALIGN'   => 'LEFT|CENTER|RIGHT',
  384.     'COLSPAN' => 'NUMBER',
  385.     'HEIGHT'  => '%Pixels',
  386.     'NOWRAP'  => 'NOWRAP',
  387.     'ROWSPAN' => 'NUMBER',
  388.     'VALIGN'  => 'TOP|MIDDLE|BOTTOM',
  389.     'WIDTH'   => '%Length', # org:Pixels
  390.   },
  391.   'TR' => {
  392.     'ALIGN'  => 'LEFT|CENTER|RIGHT',
  393.     'VALIGN' => 'TOP|MIDDLE|BOTTOM',
  394.   },
  395.   'UL' => {
  396.     'COMPACT' => 'COMPACT',
  397.     'TYPE'    => 'DISC|SQUARE|CIRCLE',
  398.   },
  399. );
  400. %requiredAttrs = (
  401.   'A'        => 'NAME|HREF',
  402.   'APPLET'   => 'CODE&WIDTH&HEIGHT',
  403.   'AREA'     => 'ALT',
  404.   'BASE'     => 'HREF',
  405.   'IMG'      => 'SRC',
  406.   'META'     => 'CONTENT',
  407.   'PARAM'    => 'NAME',
  408.   'SELECT'   => 'NAME',
  409.   'TEXTAREA' => 'NAME&ROWS&COLS',
  410. );
  411. #======= ENTITIES =======
  412. %refEntities = (
  413.   'AElig'  => 'Æ',
  414.   'Aacute' => 'Á',
  415.   'Acirc'  => 'Â',
  416.   'Agrave' => 'À',
  417.   'Aring'  => 'Å',
  418.   'Atilde' => 'Ã',
  419.   'Auml'   => 'Ä',
  420.   'Ccedil' => 'Ç',
  421.   'ETH'    => 'Ð',
  422.   'Eacute' => 'É',
  423.   'Ecirc'  => 'Ê',
  424.   'Egrave' => 'È',
  425.   'Euml'   => 'Ë',
  426.   'Iacute' => 'Í',
  427.   'Icirc'  => 'Î',
  428.   'Igrave' => 'Ì',
  429.   'Iuml'   => 'Ï',
  430.   'Ntilde' => 'Ñ',
  431.   'Oacute' => 'Ó',
  432.   'Ocirc'  => 'Ô',
  433.   'Ograve' => 'Ò',
  434.   'Oslash' => 'Ø',
  435.   'Otilde' => 'Õ',
  436.   'Ouml'   => 'Ö',
  437.   'THORN'  => 'Þ',
  438.   'Uacute' => 'Ú',
  439.   'Ucirc'  => 'Û',
  440.   'Ugrave' => 'Ù',
  441.   'Uuml'   => 'Ü',
  442.   'Yacute' => 'Ý',
  443.   'aacute' => 'á',
  444.   'acirc'  => 'â',
  445.   'acute'  => '´',
  446.   'aelig'  => 'æ',
  447.   'agrave' => 'à',
  448.   'amp'    => '&',
  449.   'aring'  => 'å',
  450.   'atilde' => 'ã',
  451.   'auml'   => 'ä',
  452.   'brvbar' => '¦',
  453.   'ccedil' => 'ç',
  454.   'cedil'  => '¸',
  455.   'cent'   => '¢',
  456.   'copy'   => '©',
  457.   'curren' => '¤',
  458.   'deg'    => '°',
  459.   'divide' => '÷',
  460.   'eacute' => 'é',
  461.   'ecirc'  => 'ê',
  462.   'egrave' => 'è',
  463.   'eth'    => 'ð',
  464.   'euml'   => 'ë',
  465.   'frac12' => '½',
  466.   'frac14' => '¼',
  467.   'frac34' => '¾',
  468.   'gt'     => '>',
  469.   'iacute' => 'í',
  470.   'icirc'  => 'î',
  471.   'iexcl'  => '¡',
  472.   'igrave' => 'ì',
  473.   'iquest' => '¿',
  474.   'iuml'   => 'ï',
  475.   'laquo'  => '«',
  476.   'lt'     => '<',
  477.   'macr'   => '¯',
  478.   'micro'  => 'µ',
  479.   'middot' => '·',
  480.   'nbsp'   => ' ',
  481.   'not'    => '¬',
  482.   'ntilde' => 'ñ',
  483.   'oacute' => 'ó',
  484.   'ocirc'  => 'ô',
  485.   'ograve' => 'ò',
  486.   'ordf'   => 'ª',
  487.   'ordm'   => 'º',
  488.   'oslash' => 'ø',
  489.   'otilde' => 'õ',
  490.   'ouml'   => 'ö',
  491.   'para'   => '¶',
  492.   'plusmn' => '±',
  493.   'pound'  => '£',
  494.   'quot'   => '"',
  495.   'raquo'  => '»',
  496.   'reg'    => '®',
  497.   'sect'   => '§',
  498.   'shy'    => '­',
  499.   'sup1'   => '¹',
  500.   'sup2'   => '²',
  501.   'sup3'   => '³',
  502.   'szlig'  => 'ß',
  503.   'thorn'  => 'þ',
  504.   'times'  => '×',
  505.   'uacute' => 'ú',
  506.   'ucirc'  => 'û',
  507.   'ugrave' => 'ù',
  508.   'uml'    => '¨',
  509.   'uuml'   => 'ü',
  510.   'yacute' => 'ý',
  511.   'yen'    => '¥',
  512.   'yuml'   => 'ÿ',
  513. );
  514. %refParams = (
  515.   'COORDS'    => '(?:\d+(?:\s*,\s*|\s+))+\d+',  # comma separated list of numbers
  516.   'Content-Type' => 'CDATA+',         # meaning a MIME content type, as per RFC1521
  517.   'LIStyle'      => '&LIStyle',       # constrained to: "(%ULStyle|%OLStyle)"
  518.   'OLStyle'      => '&OLStyle',       # constrained to: [1|a|A|i|I]
  519.   'Length'       => '\d+[%]?',        # nn for pixels or nn% for percentage length
  520.   'Pixels'       => '\d+',            # integer representing length in pixels
  521.   'Types'        => 'CDATA+',
  522.   'URL'          => '&URL',           # See RFC1808 (June 95) and RFC1738 (Dec 94)
  523.   'color'        => '(?i)#[0-9A-F]{6}'.   # #RRGGBB in hex
  524.                     '|aqua|black|blue|fuchsia|gray|green|lime|maroon'.
  525.                     '|navy|olive|purple|red|silver|teal|white|yellow',
  526.   'Name'         => 'CDATA+',
  527.   'literal'      => 'CDATA',
  528.   'fsize'        => '[1-7]',          # (added)
  529.   'rsize'        => '[+|-]?[1-7]',    # (added)
  530.   'border'       => '(?i)\d+|BORDER', # (added)
  531. );
  532.  
  533. 1;
  534.