Validator.nu Web Service Interface
Validator.nu can be called as a Web service. This page documents how.
The schemas are expected to be relatively static. Therefore, I think preloading them into the service or letting the service retrieve them is sufficient. Identification by URI works in both cases.
What needs different input modes is the document that is checked.
I think the following modes would make sense:
- Document URI as a GET parameter; the service retrieves the
document by URI (already implemented).
- Document in a
data:URI as a GET parameter.
- Document POSTed as the HTTP entity body (the preferred Web
service mode; already implemented).
- Document POSTed as an
form field value.
- Document POSTed as a
In the first three modes, additional parameters would be
communicated in the URI query string. In the last two modes,
additional parameters would be communicated like corresponding from
fields are communicated as
I don’t particularly like the last two modes, but they are
needed to address feature requests and for parity with other
services. Also, unlike the first three modes, the last two modes need
companion UI changes, which is not nice. As a further complication,
the last two don’t come naturally with a
for dispatching to an HTML5 parser or to an XML parser.
All these input modes would share the same “service endpoint
URI” (and the same servlet class). The different cases can be
distinguished from the HTTP method and in the POST cases from the
Content-Type request header.
When using Validator.nu as a Web service back end, the XML and JSON output formats are recommended for forward compatibility. The available JSON tooling probably makes consuming JSON easier. The XML format contains XHTML elaborations that are not available in JSON. Both formats are streaming, but streaming XML parsers are more readily available. XML cannot represent some input strings faithfully.
- HTML with microformat-style
classannotations (default output; should not be assumed to be forward-compatibly stable).
- XHTML with microformat-style
&out=xhtmlto URL; should not be assumed to be forward-compatibly stable).
- XML (append
- JSON (append
- Human-readably plain text (append
&out=textto URL; should not be assumed to be forward-compatibly stable for machine parsing).
- GNU error format (needs a better spec)
- Relaxed-compatible (lacks a spec)
- Unicorn-compatible (hoping that Unicorn changes instead)
- W3C Validator-compatible SOAP (legacy)
- EARL (not implemented; domain modeling mismatch)