home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 2001 December (DVD) / VPR0112A.ISO / OLS / HTMLLINT / htmllint.lzh / html40-mobile.rul < prev    next >
Text File  |  1999-11-06  |  25KB  |  866 lines

  1. # HTML4.0 Mobile
  2.  
  3. #======= ELEMENTS =======
  4. $emptyTags = 'AREA|BR|HR|IMG|INPUT|LINK|META|PARAM';
  5. $pairTags = 'A|ABBR|ACRONYM|ADDRESS|BDO|BLOCKQUOTE|BODY|BUTTON|CITE|CODE|DD'.
  6.             '|DFN|DIV|DL|DT|EM|FIELDSET|FORM|H1|H2|H3|H4|H5|H6|HEAD|HTML|KBD'.
  7.             '|LABEL|LEGEND|LI|MAP|OBJECT|OL|OPTGROUP|OPTION|P|PRE|Q|SAMP'.
  8.             '|SELECT|SPAN|STRONG|STYLE|TEXTAREA|TITLE|UL|VAR';
  9. $deprecatedTags = '';
  10. $omitStartTags = '';
  11. $omitEndTags = 'BODY|DD|DT|HEAD|LI|OPTION|P';
  12. #$maybeEmpty = 'A|LEGEND|OBJECT|OPTION|STYLE|TEXTAREA|TITLE';
  13. $maybeEmpty = 'OBJECT|STYLE|TEXTAREA';
  14. %requiredTags = (
  15.   'FIELDSET' => 'LEGEND|#000',
  16.   'HEAD'     => 'TITLE',
  17.   'HTML'     => 'HEAD|BODY',
  18. );
  19. %onceonlyTags = (
  20.   'FIELDSET' => 'LEGEND',
  21.   'HEAD'     => 'TITLE',
  22.   'HTML'     => 'HEAD|BODY',
  23. );
  24. $sequencialTags = 'FIELDSET|HTML';
  25. %tagsElements = (
  26.   '#000'       => 'ADDRESS|FIELDSET|BUTTON|LABEL|TEXTAREA|SELECT|INPUT|BDO'.
  27.                   '|SPAN|Q|MAP|BR|OBJECT|IMG|A|ACRONYM|ABBR|CITE|VAR|KBD|SAMP'.
  28.                   '|CODE|DFN|STRONG|EM|#PCDATA|HR|FORM|BLOCKQUOTE|DIV|DL|PRE'.
  29.                   '|OL|UL|P',
  30.   'A'          => 'BDO|SPAN|Q|MAP|BR|OBJECT|IMG|ACRONYM|ABBR|CITE|VAR|KBD'.
  31.                   '|SAMP|CODE|DFN|STRONG|EM|#PCDATA',
  32.   'ABBR'       => 'BDO|SPAN|Q|MAP|BR|OBJECT|IMG|A|ACRONYM|ABBR|CITE|VAR|KBD'.
  33.                   '|SAMP|CODE|DFN|STRONG|EM|#PCDATA',
  34.   'ACRONYM'    => 'BDO|SPAN|Q|MAP|BR|OBJECT|IMG|A|ACRONYM|ABBR|CITE|VAR|KBD'.
  35.                   '|SAMP|CODE|DFN|STRONG|EM|#PCDATA',
  36.   'ADDRESS'    => 'BDO|SPAN|Q|BR|OBJECT|A|ACRONYM|ABBR|CITE|VAR|KBD|SAMP|CODE'.
  37.                   '|DFN|STRONG|EM|#PCDATA',
  38.   'BDO'        => 'BDO|SPAN|Q|MAP|BR|OBJECT|IMG|A|ACRONYM|ABBR|CITE|VAR|KBD'.
  39.                   '|SAMP|CODE|DFN|STRONG|EM|#PCDATA',
  40.   'BLOCKQUOTE' => 'HR|FORM|BLOCKQUOTE|DIV|DL|PRE|OL|UL|P',
  41.   'BODY'       => 'H6|H5|H4|H3|H2|H1|HR|FORM|BLOCKQUOTE|DIV|DL|PRE|OL|UL|P',
  42.   'BUTTON'     => 'BDO|SPAN|Q|MAP|BR|OBJECT|IMG|ACRONYM|ABBR|CITE|VAR|KBD'.
  43.                   '|SAMP|CODE|DFN|STRONG|EM|#PCDATA',
  44.   'CITE'       => 'BDO|SPAN|Q|MAP|BR|OBJECT|IMG|A|ACRONYM|ABBR|CITE|VAR|KBD'.
  45.                   '|SAMP|CODE|DFN|STRONG|EM|#PCDATA',
  46.   'CODE'       => 'BDO|SPAN|Q|MAP|BR|OBJECT|IMG|A|ACRONYM|ABBR|CITE|VAR|KBD'.
  47.                   '|SAMP|CODE|DFN|STRONG|EM|#PCDATA',
  48.   'DD'         => 'BDO|SPAN|Q|MAP|BR|OBJECT|IMG|A|ACRONYM|ABBR|CITE|VAR|KBD'.
  49.                   '|SAMP|CODE|DFN|STRONG|EM|#PCDATA|HR|FORM|BLOCKQUOTE|DIV|DL'.
  50.                   '|PRE|OL|UL|P',
  51.   'DFN'        => 'BDO|SPAN|Q|MAP|BR|OBJECT|IMG|A|ACRONYM|ABBR|CITE|VAR|KBD'.
  52.                   '|SAMP|CODE|DFN|STRONG|EM|#PCDATA',
  53.   'DIV'        => 'ADDRESS|BDO|SPAN|Q|MAP|BR|OBJECT|IMG|A|ACRONYM|ABBR|CITE'.
  54.                   '|VAR|KBD|SAMP|CODE|DFN|STRONG|EM|#PCDATA|HR|FORM'.
  55.                   '|BLOCKQUOTE|DIV|DL|PRE|OL|UL|P',
  56.   'DL'         => 'DD|DT',
  57.   'DT'         => 'BDO|SPAN|Q|MAP|BR|OBJECT|IMG|A|ACRONYM|ABBR|CITE|VAR|KBD'.
  58.                   '|SAMP|CODE|DFN|STRONG|EM|#PCDATA',
  59.   'EM'         => 'BDO|SPAN|Q|MAP|BR|OBJECT|IMG|A|ACRONYM|ABBR|CITE|VAR|KBD'.
  60.                   '|SAMP|CODE|DFN|STRONG|EM|#PCDATA',
  61.   'FIELDSET'   => '#PCDATA|LEGEND|#000',
  62.   'FORM'       => 'ADDRESS|FIELDSET|BUTTON|LABEL|TEXTAREA|SELECT|INPUT|BDO'.
  63.                   '|SPAN|Q|MAP|BR|OBJECT|IMG|A|ACRONYM|ABBR|CITE|VAR|KBD|SAMP'.
  64.                   '|CODE|DFN|STRONG|EM|#PCDATA|HR|BLOCKQUOTE|DIV|DL|PRE|OL|UL'.
  65.                   '|P',
  66.   'H1'         => 'BDO|SPAN|Q|MAP|BR|OBJECT|IMG|A|ACRONYM|ABBR|CITE|VAR|KBD'.
  67.                   '|SAMP|CODE|DFN|STRONG|EM|#PCDATA',
  68.   'H2'         => 'BDO|SPAN|Q|MAP|BR|OBJECT|IMG|A|ACRONYM|ABBR|CITE|VAR|KBD'.
  69.                   '|SAMP|CODE|DFN|STRONG|EM|#PCDATA',
  70.   'H3'         => 'BDO|SPAN|Q|MAP|BR|OBJECT|IMG|A|ACRONYM|ABBR|CITE|VAR|KBD'.
  71.                   '|SAMP|CODE|DFN|STRONG|EM|#PCDATA',
  72.   'H4'         => 'BDO|SPAN|Q|MAP|BR|OBJECT|IMG|A|ACRONYM|ABBR|CITE|VAR|KBD'.
  73.                   '|SAMP|CODE|DFN|STRONG|EM|#PCDATA',
  74.   'H5'         => 'BDO|SPAN|Q|MAP|BR|OBJECT|IMG|A|ACRONYM|ABBR|CITE|VAR|KBD'.
  75.                   '|SAMP|CODE|DFN|STRONG|EM|#PCDATA',
  76.   'H6'         => 'BDO|SPAN|Q|MAP|BR|OBJECT|IMG|A|ACRONYM|ABBR|CITE|VAR|KBD'.
  77.                   '|SAMP|CODE|DFN|STRONG|EM|#PCDATA',
  78.   'HEAD'       => 'TITLE|STYLE|META|LINK',
  79.   'HTML'       => 'HEAD|BODY',
  80.   'KBD'        => 'BDO|SPAN|Q|MAP|BR|OBJECT|IMG|A|ACRONYM|ABBR|CITE|VAR|KBD'.
  81.                   '|SAMP|CODE|DFN|STRONG|EM|#PCDATA',
  82.   'LABEL'      => 'BUTTON|TEXTAREA|SELECT|INPUT|BDO|SPAN|Q|MAP|BR|OBJECT|IMG'.
  83.                   '|A|ACRONYM|ABBR|CITE|VAR|KBD|SAMP|CODE|DFN|STRONG|EM'.
  84.                   '|#PCDATA',
  85.   'LEGEND'     => '#PCDATA',
  86.   'LI'         => 'BDO|SPAN|Q|MAP|BR|OBJECT|IMG|A|ACRONYM|ABBR|CITE|VAR|KBD'.
  87.                   '|SAMP|CODE|DFN|STRONG|EM|#PCDATA|HR|FORM|BLOCKQUOTE|DIV|DL'.
  88.                   '|PRE|OL|UL|P',
  89.   'MAP'        => 'AREA',
  90.   'OBJECT'     => 'ADDRESS|BDO|SPAN|Q|MAP|BR|OBJECT|IMG|A|ACRONYM|ABBR|CITE'.
  91.                   '|VAR|KBD|SAMP|CODE|DFN|STRONG|EM|#PCDATA|HR|FORM'.
  92.                   '|BLOCKQUOTE|DIV|DL|PRE|OL|UL|P|PARAM',
  93.   'OL'         => 'LI',
  94.   'OPTGROUP'   => 'OPTION',
  95.   'OPTION'     => '#PCDATA',
  96.   'P'          => 'BDO|SPAN|Q|MAP|BR|OBJECT|IMG|A|ACRONYM|ABBR|CITE|VAR|KBD'.
  97.                   '|SAMP|CODE|DFN|STRONG|EM|#PCDATA',
  98.   'PRE'        => 'BDO|SPAN|Q|BR|A|ACRONYM|ABBR|CITE|VAR|KBD|SAMP|CODE|DFN'.
  99.                   '|STRONG|EM|#PCDATA',
  100.   'Q'          => 'BDO|SPAN|Q|MAP|BR|OBJECT|IMG|A|ACRONYM|ABBR|CITE|VAR|KBD'.
  101.                   '|SAMP|CODE|DFN|STRONG|EM|#PCDATA',
  102.   'SAMP'       => 'BDO|SPAN|Q|MAP|BR|OBJECT|IMG|A|ACRONYM|ABBR|CITE|VAR|KBD'.
  103.                   '|SAMP|CODE|DFN|STRONG|EM|#PCDATA',
  104.   'SELECT'     => 'OPTION|OPTGROUP',
  105.   'SPAN'       => 'BDO|SPAN|Q|MAP|BR|OBJECT|IMG|A|ACRONYM|ABBR|CITE|VAR|KBD'.
  106.                   '|SAMP|CODE|DFN|STRONG|EM|#PCDATA',
  107.   'STRONG'     => 'BDO|SPAN|Q|MAP|BR|OBJECT|IMG|A|ACRONYM|ABBR|CITE|VAR|KBD'.
  108.                   '|SAMP|CODE|DFN|STRONG|EM|#PCDATA',
  109.   'STYLE'      => '%StyleSheet',
  110.   'TEXTAREA'   => '#PCDATA',
  111.   'TITLE'      => '#PCDATA',
  112.   'UL'         => 'LI',
  113.   'VAR'        => 'BDO|SPAN|Q|MAP|BR|OBJECT|IMG|A|ACRONYM|ABBR|CITE|VAR|KBD'.
  114.                   '|SAMP|CODE|DFN|STRONG|EM|#PCDATA',
  115. );
  116. %excludedElems = (
  117.   'A'        => 'A',
  118.   'ADDRESS'  => 'IMG|MAP',
  119.   'BUTTON'   => 'A|INPUT|SELECT|TEXTAREA|LABEL|BUTTON|FORM|FIELDSET',
  120.   'DD'       => 'ADDRESS',
  121.   'FIELDSET' => 'FIELDSET',
  122.   'FORM'     => 'FORM',
  123.   'LABEL'    => 'LABEL',
  124.   'PRE'      => 'IMG|OBJECT|MAP',
  125.   'TITLE'    => 'STYLE|META|LINK',
  126. );
  127. %includedElems = (
  128.   'HEAD' => 'STYLE|META|LINK',
  129. );
  130. #======= ATTRIBUTES =======
  131. %tagsAttributes = (
  132.   'A' => {
  133.     'ACCESSKEY' => '%Character',
  134.     'CHARSET'   => '%Charset',
  135.     'CLASS'     => '%Class',
  136.     'DIR'       => 'LTR|RTL',
  137.     'HREF'      => '%URI',
  138.     'HREFLANG'  => '%LanguageCode',
  139.     'ID'        => 'ID',
  140.     'LANG'      => '%LanguageCode',
  141.     'NAME'      => '%Name',
  142.     'REL'       => '%LinkTypes',
  143.     'REV'       => '%LinkTypes',
  144.     'TABINDEX'  => 'NUMBER',
  145.     'TITLE'     => '%Text',
  146.     'TYPE'      => '%ContentType',
  147.   },
  148.   'ABBR' => {
  149.     'CLASS' => '%Class',
  150.     'DIR'   => 'LTR|RTL',
  151.     'ID'    => 'ID',
  152.     'LANG'  => '%LanguageCode',
  153.     'TITLE' => '%Text',
  154.   },
  155.   'ACRONYM' => {
  156.     'CLASS' => '%Class',
  157.     'DIR'   => 'LTR|RTL',
  158.     'ID'    => 'ID',
  159.     'LANG'  => '%LanguageCode',
  160.     'TITLE' => '%Text',
  161.   },
  162.   'ADDRESS' => {
  163.     'CLASS' => '%Class',
  164.     'DIR'   => 'LTR|RTL',
  165.     'ID'    => 'ID',
  166.     'LANG'  => '%LanguageCode',
  167.     'TITLE' => '%Text',
  168.   },
  169.   'AREA' => {
  170.     'ACCESSKEY' => '%Character',
  171.     'ALT'       => '%Text',
  172.     'CLASS'     => '%Class',
  173.     'COORDS'    => '%Coords',
  174.     'DIR'       => 'LTR|RTL',
  175.     'HREF'      => '%URI',
  176.     'ID'        => 'ID',
  177.     'LANG'      => '%LanguageCode',
  178.     'NOHREF'    => 'NOHREF',
  179.     'SHAPE'     => 'RECT|CIRCLE|POLY|DEFAULT',
  180.     'TABINDEX'  => 'NUMBER',
  181.     'TITLE'     => '%Text',
  182.   },
  183.   'BDO' => {
  184.     'CLASS' => '%Class',
  185.     'DIR'   => 'LTR|RTL',
  186.     'ID'    => 'ID',
  187.     'LANG'  => '%LanguageCode',
  188.     'TITLE' => '%Text',
  189.   },
  190.   'BLOCKQUOTE' => {
  191.     'CITE'  => '%URI',
  192.     'CLASS' => '%Class',
  193.     'DIR'   => 'LTR|RTL',
  194.     'ID'    => 'ID',
  195.     'LANG'  => '%LanguageCode',
  196.     'TITLE' => '%Text',
  197.   },
  198.   'BODY' => {
  199.     'CLASS' => '%Class',
  200.     'DIR'   => 'LTR|RTL',
  201.     'ID'    => 'ID',
  202.     'LANG'  => '%LanguageCode',
  203.     'TITLE' => '%Text',
  204.   },
  205.   'BR' => {
  206.     'CLASS' => '%Class',
  207.     'ID'    => 'ID',
  208.     'TITLE' => '%Text',
  209.   },
  210.   'BUTTON' => {
  211.     'ACCESSKEY' => '%Character',
  212.     'CLASS'     => '%Class',
  213.     'DIR'       => 'LTR|RTL',
  214.     'ID'        => 'ID',
  215.     'LANG'      => '%LanguageCode',
  216.     'NAME'      => '%Name',
  217.     'TABINDEX'  => 'NUMBER',
  218.     'TITLE'     => '%Text',
  219.     'TYPE'      => 'SUBMIT|RESET',
  220.     'VALUE'     => 'CDATA',
  221.   },
  222.   'CITE' => {
  223.     'CLASS' => '%Class',
  224.     'DIR'   => 'LTR|RTL',
  225.     'ID'    => 'ID',
  226.     'LANG'  => '%LanguageCode',
  227.     'TITLE' => '%Text',
  228.   },
  229.   'CODE' => {
  230.     'CLASS' => '%Class',
  231.     'DIR'   => 'LTR|RTL',
  232.     'ID'    => 'ID',
  233.     'LANG'  => '%LanguageCode',
  234.     'TITLE' => '%Text',
  235.   },
  236.   'DD' => {
  237.     'CLASS' => '%Class',
  238.     'DIR'   => 'LTR|RTL',
  239.     'ID'    => 'ID',
  240.     'LANG'  => '%LanguageCode',
  241.     'TITLE' => '%Text',
  242.   },
  243.   'DFN' => {
  244.     'CLASS' => '%Class',
  245.     'DIR'   => 'LTR|RTL',
  246.     'ID'    => 'ID',
  247.     'LANG'  => '%LanguageCode',
  248.     'TITLE' => '%Text',
  249.   },
  250.   'DIV' => {
  251.     'CLASS' => '%Class',
  252.     'DIR'   => 'LTR|RTL',
  253.     'ID'    => 'ID',
  254.     'LANG'  => '%LanguageCode',
  255.     'TITLE' => '%Text',
  256.   },
  257.   'DL' => {
  258.     'CLASS' => '%Class',
  259.     'DIR'   => 'LTR|RTL',
  260.     'ID'    => 'ID',
  261.     'LANG'  => '%LanguageCode',
  262.     'TITLE' => '%Text',
  263.   },
  264.   'DT' => {
  265.     'CLASS' => '%Class',
  266.     'DIR'   => 'LTR|RTL',
  267.     'ID'    => 'ID',
  268.     'LANG'  => '%LanguageCode',
  269.     'TITLE' => '%Text',
  270.   },
  271.   'EM' => {
  272.     'CLASS' => '%Class',
  273.     'DIR'   => 'LTR|RTL',
  274.     'ID'    => 'ID',
  275.     'LANG'  => '%LanguageCode',
  276.     'TITLE' => '%Text',
  277.   },
  278.   'FIELDSET' => {
  279.     'CLASS' => '%Class',
  280.     'DIR'   => 'LTR|RTL',
  281.     'ID'    => 'ID',
  282.     'LANG'  => '%LanguageCode',
  283.     'TITLE' => '%Text',
  284.   },
  285.   'FORM' => {
  286.     'ACCEPT-CHARSET' => '%Charsets',
  287.     'ACTION'         => '%URI',
  288.     'CLASS'          => '%Class',
  289.     'DIR'            => 'LTR|RTL',
  290.     'ENCTYPE'        => '%ContentType',
  291.     'ID'             => 'ID',
  292.     'LANG'           => '%LanguageCode',
  293.     'METHOD'         => 'GET|POST',
  294.     'TITLE'          => '%Text',
  295.   },
  296.   'H1' => {
  297.     'CLASS' => '%Class',
  298.     'DIR'   => 'LTR|RTL',
  299.     'ID'    => 'ID',
  300.     'LANG'  => '%LanguageCode',
  301.     'TITLE' => '%Text',
  302.   },
  303.   'H2' => {
  304.     'CLASS' => '%Class',
  305.     'DIR'   => 'LTR|RTL',
  306.     'ID'    => 'ID',
  307.     'LANG'  => '%LanguageCode',
  308.     'TITLE' => '%Text',
  309.   },
  310.   'H3' => {
  311.     'CLASS' => '%Class',
  312.     'DIR'   => 'LTR|RTL',
  313.     'ID'    => 'ID',
  314.     'LANG'  => '%LanguageCode',
  315.     'TITLE' => '%Text',
  316.   },
  317.   'H4' => {
  318.     'CLASS' => '%Class',
  319.     'DIR'   => 'LTR|RTL',
  320.     'ID'    => 'ID',
  321.     'LANG'  => '%LanguageCode',
  322.     'TITLE' => '%Text',
  323.   },
  324.   'H5' => {
  325.     'CLASS' => '%Class',
  326.     'DIR'   => 'LTR|RTL',
  327.     'ID'    => 'ID',
  328.     'LANG'  => '%LanguageCode',
  329.     'TITLE' => '%Text',
  330.   },
  331.   'H6' => {
  332.     'CLASS' => '%Class',
  333.     'DIR'   => 'LTR|RTL',
  334.     'ID'    => 'ID',
  335.     'LANG'  => '%LanguageCode',
  336.     'TITLE' => '%Text',
  337.   },
  338.   'HEAD' => {
  339.     'DIR'     => 'LTR|RTL',
  340.     'LANG'    => '%LanguageCode',
  341.     'PROFILE' => '%URI',
  342.   },
  343.   'HR' => {
  344.     'CLASS' => '%Class',
  345.     'DIR'   => 'LTR|RTL',
  346.     'ID'    => 'ID',
  347.     'LANG'  => '%LanguageCode',
  348.     'TITLE' => '%Text',
  349.   },
  350.   'HTML' => {
  351.     'DIR'  => 'LTR|RTL',
  352.     'LANG' => '%LanguageCode',
  353.   },
  354.   'IMG' => {
  355.     'ALT'      => '%Text',
  356.     'CLASS'    => '%Class',
  357.     'DIR'      => 'LTR|RTL',
  358.     'ID'       => 'ID',
  359.     'LANG'     => '%LanguageCode',
  360.     'LONGDESC' => '%URI',
  361.     'SRC'      => '%URI',
  362.     'TITLE'    => '%Text',
  363.     'USEMAP'   => '%URI',
  364.   },
  365.   'INPUT' => {
  366.     'ACCESSKEY' => '%Character',
  367.     'CHECKED'   => 'CHECKED',
  368.     'CLASS'     => '%Class',
  369.     'DIR'       => 'LTR|RTL',
  370.     'ID'        => 'ID',
  371.     'LANG'      => '%LanguageCode',
  372.     'MAXLENGTH' => 'NUMBER',
  373.     'NAME'      => '%Name',
  374.     'SIZE'      => 'CDATA',
  375.     'TABINDEX'  => 'NUMBER',
  376.     'TITLE'     => '%Text',
  377.     'TYPE'      => 'TEXT|PASSWORD|CHECKBOX|RADIO|SUBMIT|RESET|HIDDEN',
  378.     'VALUE'     => 'CDATA',
  379.   },
  380.   'KBD' => {
  381.     'CLASS' => '%Class',
  382.     'DIR'   => 'LTR|RTL',
  383.     'ID'    => 'ID',
  384.     'LANG'  => '%LanguageCode',
  385.     'TITLE' => '%Text',
  386.   },
  387.   'LABEL' => {
  388.     'ACCESSKEY' => '%Character',
  389.     'CLASS'     => '%Class',
  390.     'DIR'       => 'LTR|RTL',
  391.     'FOR'       => 'IDREF',
  392.     'ID'        => 'ID',
  393.     'LANG'      => '%LanguageCode',
  394.     'TITLE'     => '%Text',
  395.   },
  396.   'LEGEND' => {
  397.     'ACCESSKEY' => '%Character',
  398.     'CLASS'     => '%Class',
  399.     'DIR'       => 'LTR|RTL',
  400.     'ID'        => 'ID',
  401.     'LANG'      => '%LanguageCode',
  402.     'TITLE'     => '%Text',
  403.   },
  404.   'LI' => {
  405.     'CLASS' => '%Class',
  406.     'DIR'   => 'LTR|RTL',
  407.     'ID'    => 'ID',
  408.     'LANG'  => '%LanguageCode',
  409.     'TITLE' => '%Text',
  410.   },
  411.   'LINK' => {
  412.     'CHARSET'  => '%Charset',
  413.     'CLASS'    => '%Class',
  414.     'DIR'      => 'LTR|RTL',
  415.     'HREF'     => '%URI',
  416.     'HREFLANG' => '%LanguageCode',
  417.     'ID'       => 'ID',
  418.     'LANG'     => '%LanguageCode',
  419.     'MEDIA'    => '%MediaDesc',
  420.     'REL'      => '%LinkTypes',
  421.     'REV'      => '%LinkTypes',
  422.     'TITLE'    => '%Text',
  423.     'TYPE'     => '%ContentType',
  424.   },
  425.   'MAP' => {
  426.     'CLASS' => '%Class',
  427.     'DIR'   => 'LTR|RTL',
  428.     'ID'    => 'ID',
  429.     'LANG'  => '%LanguageCode',
  430.     'NAME'  => '%Name',
  431.     'TITLE' => '%Text',
  432.   },
  433.   'META' => {
  434.     'CONTENT'    => 'CDATA',
  435.     'DIR'        => 'LTR|RTL',
  436.     'HTTP-EQUIV' => 'NAME',
  437.     'LANG'       => '%LanguageCode',
  438.     'NAME'       => 'NAME',
  439.     'SCHEME'     => 'CDATA',
  440.   },
  441.   'OBJECT' => {
  442.     'CLASS'    => '%Class',
  443.     'CLASSID'  => '%URI',
  444.     'CODEBASE' => '%URI',
  445.     'CODETYPE' => '%ContentType',
  446.     'DATA'     => '%URI',
  447.     'DECLARE'  => 'DECLARE',
  448.     'DIR'      => 'LTR|RTL',
  449.     'ID'       => 'ID',
  450.     'LANG'     => '%LanguageCode',
  451.     'NAME'     => '%Name',
  452.     'STANDBY'  => '%Text',
  453.     'TABINDEX' => 'NUMBER',
  454.     'TITLE'    => '%Text',
  455.     'TYPE'     => '%ContentType',
  456.     'USEMAP'   => '%URI',
  457.   },
  458.   'OL' => {
  459.     'CLASS' => '%Class',
  460.     'DIR'   => 'LTR|RTL',
  461.     'ID'    => 'ID',
  462.     'LANG'  => '%LanguageCode',
  463.     'TITLE' => '%Text',
  464.   },
  465.   'OPTGROUP' => {
  466.     'CLASS' => '%Class',
  467.     'DIR'   => 'LTR|RTL',
  468.     'ID'    => 'ID',
  469.     'LABEL' => '%Text',
  470.     'LANG'  => '%LanguageCode',
  471.     'TITLE' => '%Text',
  472.   },
  473.   'OPTION' => {
  474.     'CLASS'    => '%Class',
  475.     'DIR'      => 'LTR|RTL',
  476.     'ID'       => 'ID',
  477.     'LABEL'    => '%Text',
  478.     'LANG'     => '%LanguageCode',
  479.     'SELECTED' => 'SELECTED',
  480.     'TITLE'    => '%Text',
  481.     'VALUE'    => 'CDATA',
  482.   },
  483.   'P' => {
  484.     'CLASS' => '%Class',
  485.     'DIR'   => 'LTR|RTL',
  486.     'ID'    => 'ID',
  487.     'LANG'  => '%LanguageCode',
  488.     'TITLE' => '%Text',
  489.   },
  490.   'PARAM' => {
  491.     'ID'        => 'ID',
  492.     'NAME'      => '%Name',
  493.     'TYPE'      => '%ContentType',
  494.     'VALUE'     => 'CDATA',
  495.     'VALUETYPE' => 'DATA|REF|OBJECT',
  496.   },
  497.   'PRE' => {
  498.     'CLASS' => '%Class',
  499.     'DIR'   => 'LTR|RTL',
  500.     'ID'    => 'ID',
  501.     'LANG'  => '%LanguageCode',
  502.     'TITLE' => '%Text',
  503.   },
  504.   'Q' => {
  505.     'CITE'  => '%URI',
  506.     'CLASS' => '%Class',
  507.     'DIR'   => 'LTR|RTL',
  508.     'ID'    => 'ID',
  509.     'LANG'  => '%LanguageCode',
  510.     'TITLE' => '%Text',
  511.   },
  512.   'SAMP' => {
  513.     'CLASS' => '%Class',
  514.     'DIR'   => 'LTR|RTL',
  515.     'ID'    => 'ID',
  516.     'LANG'  => '%LanguageCode',
  517.     'TITLE' => '%Text',
  518.   },
  519.   'SELECT' => {
  520.     'CLASS'    => '%Class',
  521.     'DIR'      => 'LTR|RTL',
  522.     'ID'       => 'ID',
  523.     'LANG'     => '%LanguageCode',
  524.     'MULTIPLE' => 'MULTIPLE',
  525.     'NAME'     => '%Name',
  526.     'SIZE'     => 'NUMBER',
  527.     'TABINDEX' => 'NUMBER',
  528.     'TITLE'    => '%Text',
  529.   },
  530.   'SPAN' => {
  531.     'CLASS' => '%Class',
  532.     'DIR'   => 'LTR|RTL',
  533.     'ID'    => 'ID',
  534.     'LANG'  => '%LanguageCode',
  535.     'TITLE' => '%Text',
  536.   },
  537.   'STRONG' => {
  538.     'CLASS' => '%Class',
  539.     'DIR'   => 'LTR|RTL',
  540.     'ID'    => 'ID',
  541.     'LANG'  => '%LanguageCode',
  542.     'TITLE' => '%Text',
  543.   },
  544.   'STYLE' => {
  545.     'DIR'   => 'LTR|RTL',
  546.     'LANG'  => '%LanguageCode',
  547.     'MEDIA' => '%MediaDesc',
  548.     'TITLE' => '%Text',
  549.     'TYPE'  => '%ContentType',
  550.   },
  551.   'TEXTAREA' => {
  552.     'ACCESSKEY' => '%Character',
  553.     'CLASS'     => '%Class',
  554.     'COLS'      => 'NUMBER',
  555.     'DIR'       => 'LTR|RTL',
  556.     'ID'        => 'ID',
  557.     'LANG'      => '%LanguageCode',
  558.     'NAME'      => '%Name',
  559.     'ROWS'      => 'NUMBER',
  560.     'TABINDEX'  => 'NUMBER',
  561.     'TITLE'     => '%Text',
  562.   },
  563.   'TITLE' => {
  564.     'DIR'  => 'LTR|RTL',
  565.     'LANG' => '%LanguageCode',
  566.   },
  567.   'UL' => {
  568.     'CLASS' => '%Class',
  569.     'DIR'   => 'LTR|RTL',
  570.     'ID'    => 'ID',
  571.     'LANG'  => '%LanguageCode',
  572.     'TITLE' => '%Text',
  573.   },
  574.   'VAR' => {
  575.     'CLASS' => '%Class',
  576.     'DIR'   => 'LTR|RTL',
  577.     'ID'    => 'ID',
  578.     'LANG'  => '%LanguageCode',
  579.     'TITLE' => '%Text',
  580.   },
  581. );
  582. %requiredAttrs = (
  583.   'AREA'     => 'ALT',
  584.   'BDO'      => 'DIR',
  585.   'FORM'     => 'ACTION',
  586.   'IMG'      => 'SRC&ALT',
  587.   'MAP'      => 'NAME',
  588.   'META'     => 'CONTENT',
  589.   'OPTGROUP' => 'LABEL',
  590.   'PARAM'    => 'NAME',
  591.   'STYLE'    => 'TYPE',
  592.   'TEXTAREA' => 'ROWS&COLS',
  593. );
  594. #======= ENTITIES =======
  595. %refEntities = (
  596.   'AElig'    => 'Æ',
  597.   'Aacute'   => 'Á',
  598.   'Acirc'    => 'Â',
  599.   'Agrave'   => 'À',
  600.   'Alpha'    => 'Α',
  601.   'Aring'    => 'Å',
  602.   'Atilde'   => 'Ã',
  603.   'Auml'     => 'Ä',
  604.   'Beta'     => 'Β',
  605.   'Ccedil'   => 'Ç',
  606.   'Chi'      => 'Χ',
  607.   'Dagger'   => '‡',
  608.   'Delta'    => 'Δ',
  609.   'ETH'      => 'Ð',
  610.   'Eacute'   => 'É',
  611.   'Ecirc'    => 'Ê',
  612.   'Egrave'   => 'È',
  613.   'Epsilon'  => 'Ε',
  614.   'Eta'      => 'Η',
  615.   'Euml'     => 'Ë',
  616.   'Gamma'    => 'Γ',
  617.   'Iacute'   => 'Í',
  618.   'Icirc'    => 'Î',
  619.   'Igrave'   => 'Ì',
  620.   'Iota'     => 'Ι',
  621.   'Iuml'     => 'Ï',
  622.   'Kappa'    => 'Κ',
  623.   'Lambda'   => 'Λ',
  624.   'Mu'       => 'Μ',
  625.   'Ntilde'   => 'Ñ',
  626.   'Nu'       => 'Ν',
  627.   'OElig'    => 'Œ',
  628.   'Oacute'   => 'Ó',
  629.   'Ocirc'    => 'Ô',
  630.   'Ograve'   => 'Ò',
  631.   'Omega'    => 'Ω',
  632.   'Omicron'  => 'Ο',
  633.   'Oslash'   => 'Ø',
  634.   'Otilde'   => 'Õ',
  635.   'Ouml'     => 'Ö',
  636.   'Phi'      => 'Φ',
  637.   'Pi'       => 'Π',
  638.   'Prime'    => '″',
  639.   'Psi'      => 'Ψ',
  640.   'Rho'      => 'Ρ',
  641.   'Scaron'   => 'Š',
  642.   'Sigma'    => 'Σ',
  643.   'THORN'    => 'Þ',
  644.   'Tau'      => 'Τ',
  645.   'Theta'    => 'Θ',
  646.   'Uacute'   => 'Ú',
  647.   'Ucirc'    => 'Û',
  648.   'Ugrave'   => 'Ù',
  649.   'Upsilon'  => 'Υ',
  650.   'Uuml'     => 'Ü',
  651.   'Xi'       => 'Ξ',
  652.   'Yacute'   => 'Ý',
  653.   'Yuml'     => 'Ÿ',
  654.   'Zeta'     => 'Ζ',
  655.   'aacute'   => 'á',
  656.   'acirc'    => 'â',
  657.   'acute'    => '´',
  658.   'aelig'    => 'æ',
  659.   'agrave'   => 'à',
  660.   'alefsym'  => 'ℵ',
  661.   'alpha'    => 'α',
  662.   'amp'      => '&',
  663.   'and'      => '∧',
  664.   'ang'      => '∠',
  665.   'aring'    => 'å',
  666.   'asymp'    => '≈',
  667.   'atilde'   => 'ã',
  668.   'auml'     => 'ä',
  669.   'bdquo'    => '„',
  670.   'beta'     => 'β',
  671.   'brvbar'   => '¦',
  672.   'bull'     => '•',
  673.   'cap'      => '∩',
  674.   'ccedil'   => 'ç',
  675.   'cedil'    => '¸',
  676.   'cent'     => '¢',
  677.   'chi'      => 'χ',
  678.   'circ'     => 'ˆ',
  679.   'clubs'    => '♣',
  680.   'cong'     => '≅',
  681.   'copy'     => '©',
  682.   'crarr'    => '↵',
  683.   'cup'      => '∪',
  684.   'curren'   => '¤',
  685.   'dArr'     => '⇓',
  686.   'dagger'   => '†',
  687.   'darr'     => '↓',
  688.   'deg'      => '°',
  689.   'delta'    => 'δ',
  690.   'diams'    => '♦',
  691.   'divide'   => '÷',
  692.   'eacute'   => 'é',
  693.   'ecirc'    => 'ê',
  694.   'egrave'   => 'è',
  695.   'empty'    => '∅',
  696.   'emsp'     => ' ',
  697.   'ensp'     => ' ',
  698.   'epsilon'  => 'ε',
  699.   'equiv'    => '≡',
  700.   'eta'      => 'η',
  701.   'eth'      => 'ð',
  702.   'euml'     => 'ë',
  703.   'euro'     => '€',
  704.   'exist'    => '∃',
  705.   'fnof'     => 'ƒ',
  706.   'forall'   => '∀',
  707.   'frac12'   => '½',
  708.   'frac14'   => '¼',
  709.   'frac34'   => '¾',
  710.   'frasl'    => '⁄',
  711.   'gamma'    => 'γ',
  712.   'ge'       => '≥',
  713.   'gt'       => '>',
  714.   'hArr'     => '⇔',
  715.   'harr'     => '↔',
  716.   'hearts'   => '♥',
  717.   'hellip'   => '…',
  718.   'iacute'   => 'í',
  719.   'icirc'    => 'î',
  720.   'iexcl'    => '¡',
  721.   'igrave'   => 'ì',
  722.   'image'    => 'ℑ',
  723.   'infin'    => '∞',
  724.   'int'      => '∫',
  725.   'iota'     => 'ι',
  726.   'iquest'   => '¿',
  727.   'isin'     => '∈',
  728.   'iuml'     => 'ï',
  729.   'kappa'    => 'κ',
  730.   'lArr'     => '⇐',
  731.   'lambda'   => 'λ',
  732.   'lang'     => '〈',
  733.   'laquo'    => '«',
  734.   'larr'     => '←',
  735.   'lceil'    => '⌈',
  736.   'ldquo'    => '“',
  737.   'le'       => '≤',
  738.   'lfloor'   => '⌊',
  739.   'lowast'   => '∗',
  740.   'loz'      => '◊',
  741.   'lrm'      => '‎',
  742.   'lsaquo'   => '‹',
  743.   'lsquo'    => '‘',
  744.   'lt'       => '<',
  745.   'macr'     => '¯',
  746.   'mdash'    => '—',
  747.   'micro'    => 'µ',
  748.   'middot'   => '·',
  749.   'minus'    => '−',
  750.   'mu'       => 'μ',
  751.   'nabla'    => '∇',
  752.   'nbsp'     => ' ',
  753.   'ndash'    => '–',
  754.   'ne'       => '≠',
  755.   'ni'       => '∋',
  756.   'not'      => '¬',
  757.   'notin'    => '∉',
  758.   'nsub'     => '⊄',
  759.   'ntilde'   => 'ñ',
  760.   'nu'       => 'ν',
  761.   'oacute'   => 'ó',
  762.   'ocirc'    => 'ô',
  763.   'oelig'    => 'œ',
  764.   'ograve'   => 'ò',
  765.   'oline'    => '‾',
  766.   'omega'    => 'ω',
  767.   'omicron'  => 'ο',
  768.   'oplus'    => '⊕',
  769.   'or'       => '∨',
  770.   'ordf'     => 'ª',
  771.   'ordm'     => 'º',
  772.   'oslash'   => 'ø',
  773.   'otilde'   => 'õ',
  774.   'otimes'   => '⊗',
  775.   'ouml'     => 'ö',
  776.   'para'     => '¶',
  777.   'part'     => '∂',
  778.   'permil'   => '‰',
  779.   'perp'     => '⊥',
  780.   'phi'      => 'φ',
  781.   'pi'       => 'π',
  782.   'piv'      => 'ϖ',
  783.   'plusmn'   => '±',
  784.   'pound'    => '£',
  785.   'prime'    => '′',
  786.   'prod'     => '∏',
  787.   'prop'     => '∝',
  788.   'psi'      => 'ψ',
  789.   'quot'     => '"',
  790.   'rArr'     => '⇒',
  791.   'radic'    => '√',
  792.   'rang'     => '〉',
  793.   'raquo'    => '»',
  794.   'rarr'     => '→',
  795.   'rceil'    => '⌉',
  796.   'rdquo'    => '”',
  797.   'real'     => 'ℜ',
  798.   'reg'      => '®',
  799.   'rfloor'   => '⌋',
  800.   'rho'      => 'ρ',
  801.   'rlm'      => '‏',
  802.   'rsaquo'   => '›',
  803.   'rsquo'    => '’',
  804.   'sbquo'    => '‚',
  805.   'scaron'   => 'š',
  806.   'sdot'     => '⋅',
  807.   'sect'     => '§',
  808.   'shy'      => '­',
  809.   'sigma'    => 'σ',
  810.   'sigmaf'   => 'ς',
  811.   'sim'      => '∼',
  812.   'spades'   => '♠',
  813.   'sub'      => '⊂',
  814.   'sube'     => '⊆',
  815.   'sum'      => '∑',
  816.   'sup'      => '⊃',
  817.   'sup1'     => '¹',
  818.   'sup2'     => '²',
  819.   'sup3'     => '³',
  820.   'supe'     => '⊇',
  821.   'szlig'    => 'ß',
  822.   'tau'      => 'τ',
  823.   'there4'   => '∴',
  824.   'theta'    => 'θ',
  825.   'thetasym' => 'ϑ',
  826.   'thinsp'   => ' ',
  827.   'thorn'    => 'þ',
  828.   'tilde'    => '˜',
  829.   'times'    => '×',
  830.   'trade'    => '™',
  831.   'uArr'     => '⇑',
  832.   'uacute'   => 'ú',
  833.   'uarr'     => '↑',
  834.   'ucirc'    => 'û',
  835.   'ugrave'   => 'ù',
  836.   'uml'      => '¨',
  837.   'upsih'    => 'ϒ',
  838.   'upsilon'  => 'υ',
  839.   'uuml'     => 'ü',
  840.   'weierp'   => '℘',
  841.   'xi'       => 'ξ',
  842.   'yacute'   => 'ý',
  843.   'yen'      => '¥',
  844.   'yuml'     => 'ÿ',
  845.   'zeta'     => 'ζ',
  846.   'zwj'      => '‍',
  847.   'zwnj'     => '‌',
  848. );
  849. %refParams = (
  850.   'Character'    => '[\x20-\x7E]',
  851.   'Charset'      => 'CDATA+',
  852.   'Charsets'     => 'CDATA+',
  853.   'Class'        => 'CDATA+',
  854.   'ContentType'  => 'CDATA+',
  855.   'Coords'       => '(?:\d+(?:\s*,\s*|\s+))+\d+',
  856.   'LanguageCode' => '(?i)[A-Z]{1,8}(?:-[A-Z]{1,8})*',
  857.   'LinkTypes'    => 'CDATA+',
  858.   'MediaDesc'    => 'CDATA+',
  859.   'Name'         => 'CDATA+',
  860.   'StyleSheet'   => 'CDATA',
  861.   'Text'         => 'CDATA',
  862.   'URI'          => '&URL',
  863. );
  864.  
  865. 1;
  866.