use strict;
our $LIST = [
  {
    name => q<HTML 2.0 (RFC 1868)>,
    class => {
      '%heading' => q"h1|h2|h3|h4|h5|h6",
      '%list' => q"ul | ol | dir | menu",
      '%font' => q"tt | b | i ",
      '%phrase' => q"em | strong | code | samp | kbd | var | cite",
      '%text' => q"#PCDATA | a | img | br | %phrase | %font",
      '%block.forms' => q"blockquote | form | isindex",
      '%preformatted' => q"pre | xmp | listing",
      '%block' => q"p | %list | dl | %preformatted | %block.forms",
      '%flow' => q"%text|%block",
      '%body.content' => q"%heading | %text | %block | hr | address",
    },
    class_misc => {
      a => q<%A.content>,
      '%A.content' => q<%heading %text>,
      pre => q<%pre.content>,
      '%pre.content' => q<#PCDATA a hr br>,
      form => q<%body.content>,
    },
    minus => {
      a => 'a',
      form => q<form>,
    },
    plus => {
      form => q<input select textarea>,
    },
  },
  {
    name => q<HTML 2.x (RFC 2070)>,
    class => {
      '%heading' => q"h1|h2|h3|h4|h5|h6",
      '%list' => q"ul | ol | dir | menu",
      '%font' => q"tt | b | i ",
      '%phrase' => q"em | strong | code | samp | kbd | var | cite",
      '%text' => q"#PCDATA|a|img|br|%phrase|%font|span|q|bdo|sup|sub",
      '%block.forms' => q"blockquote | form | isindex",
      '%preformatted' => q"pre | xmp | listing",
      '%block' => q"p | %list | dl | %preformatted | %block.forms",
      '%flow' => q"%text|%block",
      '%body.content' => q"%heading | %text | %block | hr | address",
    },
    class_misc => {
      a => q<%A.content>,
      '%A.content' => q<%heading %text>,
      pre => q<%pre.content>,
      '%pre.content' => q<#PCDATA a hr br span bdo>,
      form => q<%body.content>,
      hn => q<%text>,
      dt => q<%text>,
      dd => q<%flow>,
      li => q<%flow>,
      blockquote => q<%body.content>,
      address => q<%text p>,
    },
    minus => {
      a => 'a',
      form => q<form>,
    },
    plus => {
      form => q<input select textarea>,
    },
  },
  {
    name => q<HTML 3.2>,
    class => {
      '%heading' => q"h1|h2|h3|h4|h5|h6",
      '%list' => q"ul | ol | dir | menu",
      '%preformatted' => q"pre | xmp | listing",
      '%font' => q"tt | i | b  | u | strike | big | small | sub | sup",
      '%phrase' => q"em | strong | dfn | code | samp | kbd | var | cite",
      '%special' => q"a | img | applet | font | basefont | br | script | map",
      '%form' => q"input | select | textarea",
      '%text' => q"#PCDATA | %font | %phrase | %special | %form",
      '%block' => q"p | %list | %preformatted | dl | div | center |
      blockquote | form | isindex | hr | table",
      '%flow' => q"%text | %block",
      '%body.content' => q"%heading | %text | %block | address",
    },
    class_misc => {
      a => q<%text>,
      pre => q<%text>,
      '%pre.exclusion' => q<img big small sub sup font>,
      form => q<%body.content>,
      td => q<%body.content>,
      li => q<%flow>,
      dt => q<%flow>,
      dd => q<%text>,
      hn => q<%text>,
      map => q<%area>,
      address => q<%address.content>,
      '%address.content' => q<%text p>,
      div => q<%body.content>,
      center => q<%body.content>,
      blockquote => q<%body.content>,
    },
    minus => {
      a => q<a>,
      pre => '%pre.exclusion',
      form => q<form>,
    },
  },
  {
    name => q<HTML 4.01 Transitional / Frameset>,
    class => {
      '%heading' => q<h1|h2|h3|h4|h5|h6>,
      '%list' => q/ul | ol |  dir | menu/,
      '%preformatted' => q"pre",
      '%fontstyle' => q"tt | i | b | u | s | strike | big | small",
      '%phrase' => q"em | strong | dfn | code | samp | kbd | var | cite | abbr | acronym",
      '%special' => q"a | img | applet | object | font | basefont | br | script |
    map | q | sub | sup | span | bdo | iframe",
      '%formctrl' => q"input | select | textarea | label | button",
      '%inline' => q"#PCDATA | %fontstyle | %phrase | %special | %formctrl",
      '%block' => q "p | %heading | %list | %preformatted | dl | div | center |
      noscript | noframes | blockquote | form | isindex | hr |
      table | fieldset | address",
      '%flow' => q"%block | %inline",
    },
    class_misc => {
      a => q<%inline>,
      pre => q<%inline>,
      '%pre.exclusion' => q<img object applet big small sub sup font basefont>,
      form => q<%flow>,
      label => q<%inline>,
      fieldset => q<#PCDATA legend %flow>,
      button => q<%flow>,
      td => q<%flow>,
      li => q<%flow>,
      dt => q<%inline>,
      dd => q<%flow>,
      blockquote => q<%flow>,
      hn => q<%inline>,
      map => q<%block area>,
      address => q<%inline p>,
    },
    minus => {
      a => q<a>,
      pre => q<%pre.exclusion>,
      form => q<form>,
      label => q<label>,
      button => q<a %formctrl form isindex fieldset iframe>,
    },
    plus => {
      a => q<ins del>,
      pre => q<ins del>,
      form => q<ins del>,
      fieldset => q<ins del>,
      label => q<ins del>,
      button => q<ins del>,
      li => q<ins del>,
      dt => q<ins del>,
      dd => q<ins del>,
      blockquote => q<ins del>,
      hn => q<ins del>,
      map => q<ins del>,
      address => q<ins del>,
    },
  },
  {
    name => q<HTML 4.01 Strict>,
    class => {
      '%heading' => q<h1|h2|h3|h4|h5|h6>,
      '%list' => q/ul|ol/,
      '%preformatted' => q"pre",
      '%fontstyle' => q"tt | i | b | big | small",
      '%phrase' => q"em | strong | dfn | code | samp | kbd | var | cite | abbr | acronym",
      '%special' => q"a | img | object | br | script | map | q | sub | sup | span | bdo",
      '%formctrl' => q"input | select | textarea | label | button",
      '%inline' => q"#PCDATA | %fontstyle | %phrase | %special | %formctrl",
      '%block' => q "p | %heading | %list | %preformatted | dl | div | noscript |
      blockquote | form | hr | table | fieldset | address",
      '%flow' => q"%block | %inline",
    },
    class_misc => {
      a => q<%inline>,
      pre => q<%inline>,
      '%pre.exclusion' => q<img object big small sub sup>,
      form => q<%block script>,
      label => q<%inline>,
      fieldset => q<#PCDATA legend %flow>,
      button => q<%flow>,
      td => q<%flow>,
      li => q<%flow>,
      dt => q<%inline>,
      dd => q<%flow>,
      blockquote => q<%block script>,
      hn => q<%inline>,
      map => q<%block area>,
      address => q<%inline>,
    },
    minus => {
      a => q<a>,
      pre => q<%pre.exclusion>,
      form => q<form>,
      label => q<label>,
      button => q<a %formctrl form fieldset>,
    },
    plus => {
      a => q<ins del>,
      pre => q<ins del>,
      form => q<ins del>,
      fieldset => q<ins del>,
      label => q<ins del>,
      button => q<ins del>,
      td => q<ins del>,
      li => q<ins del>,
      dt => q<ins del>,
      dd => q<ins del>,
      blockquote => q<ins del>,
      hn => q<ins del>,
      map => q<ins del>,
      address => q<ins del>,
    },
  },
  {
    name => q<ISO-HTML>,
    class => {
      '%special' => q"a | bdo | br | img | object | 
                    map | q | span",
      '%logical.styles' => q"abbr | acronym | cite | code | dfn | em |
                           kbd | samp | strong | var",
      '%physical.styles' => q"b | i | sub | sup | tt",
      '%block' => q"blockquote | div | dl | fieldset | form |
                  hr | ol | p | pre | table | ul",
      '%form.fields' => q"button | input | label | select | textarea",
      '%text' => q"#PCDATA | %physical.styles | %logical.styles | %special 
                         | %form.fields ",
      '%section.content' => q"%block | %text | address",
      '%table.content' => q"%block | %text ",
    },
    class_misc => {
      form => q<%block>,
      pre => q<%text>,
      button => q<%text>,
      label => q<%text>,
      fieldset => q<#PCDATA legend %block %text address>,
      a => q<%text>,
      td => q<%table.content>,
      hn => q<%text>,
      blockquote => q<%block>,
      address => q<%text>,
      li => q<%text %block>,
      dt => q<%text>,
      dd => q<%section.content>,
      map => q<%block area>,
    },
    minus => {
      form => q<form>,
      pre => q<img map object sub sup>,
      fieldset => q<fieldset>,
      button => q<a fieldset form %form.fields>,
      label => q<label>,
      a => q<a>,
      address => q<img object map>,
      dd => q<address>,
    },
    plus => {
      form => q<del ins>,
      pre => q<del ins>,
      button => q<del ins>,
      label => q<del ins>,
      fieldset => q<del ins>,
      a => q<del ins>,
      td => q<del ins>,
      hn => q<del ins>,
      blockquote => q<del ins>,
      address => q<del ins>,
      li => q<del ins>,
      dt => q<del ins>,
      dd => q<del ins>,
      map => q<del ins>,
    },
  },
  {
    name => q<XHTML 1.0 FE Transitional>,
    class => {
      '%special' => q"br | span | bdo | object | applet | img | map | iframe",
      '%fontstyle' => q"tt | i | b | big | small | u
                      | s | strike |font | basefont",
      '%phrase' => q"em | strong | dfn | code | q | sub | sup |
                   samp | kbd | var | cite | abbr | acronym",
      '%inline.forms' => q"input | select | textarea | label | button",
      '%misc' => q"ins | del | script | noscript",
      '%inline' => q"a | %special | %fontstyle | %phrase | %inline.forms",
      '%Inline' => q"#PCDATA | %inline | %misc",
      '%heading' => q"h1|h2|h3|h4|h5|h6",
      '%lists' => q"ul | ol | dl | menu | dir",
      '%blocktext' => q"pre | hr | blockquote | address | center | noframes",
      '%block' => q"p | %heading | div | %lists | %blocktext | isindex |fieldset | table",
      '%Block' => q"%block | form | %misc",
      '%Flow' => q"#PCDATA | %block | form | %inline | %misc",
    },
    class_misc => {
      a => q<%a.content>,
      '%a.content' => q<#PCDATA %special %fontstyle %phrase %inline.forms
                        %misc>,
      pre => q<%pre.content>,
      '%pre.content' => q<#PCDATA a br span bdo map tt i b u s %phrase
                          %inline.forms>,
      form => q<%form.content>,
      '%form.content' => q<%block %inline %misc>,
      button => q<%button.content>,
      '%button.content' => q<#PCDATA p %heading div %lists
                             %blocktext table br span bdo object
                             applet img map %fontstyle %phrase %misc>,
      label => q<%Inline>,
      fieldset => q<#PCDATA legend %block form %inline %misc>,
      td => q<%Flow>,
      hn => q<%Inline>,
      li => q<%Flow>,
      dt => q<%Inline>,
      dd => q<%Flow>,
      address => q<%Inline>,
      blockquote => q<%Flow>,
      map => q<%block form %misc area>,
    },
    minus => {
      a => q<a>,
      pre => q<img object big small sub sup>,
      button => q<input select textarea label form button fieldset
                  iframe isindex>,
      label => q<label>,
      form => q<form>,
    },
  },
  {
    name => q<XHTML 1.0 FE Frameset>,
    class => {
      '%special' => q"br | span | bdo | object | applet | img | map | iframe",
      '%fontstyle' => q"tt | i | b | big | small | u
                      | s | strike |font | basefont",
      '%phrase' => q"em | strong | dfn | code | q | sub | sup |
                   samp | kbd | var | cite | abbr | acronym",
      '%inline.forms' => q"input | select | textarea | label | button",
      '%misc' => q"ins | del | script | noscript",
      '%inline' => q"a | %special | %fontstyle | %phrase | %inline.forms",
      '%Inline' => q"#PCDATA | %inline | %misc",
      '%heading' => q"h1|h2|h3|h4|h5|h6",
      '%lists' => q"ul | ol | dl | menu | dir",
      '%blocktext' => q"pre | hr | blockquote | address | center ",
      '%block' => q"p | %heading | div | %lists | %blocktext | isindex |fieldset | table",
      '%Block' => q"%block | form | %misc",
      '%Flow' => q"#PCDATA | %block | form | %inline | %misc",
    },
    class_misc => {
      a => q<%a.content>,
      '%a.content' => q<#PCDATA %special %fontstyle %phrase %inline.forms
                        %misc>,
      pre => q<%pre.content>,
      '%pre.content' => q<#PCDATA a br span bdo map tt i b u s %phrase
                          %inline.forms>,
      form => q<%form.content>,
      '%form.content' => q<%block %inline %misc>,
      button => q<%button.content>,
      '%button.content' => q<#PCDATA p %heading div %lists
                             %blocktext table br span bdo object
                             applet img map %fontstyle %phrase %misc>,
      label => q<%Inline>,
      fieldset => q<#PCDATA legend %block form %inline %misc>,
      td => q<%Flow>,
      hn => q<%Inline>,
      li => q<%Flow>,
      dt => q<%Inline>,
      dd => q<%Flow>,
      address => q<%Inline>,
      blockquote => q<%Flow>,
      map => q<%block form %misc area>,
    },
    minus => {
      a => q<a>,
      pre => q<img object big small sub sup>,
      button => q<input select textarea label form button fieldset
                  iframe isindex>,
      label => q<label>,
      form => q<form>,
    },
  },
  {
    name => q<XHTML 1.0 FE Strict>,
    class => {
      '%special' => q"br | span | bdo | object | img | map",
      '%fontstyle' => q"tt | i | b | big | small",
      '%phrase' => q"em | strong | dfn | code | q | sub | sup |
                   samp | kbd | var | cite | abbr | acronym",
      '%inline.forms' => q"input | select | textarea | label | button",
      '%misc' => q"ins | del | script | noscript",
      '%inline' => q"a | %special | %fontstyle | %phrase | %inline.forms",
      '%Inline' => q"#PCDATA | %inline | %misc",
      '%heading' => q"h1|h2|h3|h4|h5|h6",
      '%lists' => q"ul | ol | dl",
      '%blocktext' => q"pre | hr | blockquote | address",
      '%block' => q"p | %heading | div | %lists | %blocktext | fieldset | table",
      '%Block' => q"%block | form | %misc",
      '%Flow' => q"#PCDATA | %block | form | %inline | %misc",
    },
    class_misc => {
      a => q<%a.content>,
      '%a.content' => q<#PCDATA %special %fontstyle %phrase %inline.forms
                        %misc>,
      pre => q<%pre.content>,
      '%pre.content' => q<#PCDATA a br span bdo map tt i b %phrase
                          %inline.forms>,
      form => q<%form.content>,
      '%form.content' => q<%block %misc>,
      button => q<%button.content>,
      '%button.content' => q<#PCDATA p %heading div %lists
                             %blocktext table
                             %special %fontstyle %phrase %misc>,
      label => q<%Inline>,
      fieldset => q<#PCDATA legend %block form %inline %misc>,
      td => q<%Flow>,
      hn => q<%Inline>,
      li => q<%Flow>,
      dt => q<%Inline>,
      dd => q<%Flow>,
      address => q<%Inline>,
      blockquote => q<%Block>,
      map => q<%block form %misc area>,
    },
    minus => {
      a => q<a>,
      pre => q<img object big small sub sup>,
      button => q<input select textarea label form button fieldset
                  iframe isindex>,
      label => q<label>,
      form => q<form>,
    },
  },
  {
    name => q<XHTML 1.0 SE Transitional>,
    class => {
      '%special.extra' => q"object | applet | img | map | iframe",
      '%special.basic' => q"br | span | bdo",
      '%special' => q"%special.basic | %special.extra",
      '%fontstyle.extra' => q"big | small | font | basefont",
      '%fontstyle.basic' => q"tt | i | b | u
                      | s | strike ",
      '%fontstyle' => q"%fontstyle.basic | %fontstyle.extra",
      '%phrase.extra' => q"sub | sup",
      '%phrase.basic' => q"em | strong | dfn | code | q |
                   samp | kbd | var | cite | abbr | acronym",
      '%phrase' => q"%phrase.basic | %phrase.extra",
      '%inline.forms' => q"input | select | textarea | label | button",
      '%misc' => q"noscript | %misc.inline",
      '%misc.inline' => q"ins | del | script",
      '%inline' => q"a | %special | %fontstyle | %phrase | %inline.forms",
      '%Inline' => q"#PCDATA | %inline | %misc.inline",
      '%heading' => q"h1|h2|h3|h4|h5|h6",
      '%lists' => q"ul | ol | dl | menu | dir",
      '%blocktext' => q"pre | hr | blockquote | address | center | noframes",
      '%block' => q"p | %heading | div | %lists | %blocktext | isindex |fieldset | table",
      '%Flow' => q"#PCDATA | %block | form | %inline | %misc",
    },
    class_misc => {
      a => q<%a.content>,
      '%a.content' => q<#PCDATA %special %fontstyle %phrase %inline.forms
                        %misc.inline>,
      pre => q<%pre.content>,
      '%pre.content' => q<#PCDATA a %fontstyle.basic %phrase.basic %special.basic
                          %misc.inline %inline.forms>,
      form => q<%form.content>,
      '%form.content' => q<%block %inline %misc>,
      button => q<%button.content>,
      '%button.content' => q<#PCDATA p %heading div %lists
                             %blocktext table br span bdo object
                             applet img map %fontstyle %phrase %misc>,
      label => q<%Inline>,
      fieldset => q<#PCDATA legend %block form %inline %misc>,
      td => q<%Flow>,
      map => q<%block form %misc area>,
      blockquote => q<%Flow>,
      address => q<#PCDATA %inline %misc.inline p>,
      dt => q<%Inline>,
      dd => q<%Flow>,
      li => q<%Flow>,
      hn => q<%Inline>,
    },
    minus => {
      a => q<a>,
      pre => q<img object big small sub sup>,
      button => q<input select textarea label form button fieldset
                  iframe isindex>,
      label => q<label>,
      form => q<form>,
    },
  },
  {
    name => q<XHTML 1.0 SE Frameset>,
    class => {
      '%special.extra' => q"object | applet | img | map | iframe",
      '%special.basic' => q"br | span | bdo",
      '%special' => q"%special.basic | %special.extra",
      '%fontstyle.extra' => q"big | small | font | basefont",
      '%fontstyle.basic' => q"tt | i | b | u
                      | s | strike ",
      '%fontstyle' => q"%fontstyle.basic | %fontstyle.extra",
      '%phrase.extra' => q"sub | sup",
      '%phrase.basic' => q"em | strong | dfn | code | q |
                   samp | kbd | var | cite | abbr | acronym",
      '%phrase' => q"%phrase.basic | %phrase.extra",
      '%inline.forms' => q"input | select | textarea | label | button",
      '%misc' => q"noscript | %misc.inline",
      '%misc.inline' => q"ins | del | script",
      '%inline' => q"a | %special | %fontstyle | %phrase | %inline.forms",
      '%Inline' => q"#PCDATA | %inline | %misc.inline",
      '%heading' => q"h1|h2|h3|h4|h5|h6",
      '%lists' => q"ul | ol | dl | menu | dir",
      '%blocktext' => q"pre | hr | blockquote | address | center",
      '%block' => q"p | %heading | div | %lists | %blocktext | isindex |fieldset | table",
      '%Flow' => q"#PCDATA | %block | form | %inline | %misc",
    },
    class_misc => {
      a => q<%a.content>,
      '%a.content' => q<#PCDATA %special %fontstyle %phrase %inline.forms
                        %misc.inline>,
      pre => q<%pre.content>,
      '%pre.content' => q<#PCDATA a %fontstyle.basic %phrase.basic %special.basic
                          %misc.inline %inline.forms>,
      form => q<%form.content>,
      '%form.content' => q<%block %inline %misc>,
      button => q<%button.content>,
      '%button.content' => q<#PCDATA p %heading div %lists
                             %blocktext table br span bdo object
                             applet img map %fontstyle %phrase %misc>,
      label => q<%Inline>,
      fieldset => q<#PCDATA legend %block form %inline %misc>,
      td => q<%Flow>,
      map => q<%block form %misc area>,
      blockquote => q<%Flow>,
      address => q<#PCDATA %inline %misc.inline p>,
      dt => q<%Inline>,
      dd => q<%Flow>,
      li => q<%Flow>,
      hn => q<%Inline>,
    },
    minus => {
      a => q<a>,
      pre => q<img object big small sub sup>,
      button => q<input select textarea label form button fieldset
                  iframe isindex>,
      label => q<label>,
      form => q<form>,
    },
  },
  {
    name => q<XHTML 1.0 SE Strict>,
    class => {
      '%special' => q"%special.pre  | object | img ",
      '%special.pre' => q"br | span | bdo | map",
      '%fontstyle' => q"tt | i | b | big | small",
      '%phrase' => q"em | strong | dfn | code | q |
                   samp | kbd | var | cite | abbr | acronym | sub | sup",
      '%inline.forms' => q"input | select | textarea | label | button",
      '%misc' => q"noscript | %misc.inline",
      '%misc.inline' => q"ins | del | script",
      '%inline' => q"a | %special | %fontstyle | %phrase | %inline.forms",
      '%Inline' => q"#PCDATA | %inline | %misc.inline",
      '%heading' => q"h1|h2|h3|h4|h5|h6",
      '%lists' => q"ul | ol | dl",
      '%blocktext' => q"pre | hr | blockquote | address",
      '%block' => q"p | %heading | div | %lists | %blocktext | fieldset | table",
      '%Block' => q"%block | form | %misc",
      '%Flow' => q"#PCDATA | %block | form | %inline | %misc",
    },
    class_misc => {
      a => q<%a.content>,
      '%a.content' => q<#PCDATA %special %fontstyle %phrase %inline.forms
                        %misc.inline>,
      pre => q<%pre.content>,
      '%pre.content' => q<#PCDATA a %fontstyle %phrase %special.pre
                          %misc.inline %inline.forms>,
      form => q<%form.content>,
      '%form.content' => q<%block %misc>,
      button => q<%button.content>,
      '%button.content' => q<#PCDATA p %heading div %lists
                             %blocktext table %special %fontstyle
                             %phrase %misc>,
      label => q<%Inline>,
      fieldset => q<#PCDATA legend %block form %inline %misc>,
      td => q<%Flow>,
      map => q<%block form %misc area>,
      blockquote => q<%Block>,
      address => q<%Inline>,
      dt => q<%Inline>,
      dd => q<%Flow>,
      li => q<%Flow>,
      hn => q<%Inline>,
    },
    minus => {
      a => q<a>,
      pre => q<img object big small sub sup>,
      button => q<input select textarea label form button fieldset
                  iframe isindex>,
      label => q<label>,
      form => q<form>,
    },
  },
  {
    name => q<XHTML 1.1 (m12n 1.0 FE/SE DTD)>,
    class => {
      '%Edit.class' => q"ins | del ",
      '%Script.class' => q"script noscript",
      '%Misc.extra' => q"",
      '%Misc.class' => q"%Edit.class %Script.class %Misc.extra ",
      '%InlStruct.class' => q"br span",
      '%InlPhras.class' => q"em strong dfn code samp kbd var cite abbr acronym q",
      '%InlPres.class' => q"tt i b big small sub sup",
      '%I18n.class' => q"bdo",
      '%Anchor.class' => q"a",
      '%InlSpecial.class' => q"img map object",
      '%InlForm.class' => q"input select textarea label button",
      '%Inline.extra' => q"",
      '%Ruby.class' => q"ruby",
      '%Inline.class' => q"%InlStruct.class %InlPhras.class %InlPres.class %I18n.class %Anchor.class %InlSpecial.class %InlForm.class %Ruby.class %Inline.extra ",
      '%InlNoRuby.class' => q"%InlStruct.class %InlPhras.class %InlPres.class %I18n.class %Anchor.class %InlSpecial.class %InlForm.class %Inline.extra ",
      '%NoRuby.content' => q"#PCDATA %InlNoRuby.class %Misc.class ",
      '%InlNoAnchor.class' => q"%InlStruct.class %InlPhras.class %InlPres.class %I18n.class %InlSpecial.class %InlForm.class %Ruby.class %Inline.extra ",
      '%InlNoAnchor.mix' => q"%InlNoAnchor.class %Misc.class ",
      '%Inline.mix' => q"%Inline.class %Misc.class ",
      '%Heading.class' => q"h1 h2 h3 h4 h5 h6",
      '%List.class' => q"ul ol dl",
      '%Table.class' => q"table",
      '%Form.class' => q"form",
      '%Fieldset.class' => q"fieldset",
      '%BlkStruct.class' => q"p div",
      '%BlkPhras.class' => q"pre blockquote address",
      '%BlkPres.class' => q"hr",
      '%BlkSpecial.class' => q"%Table.class %Form.class %Fieldset.class ",
      '%Block.extra' => q"",
      '%Block.class' => q"%BlkStruct.class %BlkPhras.class %BlkPres.class %BlkSpecial.class %Block.extra ",
      '%Block.mix' => q"%Heading.class %List.class %Block.class %Misc.class ",
      '%Flow.mix' => q"%Heading.class %List.class %Block.class %Inline.class %Misc.class ",
      '%BlkNoForm.mix' => q<%Heading.class %List.class %BlkStruct.class
                            %BlkPhras.class %Table.class %Misc.class
                            %Block.extra>,
    },
    class_misc => {
      pre => q<%pre.content>,
      '%pre.content' => q<#PCDATA %InlStruct.class %InlPhras.class
                          tt i b %I18n.class %Anchor.class script map
                          %Inline.extra>,
      a => q<%a.content>,
      '%a.content' => q<#PCDATA %InlNoAnchor.mix>,
      form => q<%form.content>,
      '%form.content' => q<%BlkNoForm.mix fieldset>,
      label => q<%label.content>,
      '%label.content' => q<#PCDATA input select textarea button
                            %InlStruct.class %InlPhras.class
                            %I18n.class %InlPres.class %Anchor.class
                            %InlSpecial.class %Inline.extra %Misc.class>,
      fieldset => q<%fieldset.content>,
      '%fieldset.content' => q<#PCDATA legend %Flow.mix>,
      button => q<%button.content>,
      '%button.content' => q<#PCDATA %BlkNoForm.mix %InlStruct.class
                             %InlPhras.class %InlPres.class
                             %I18n.class %InlSpecial.class %Inline.extra>,
      td => q<#PCDATA %Flow.mix>,
      li => q<#PCDATA %Flow.mix>,
      dt => q<#PCDATA %Inline.mix>,
      dd => q<#PCDATA %Flow.mix>,
      hn => q<#PCDATA %Inline.mix>,
      address => q<#PCDATA %Inline.mix>,
      blockquote => q<%Block.mix>,
    },
  },
  {
    name => q<XHTML 1.1 + Legacy (m12n 1.0 FE/SE DTD)>,
    class => {
      '%Edit.class' => q"ins | del ",
      '%Script.class' => q"script noscript",
      '%Misc.extra' => q"",
      '%Misc.class' => q"%Edit.class %Script.class %Misc.extra ",
      '%InlStruct.class' => q"br span",
      '%InlPhras.class' => q"em strong dfn code samp kbd var cite abbr acronym q",
      '%InlPres.class' => q"tt i b big small sub sup
                            font basefont iframe s strike u",
      '%I18n.class' => q"bdo",
      '%Anchor.class' => q"a",
      '%InlSpecial.class' => q"img map object applet",
      '%InlForm.class' => q"input select textarea label button",
      '%Inline.extra' => q"",
      '%Ruby.class' => q"ruby",
      '%Inline.class' => q"%InlStruct.class %InlPhras.class %InlPres.class %I18n.class %Anchor.class %InlSpecial.class %InlForm.class %Ruby.class %Inline.extra ",
      '%InlNoRuby.class' => q"%InlStruct.class %InlPhras.class %InlPres.class %I18n.class %Anchor.class %InlSpecial.class %InlForm.class %Inline.extra ",
      '%NoRuby.content' => q"#PCDATA %InlNoRuby.class %Misc.class ",
      '%InlNoAnchor.class' => q"%InlStruct.class %InlPhras.class %InlPres.class %I18n.class %InlSpecial.class %InlForm.class %Ruby.class %Inline.extra ",
      '%InlNoAnchor.mix' => q"%InlNoAnchor.class %Misc.class ",
      '%Inline.mix' => q"%Inline.class %Misc.class ",
      '%Heading.class' => q"h1 h2 h3 h4 h5 h6",
      '%List.class' => q"ul ol dl dir menu",
      '%Table.class' => q"table",
      '%Form.class' => q"form",
      '%Fieldset.class' => q"fieldset",
      '%BlkStruct.class' => q"p div",
      '%BlkPhras.class' => q"pre blockquote address",
      '%BlkPres.class' => q"hr center",
      '%BlkSpecial.class' => q"table form fieldset noframes isindex",
      '%Block.extra' => q"",
      '%Block.class' => q"%BlkStruct.class %BlkPhras.class %BlkPres.class %BlkSpecial.class %Block.extra ",
      '%Block.mix' => q"%Heading.class %List.class %Block.class %Misc.class ",
      '%Flow.mix' => q"%Heading.class %List.class %Block.class %Inline.class %Misc.class ",
      '%BlkNoForm.mix' => q<%Heading.class %List.class %BlkStruct.class
                            %BlkPhras.class %Table.class %Misc.class
                            %Block.extra>,
    },
    class_misc => {
      pre => q<%pre.content>,
      '%pre.content' => q<#PCDATA %InlStruct.class %InlPhras.class
                          tt i b %I18n.class %Anchor.class script map
                          %Inline.extra>,
      a => q<%a.content>,
      '%a.content' => q<#PCDATA %InlNoAnchor.mix>,
      form => q<%form.content>,
      '%form.content' => q<%BlkNoForm.mix fieldset>,
      label => q<%label.content>,
      '%label.content' => q<#PCDATA input select textarea button
                            %InlStruct.class %InlPhras.class
                            %I18n.class %InlPres.class %Anchor.class
                            %InlSpecial.class %Inline.extra %Misc.class>,
      fieldset => q<%fieldset.content>,
      '%fieldset.content' => q<#PCDATA legend %Flow.mix>,
      button => q<%button.content>,
      '%button.content' => q<#PCDATA %BlkNoForm.mix %InlStruct.class
                             %InlPhras.class %InlPres.class
                             %I18n.class %InlSpecial.class %Inline.extra>,
      td => q<#PCDATA %Flow.mix>,
      li => q<#PCDATA %Flow.mix>,
      dt => q<#PCDATA %Inline.mix>,
      dd => q<#PCDATA %Flow.mix>,
      hn => q<#PCDATA %Inline.mix>,
      address => q<#PCDATA %Inline.mix>,
      blockquote => q<#PCDATA %Flow.mix>,
      noscript => q<#PCDATA %Flow.mix>,
      body => q<#PCDATA %Flow.mix>,
    },
  },
  {
    name => q<XHTML m12n 1.0 FE/SE Abstract>,
    class => {
      'Heading' => q"h1 | h2 | h3 | h4 | h5 | h6",
      'Block' => q"address | blockquote | div | p | pre | hr Form table script noscript",
      'Inline' => q"abbr | acronym | br | cite | code | dfn | em | kbd | q | samp | span | strong | var a applet b big i small sub sup tt ins del bdo Formctrl img map object iframe script noscript",
      'Flow' => q"Heading | Block | Inline List",
      'List' => q"dl | ol | ul",
      'Form' => q"form fieldset",
      'Formctrl' => q"input | select | textarea | label | button",
    },
    class_misc => {
      pre => q<PCDATA Inline>,
      a => q<PCDATA Inline>,
      form => q<Heading List Block fieldset>,
      label => q<PCDATA Inline>,
      button => q<PCDATA Heading List Block Inline>,
      fieldset => q<PCDATA legend Flow>,
      label => q<PCDATA Inline>,
      td => q<PCDATA Flow>,
      'td#' => q<PCDATA Flow>,
      li => q<PCDATA Flow>,
      dt => q<PCDATA Inline>,
      dd => q<PCDATA Flow>,
      address => q<PCDATA Inline>,
      blockquote => q<Heading Block List>,
      hn => q<PCDATA Inline>,
    },
    minus => {
      a => q<a>,
      form => q<form>,
      label => q<label>,
      button => q<Form Formctrl>,
      label => q<label>,
      'td#' => q<table>,
    },
  },
];

1;
