NAME
WebService::Validator::CSS::W3C - Interface to the W3C CSS Validator
SYNOPSIS
use WebService::Validator::CSS::W3C;
my $css = "p { color: not-a-color }";
my $val = WebService::Validator::CSS::W3C->new;
my $ok = $val->validate(string => $css);
if ($ok and !$val->is_valid) {
print "Errors:\n";
printf " * %s\n", $_->{message}
foreach $val->errors
}
DESCRIPTION
This module is an interface to the W3C CSS Validation online service http://jigsaw.w3.org/css-validator/, based on its SOAP 1.2 support. It helps to find errors in Cascading Style Sheets.
The following methods are available:
- my $val = WebService::Validator::CSS::W3C->new
- my $val = WebService::Validator::CSS::W3C->new($ua)
- my $val = WebService::Validator::CSS::W3C->new($ua, $url)
-
Creates a new WebService::Validator::CSS::W3C object. A custom LWP::UserAgent object can be supplied which is then used for HTTP communication with the CSS Validator. $url is the URL of the CSS Validator,
http://jigsaw.w3.org/css-validator/validator
by default. - my $success = $val->validate(%params)
-
Validate a style sheet, takes
%params
as defined below. Eitherstring
oruri
must be supplied. Returns a true value if the validation succeeded (regardless of whether the style sheet contains errors).- string => $css
-
A style sheet as a string. It is currently unlikely that validation will work if the string is not a legal UTF-8 string. If a string is specified, the
uri
parameter will be ignored. Note thatGET
will be used to pass the string to the Validator, it might not work with overly long strings. - uri => $uri
-
The location of a style sheet or a HTML/XHTML/SVG document containing or referencing style sheets.
- medium => "print"
-
The medium for which the style sheet should apply, one of
aural
,braille
,embossed
,handheld
,print
,screen
,tty
,tv
, andpresentation
. A special valueall
can also be specified. The default isundef
in which case the CSS Validator determines a value; this would currently be as ifall
had been specified. - profile => "css3"
-
The CSS Version or profile to validate against, legal values are
css1
,css2
,css21
,css3
,svg
,svgbasic
,svgtiny
,mobile
,atsc-tv
, andtv
. A special valuenone
can also be used. The default isundef
in which case the CSS Validator determines a default. - warnings => 2
-
Either "no" or an integer
0
-2
that determines how many warning messages you want to get back from the CSS Validator. "no" means no warning,0
means only the most serious warnings, and2
will give all warnings, including low level ones. The defaut isundef
in which case the CSS Validator determines a default value; this is expected to be as if1
had been specified. - language => "de"
-
The desired language of the supposedly human-readable messages. The string will passed as an
Accept-Language
header in the HTTP request. The CSS Validator currently supportsen
,de
,fr
,ja
,nl
,zh
, andzh-cn
.
- my $success = $val->success
-
Same as the return value of
validate()
. - my $is_valid = $val->is_valid
-
Returns a true value if the last attempt to
validate()
succeeded and the validator reported no errors in the style sheet. - my $num_errors = $val->errorcount
-
returns the number of errors found for the checked style sheet. Get the details of the errors with $val->errors (see below).
- my @errors = $val->errors
-
Returns a list with information about the errors found for the style sheet. An error is a hash reference; the example in the synopsis would currently return something like
( { context => 'p', property => 'color', expression => { start => '', end => 'not-a-color' } errortype => 'parse-error', message => 'not-a-color is not a color value', line => 0, } )
- my $num_warnings = $val->warningcount
-
returns the number of warnings found for the checked style sheet. Get the details of each warning with $val->warnings (see below).
- my @warnings = $val->warnings
-
Returns a list with information about the warnings found for the style sheet.
- my $ua = $val->user_agent
- my $ua = $val->user_agent($new_ua)
-
The LWP::UserAgent object you supplied to the constructor or a custom object created at construction time you can manipulate.
# set timeout to 30 seconds $val->user_agent->timeout(30);
You can also supply a new object to replace the old one.
- my $uri = $val->validator_uri
- my $uri = $val->validator_uri($validator_uri)
-
Gets or sets the URI of the validator. If you did not specify a custom URI,
http://jigsaw.w3.org/css-validator/validator
by default. - my $response = $val->response
-
The HTTP::Response object returned from the last request. This is useful to determine why validation might have failed.
if (!$val->validate(string => $css)) { if (!$val->response->is_success) { print $val->response->message, "\n" } }
- my $uri = $val->request_uri
-
The URI object used for the last request.
- my $som = $val->som
-
The SOAP::SOM object for the last successful deserialization, check the return value of
validate()
orsuccess()
before using the object.
BUGS
This module uses the SOAP interface for the W3C CSS validatom, which still has a number of bugs, tracked via W3C's Bugzilla, http://www.w3.org/Bugs/Public/.
Please report bugs in the W3C CSS Validator to www-validator-css@w3.org or enter them directly in Bugzilla (see above). Please report bugs in this module via RT, http://rt.cpan.org/.
NOTE
This module is not directly associated with the W3C. Please remember that the CSS Validator is a shared resource so do not abuse it: you should sleep between requests, and consider installing the Validator locally, see http://jigsaw.w3.org/css-validator/DOWNLOAD.html.
AUTHOR / COPYRIGHT / LICENSE
Copyright 2004-2013 Bjoern Hoehrmann <bjoern@hoehrmann.de>.
This module is licensed under the same terms as Perl itself.