/[suikacvs]/markup/html/whatpm/Whatpm/ContentChecker/HTML.pm
Suika

Diff of /markup/html/whatpm/Whatpm/ContentChecker/HTML.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.69 by wakaba, Sat Mar 22 08:23:04 2008 UTC revision 1.70 by wakaba, Sat Mar 22 11:40:16 2008 UTC
# Line 1234  $Element->{$HTML_NS}->{link} = { Line 1234  $Element->{$HTML_NS}->{link} = {
1234    check_attrs => sub {    check_attrs => sub {
1235      my ($self, $item, $element_state) = @_;      my ($self, $item, $element_state) = @_;
1236      $GetHTMLAttrsChecker->({      $GetHTMLAttrsChecker->({
1237          ## TODO: HTML4 |charset|
1238        href => $HTMLURIAttrChecker,        href => $HTMLURIAttrChecker,
1239        rel => sub { $HTMLLinkTypesAttrChecker->(0, $item, @_) },        rel => sub { $HTMLLinkTypesAttrChecker->(0, $item, @_) },
1240          ## TODO: HTML4 |rev|
1241        media => $HTMLMQAttrChecker,        media => $HTMLMQAttrChecker,
1242        hreflang => $HTMLLanguageTagAttrChecker,        hreflang => $HTMLLanguageTagAttrChecker,
1243          target => $HTMLTargetAttrChecker,
1244        type => $HTMLIMTAttrChecker,        type => $HTMLIMTAttrChecker,
1245        ## NOTE: Though |title| has special semantics,        ## NOTE: Though |title| has special semantics,
1246        ## syntactically same as the |title| as global attribute.        ## syntactically same as the |title| as global attribute.
# Line 1795  $Element->{$HTML_NS}->{p} = { Line 1798  $Element->{$HTML_NS}->{p} = {
1798  $Element->{$HTML_NS}->{hr} = {  $Element->{$HTML_NS}->{hr} = {
1799    %HTMLEmptyChecker,    %HTMLEmptyChecker,
1800    status => FEATURE_HTML5_DEFAULT | FEATURE_M12N10_REC,    status => FEATURE_HTML5_DEFAULT | FEATURE_M12N10_REC,
1801    check_attrs => $GetHTMLAttrsChecker->({}, {    check_attrs => $GetHTMLAttrsChecker->({
1802        ## TODO: HTML4 |align|, |noshade|, |size|, |width|
1803      }, {
1804      %HTMLAttrStatus,      %HTMLAttrStatus,
1805      %HTMLM12NCommonAttrStatus,      %HTMLM12NCommonAttrStatus,
1806      align => FEATURE_M12N10_REC_DEPRECATED,      align => FEATURE_M12N10_REC_DEPRECATED,
# Line 2136  $Element->{$HTML_NS}->{a} = { Line 2141  $Element->{$HTML_NS}->{a} = {
2141        if ($attr_ns eq '') {        if ($attr_ns eq '') {
2142          $checker = {          $checker = {
2143            accesskey => $HTMLAccesskeyAttrChecker,            accesskey => $HTMLAccesskeyAttrChecker,
2144              ## TODO: HTML4 |charset|
2145              ## TODO: HTML4 |coords|
2146                       target => $HTMLTargetAttrChecker,                       target => $HTMLTargetAttrChecker,
2147                       href => $HTMLURIAttrChecker,                       href => $HTMLURIAttrChecker,
2148                       ping => $HTMLSpaceURIsAttrChecker,                       ping => $HTMLSpaceURIsAttrChecker,
2149                       rel => sub { $HTMLLinkTypesAttrChecker->(1, $item, @_) },                       rel => sub { $HTMLLinkTypesAttrChecker->(1, $item, @_) },
2150              ## TODO: HTML4 |rev|
2151              ## TODO: HTML4 |shape|
2152                       media => $HTMLMQAttrChecker,                       media => $HTMLMQAttrChecker,
2153              ## TODO: HTML4/XHTML1 |name|
2154                       hreflang => $HTMLLanguageTagAttrChecker,                       hreflang => $HTMLLanguageTagAttrChecker,
2155                       type => $HTMLIMTAttrChecker,                       type => $HTMLIMTAttrChecker,
2156                     }->{$attr_ln};                     }->{$attr_ln};
# Line 2827  $Element->{$HTML_NS}->{img} = { Line 2837  $Element->{$HTML_NS}->{img} = {
2837    check_attrs => sub {    check_attrs => sub {
2838      my ($self, $item, $element_state) = @_;      my ($self, $item, $element_state) = @_;
2839      $GetHTMLAttrsChecker->({      $GetHTMLAttrsChecker->({
2840          align => $GetHTMLEnumeratedAttrChecker->({
2841            bottom => 1, middle => 1, top => 1, left => 1, right => 1,
2842          }),
2843        alt => sub { }, ## NOTE: No syntactical requirement        alt => sub { }, ## NOTE: No syntactical requirement
2844          border => $GetHTMLNonNegativeIntegerAttrChecker->(sub { 1 }),
2845        src => $HTMLURIAttrChecker,        src => $HTMLURIAttrChecker,
2846        usemap => $HTMLUsemapAttrChecker,        usemap => $HTMLUsemapAttrChecker,
2847          hspace => $GetHTMLNonNegativeIntegerAttrChecker->(sub { 1 }),
2848        ismap => sub {        ismap => sub {
2849          my ($self, $attr, $parent_item) = @_;          my ($self, $attr, $parent_item) = @_;
2850          if (not $self->{flag}->{in_a_href}) {          if (not $self->{flag}->{in_a_href}) {
# Line 2839  $Element->{$HTML_NS}->{img} = { Line 2854  $Element->{$HTML_NS}->{img} = {
2854          }          }
2855          $GetHTMLBooleanAttrChecker->('ismap')->($self, $attr, $parent_item);          $GetHTMLBooleanAttrChecker->('ismap')->($self, $attr, $parent_item);
2856        },        },
2857          longdesc => $HTMLURIAttrChecker,
2858          ## TODO: HTML4 |name|
2859        ## TODO: height        ## TODO: height
2860          vspace => $GetHTMLNonNegativeIntegerAttrChecker->(sub { 1 }),
2861        ## TODO: width        ## TODO: width
2862      }, {      }, {
2863        %HTMLAttrStatus,        %HTMLAttrStatus,
# Line 2975  $Element->{$HTML_NS}->{object} = { Line 2993  $Element->{$HTML_NS}->{object} = {
2993    check_attrs => sub {    check_attrs => sub {
2994      my ($self, $item, $element_state) = @_;      my ($self, $item, $element_state) = @_;
2995      $GetHTMLAttrsChecker->({      $GetHTMLAttrsChecker->({
2996          align => $GetHTMLEnumeratedAttrChecker->({
2997            bottom => 1, middle => 1, top => 1, left => 1, right => 1,
2998          }),
2999          archive => $HTMLSpaceURIsAttrChecker,
3000              ## TODO: Relative to @codebase
3001          border => $GetHTMLNonNegativeIntegerAttrChecker->(sub { 1 }),
3002          classid => $HTMLURIAttrChecker,
3003          codebase => $HTMLURIAttrChecker,
3004          codetype => $HTMLIMTAttrChecker,
3005              ## TODO: "RECOMMENDED when |classid| is specified" [HTML4]
3006        data => $HTMLURIAttrChecker,        data => $HTMLURIAttrChecker,
3007          declare => $GetHTMLBooleanAttrChecker->('declare'),
3008              ## NOTE: "The object MUST be instantiated by a subsequent OBJECT ..."
3009              ## [HTML4] but we don't know how to test this.
3010          hspace => $GetHTMLNonNegativeIntegerAttrChecker->(sub { 1 }),
3011          ## TODO: HTML4 |name|
3012          standby => sub {}, ## NOTE: %Text; in HTML4
3013        type => $HTMLIMTAttrChecker,        type => $HTMLIMTAttrChecker,
3014        usemap => $HTMLUsemapAttrChecker,        usemap => $HTMLUsemapAttrChecker,
3015          vspace => $GetHTMLNonNegativeIntegerAttrChecker->(sub { 1 }),
3016        ## TODO: width        ## TODO: width
3017        ## TODO: height        ## TODO: height
3018      }, {      }, {
# Line 3071  $Element->{$HTML_NS}->{param} = { Line 3106  $Element->{$HTML_NS}->{param} = {
3106      my ($self, $item, $element_state) = @_;      my ($self, $item, $element_state) = @_;
3107      $GetHTMLAttrsChecker->({      $GetHTMLAttrsChecker->({
3108        name => sub { },        name => sub { },
3109          type => $HTMLIMTAttrChecker,
3110        value => sub { },        value => sub { },
3111          valuetype => $GetHTMLEnumeratedAttrChecker->({
3112            data => 1, ref => 1, object => 1,
3113          }),
3114      }, {      }, {
3115        %HTMLAttrStatus,        %HTMLAttrStatus,
3116        id => FEATURE_HTML5_DEFAULT | FEATURE_M12N10_REC,        id => FEATURE_HTML5_DEFAULT | FEATURE_M12N10_REC,
# Line 3088  $Element->{$HTML_NS}->{param} = { Line 3127  $Element->{$HTML_NS}->{param} = {
3127        $self->{onerror}->(node => $item->{node},        $self->{onerror}->(node => $item->{node},
3128                           type => 'attribute missing:value');                           type => 'attribute missing:value');
3129      }      }
   
     $element_state->{uri_info}->{value}->{type}->{resource} = 1;  
3130    },    },
3131  };  };
3132    
# Line 3258  $Element->{$HTML_NS}->{map} = { Line 3295  $Element->{$HTML_NS}->{map} = {
3295          $self->{map}->{$value} ||= $attr;          $self->{map}->{$value} ||= $attr;
3296          $has_id = 1;          $has_id = 1;
3297        },        },
3298          ## TODO: HTML4 |name|
3299      }, {      }, {
3300        %HTMLAttrStatus,        %HTMLAttrStatus,
3301        class => FEATURE_HTML5_DEFAULT | FEATURE_M12N10_REC,        class => FEATURE_HTML5_DEFAULT | FEATURE_M12N10_REC,
# Line 3325  $Element->{$HTML_NS}->{area} = { Line 3363  $Element->{$HTML_NS}->{area} = {
3363                                              type => 'coords:syntax error');                                              type => 'coords:syntax error');
3364                         }                         }
3365                       },                       },
3366                       target => $HTMLTargetAttrChecker,            nohref => $GetHTMLBooleanAttrChecker->('nohref'),
3367              target => $HTMLTargetAttrChecker,
3368                       href => $HTMLURIAttrChecker,                       href => $HTMLURIAttrChecker,
3369                       ping => $HTMLSpaceURIsAttrChecker,                       ping => $HTMLSpaceURIsAttrChecker,
3370                       rel => sub { $HTMLLinkTypesAttrChecker->(1, $item, @_) },                       rel => sub { $HTMLLinkTypesAttrChecker->(1, $item, @_) },
# Line 3489  $Element->{$HTML_NS}->{table} = { Line 3528  $Element->{$HTML_NS}->{table} = {
3528    %HTMLChecker,    %HTMLChecker,
3529    status => FEATURE_HTML5_DEFAULT | FEATURE_M12N10_REC,    status => FEATURE_HTML5_DEFAULT | FEATURE_M12N10_REC,
3530    check_attrs => $GetHTMLAttrsChecker->({    check_attrs => $GetHTMLAttrsChecker->({
3531        ## TODO: HTML4 |cellspacing|, |cellpadding|
3532      frame => $GetHTMLEnumeratedAttrChecker->({      frame => $GetHTMLEnumeratedAttrChecker->({
3533        void => 1, above => 1, below => 1, hsides => 1, vsides => 1,        void => 1, above => 1, below => 1, hsides => 1, vsides => 1,
3534        lhs => 1, rhs => 1, box => 1, border => 1,        lhs => 1, rhs => 1, box => 1, border => 1,
# Line 3639  $Element->{$HTML_NS}->{caption} = { Line 3679  $Element->{$HTML_NS}->{caption} = {
3679    
3680  my %cellalign = (  my %cellalign = (
3681    ## HTML4 %cellhalign;    ## HTML4 %cellhalign;
3682      align => $GetHTMLEnumeratedAttrChecker->({
3683        left => 1, center => 1, right => 1, justify => 1, char => 1,
3684      }),
3685      char => sub {
3686        my ($self, $attr) = @_;
3687    
3688        ## NOTE: "character" or |%Character;| in HTML4.
3689        
3690        my $value = $attr->value;
3691        if (length $value != 1) {
3692          $self->{onerror}->(node => $attr, type => 'char:syntax error',
3693                             level => $self->{fact_level}); ## TODO: type
3694        }
3695      },
3696      ## TODO: HTML4 |charoff|  
3697    ## HTML4 %cellvalign;    ## HTML4 %cellvalign;
3698      valign => $GetHTMLEnumeratedAttrChecker->({
3699        top => 1, middle => 1, bottom => 1, baseline => 1,
3700      }),
3701  );  );
3702    
3703  $Element->{$HTML_NS}->{colgroup} = {  $Element->{$HTML_NS}->{colgroup} = {
# Line 3818  $Element->{$HTML_NS}->{td} = { Line 3875  $Element->{$HTML_NS}->{td} = {
3875      axis => sub {}, ## NOTE: HTML4 "cdata", comma-separated      axis => sub {}, ## NOTE: HTML4 "cdata", comma-separated
3876      bgcolor => $HTMLColorAttrChecker,      bgcolor => $HTMLColorAttrChecker,
3877      colspan => $GetHTMLNonNegativeIntegerAttrChecker->(sub { shift > 0 }),      colspan => $GetHTMLNonNegativeIntegerAttrChecker->(sub { shift > 0 }),
3878        ## TODO: HTML5 |headers|
3879      nowrap => $GetHTMLBooleanAttrChecker->('nowrap'),      nowrap => $GetHTMLBooleanAttrChecker->('nowrap'),
3880      rowspan => $GetHTMLNonNegativeIntegerAttrChecker->(sub { shift > 0 }),      rowspan => $GetHTMLNonNegativeIntegerAttrChecker->(sub { shift > 0 }),
3881      scope => $GetHTMLEnumeratedAttrChecker      scope => $GetHTMLEnumeratedAttrChecker
# Line 3852  $Element->{$HTML_NS}->{th} = { Line 3910  $Element->{$HTML_NS}->{th} = {
3910      axis => sub {}, ## NOTE: HTML4 "cdata", comma-separated      axis => sub {}, ## NOTE: HTML4 "cdata", comma-separated
3911      bgcolor => $HTMLColorAttrChecker,      bgcolor => $HTMLColorAttrChecker,
3912      colspan => $GetHTMLNonNegativeIntegerAttrChecker->(sub { shift > 0 }),      colspan => $GetHTMLNonNegativeIntegerAttrChecker->(sub { shift > 0 }),
3913        ## TODO: HTML5 |headers|
3914      nowrap => $GetHTMLBooleanAttrChecker->('nowrap'),      nowrap => $GetHTMLBooleanAttrChecker->('nowrap'),
3915      rowspan => $GetHTMLNonNegativeIntegerAttrChecker->(sub { shift > 0 }),      rowspan => $GetHTMLNonNegativeIntegerAttrChecker->(sub { shift > 0 }),
3916      scope => $GetHTMLEnumeratedAttrChecker      scope => $GetHTMLEnumeratedAttrChecker
# Line 4357  $Element->{$HTML_NS}->{script} = { Line 4416  $Element->{$HTML_NS}->{script} = {
4416    %HTMLChecker,    %HTMLChecker,
4417    status => FEATURE_HTML5_DEFAULT | FEATURE_M12N10_REC,    status => FEATURE_HTML5_DEFAULT | FEATURE_M12N10_REC,
4418    check_attrs => $GetHTMLAttrsChecker->({    check_attrs => $GetHTMLAttrsChecker->({
4419        ## TODO: HTML4 |charset|
4420        ## TODO: HTML4 |language|
4421        src => $HTMLURIAttrChecker,        src => $HTMLURIAttrChecker,
4422        defer => $GetHTMLBooleanAttrChecker->('defer'),        defer => $GetHTMLBooleanAttrChecker->('defer'),
4423        async => $GetHTMLBooleanAttrChecker->('async'),        async => $GetHTMLBooleanAttrChecker->('async'),
# Line 4950  $Element->{$HTML_NS}->{center} = { Line 5011  $Element->{$HTML_NS}->{center} = {
5011  $Element->{$HTML_NS}->{font} = {  $Element->{$HTML_NS}->{font} = {
5012    %HTMLTransparentChecker,    %HTMLTransparentChecker,
5013    status => FEATURE_HTML5_AT_RISK | FEATURE_M12N10_REC_DEPRECATED,    status => FEATURE_HTML5_AT_RISK | FEATURE_M12N10_REC_DEPRECATED,
5014    check_attrs => $GetHTMLAttrsChecker->({ ## TODO    check_attrs => $GetHTMLAttrsChecker->({
5015        ## TODO: HTML4 |size|, |color|, |face|
5016        ## TODO: HTML5 |style|
5017    }, {    }, {
5018      %HTMLAttrStatus,      %HTMLAttrStatus,
5019      class => FEATURE_HTML5_DEFAULT | FEATURE_M12N10_REC,      class => FEATURE_HTML5_DEFAULT | FEATURE_M12N10_REC,

Legend:
Removed from v.1.69  
changed lines
  Added in v.1.70

[email protected]
ViewVC Help
Powered by ViewVC 1.1.24