- From: Olivier Thereaux via cvs-syncmail <cvsmail@w3.org>
- Date: Wed, 28 Mar 2007 05:51:17 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/validator/httpd/cgi-bin In directory hutz:/tmp/cvs-serv27048 Modified Files: check Log Message: routine to check presence and value of xmlns attribute, generally necessary for conformance, but not well expressed in DTD Index: check =================================================================== RCS file: /sources/public/validator/httpd/cgi-bin/check,v retrieving revision 1.488 retrieving revision 1.489 diff -u -d -r1.488 -r1.489 --- check 28 Mar 2007 02:34:04 -0000 1.488 +++ check 28 Mar 2007 05:51:14 -0000 1.489 @@ -2177,6 +2177,63 @@ $self->{am_in_heading} = 1; } + if (($element->{Name} eq 'html') and ($self->{_file}->{Mode} eq 'XML')){ + # we check if xmlns has been properly given + my $has_xmlns = FALSE; + my $xmlns_value = undef; + foreach my $attr (keys %{$element->{Attributes}}) { + if ($element->{Attributes}->{$attr}->{Name} eq "xmlns") { + # Try with SAX method + if($element->{Attributes}->{$attr}->{Value} ){ + $has_xmlns = TRUE; + $xmlns_value = $element->{Attributes}->{$attr}->{Value}; + } + #next if ($has_xmlns); + + # the following is not SAX, but OPENSP specific + + if ( $element->{Attributes}->{$attr}->{Defaulted}){ + + if ($element->{Attributes}->{$attr}->{Defaulted} eq "specified") { + $has_xmlns = TRUE; + foreach my $datachunk (@{$element->{Attributes}->{$attr}->{CdataChunks}}) { + $xmlns_value = $xmlns_value.$datachunk->{Data}; + } + } + } + + } + } + if ($has_xmlns == FALSE){ + my $err; + my $location = $self->{_parser}->get_location(); + $err->{src} = '...'; # do this with show_open_entities()? + $err->{line} = $location->{LineNumber}; + $err->{char} = $location->{ColumnNumber}; + $err->{num} = "no-xmlns"; + $err->{type} = "E"; + $err->{msg} = "Missing xmlns attribute for element ".$element->{Name}; + + # ... + $self->{_file}->{'Is Valid'} = FALSE; + push @{$self->{_file}->{Errors}}, $err; + } + elsif (($has_xmlns == TRUE) and ($xmlns_value ne $CFG->{Types}->{$self->{_file}->{DOCTYPE}}->{Namespace}) ) { + my $err; + + $err->{src} = '...'; # do this with show_open_entities()? + $err->{line} = $element->{Location}; + $err->{char} = $element->{Location}; + $err->{num} = "wrong-xmlns"; + $err->{type} = "E"; + $err->{msg} = "Wrong xmlns attribute for element ".$element->{Name}.". Value should be". $CFG->{Types}->{$self->{_file}->{DOCTYPE}}->{Namespace}; + + # ... + $self->{_file}->{'Is Valid'} = FALSE; + push @{$self->{_file}->{Errors}}, $err; + + } + } }
Received on Wednesday, 28 March 2007 05:51:19 UTC