---
name: "WebService::Validator::CSS::W3C"
section: "3pm"
platform: "linux"
package: "libwebservice-validator-css-w3c-perl"
version: "0.3-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/WebService::Validator::CSS::W3C"
---

# WebService::Validator::CSS::W3C(3pm)

Interface to the W3C CSS Validator

## 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  \<https://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, `"https://jigsaw.w3.org/css-validator/validator"` by default.

- my $success = $val-\>validate(%params)

  Validate a style sheet, takes `%params` as defined below. Either `"string"` or `"uri"` 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 that `"GET"` 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"`, and `"presentation"`. A special value `"all"` can also be specified. The default is `"undef"` in which case the CSS Validator determines a value; this would currently be as if `"all"` 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"`, and `"tv"`. A special value `"none"` can also be used. The default is `"undef"` 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,  and `2` will give all warnings, including low level ones. The defaut is `"undef"` in which case the CSS Validator determines a default value; this is expected to be as if `1` 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 supports `"en"`, `"de"`, `"fr"`, `"ja"`, `"nl"`, `"zh"`, and `"zh-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, `"https://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()"` or `"success()"` 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 \<https://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.
```
