- From: <danijank@uni-koblenz.de>
- Date: Wed, 12 Aug 2009 14:06:42 +0200 (CEST)
- To: www-validator@w3.org
Dear Sir or Madam,
I'm writing a http-webserver in Java which generates HTML-code and sends
it to the browser. This code isn't a complete HTML-side. It's just some
tags. The whole generated HTML-code has to be checked that it is XHTML
conform.
My idea of doing the check:
Generate a minimum HTML-page which is XHTML conform, put the generated
code into the body, and let it check via file upload. (The Java code is
posted at the end of this mail.)
I tried several URLs:
http://validator.w3.org/check?uploaded_file
http://validator.w3.org/check?uploaded_file=
http://validator.w3.org/check?uploaded_file=1
http://validator.w3.org/check?uploaded_file=test
http://validator.w3.org/check?uploaded_file=Test.html
http://validator.w3.org/check?uploaded_file='Test.html'
http://validator.w3.org/check?uploaded_file="Test.html"
(" was notated as \" when I put it into the Java String)
Each time I got the message:
1. Error
Sorry, this type of URL scheme ("undefined") is not supported by this
service. Please check that you entered the URL correctly.
I looked for help in the internet for several hours, but I didn't know
where the mistake is. What do I have to write as value of uploaded_file?
Yours faithfully,
Daniel Janke
/**
* Checks if <code>html</code> is correct XHTML.
*
* @param html
* @return true iff the online validator sends all ok
*/
private boolean checkXHTML(String html) {
boolean isValid = false;
// validator can only check complete HTML-sides
String side = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>"
+ "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"
\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">"
+ "<html xmlns=\"http://www.w3.org/1999/xhtml\">"
+ "<head>"
+ "<meta http-equiv=\"Content-Type\" content=\"text/html;
charset=UTF-8\" />"
+ "<meta http-equiv=\"Content-Script-Type\"
content=\"text/javascript\" />"
+ "<meta http-equiv=\"Content-Style-Type\" content=\"text/css\" />" +
"<title></title>"
+ "</head>"
+ "<body>"
+ html //the HTML-code
+ "</body>" + "</html>";
try {
// create connection to the validator
URL u = new URL("http://validator.w3.org/check?uploaded_file=test");
HttpURLConnection httpCon = (HttpURLConnection) u.openConnection();
httpCon.setDoOutput(true);
//create boundary
String boundary = "---------------------------";
boundary+=Long.toString(new Random().nextLong(), 36);
boundary+=Long.toString(new Random().nextLong(), 36);
boundary+=Long.toString(new Random().nextLong(), 36);
//set contentType and boundary
httpCon.setRequestProperty("Content-Type",
"multipart/form-data; boundary=" + boundary);
//upload file
OutputStream os = httpCon.getOutputStream();
os.write(("--"+boundary+"\r\n").getBytes());
os.write(("Content-Disposition: form-data; name=\"test\"; "
+"filename=\"Test.html\"\r\n").getBytes());
os.write(("Content-Type: text/html\r\n").getBytes());
os.write(("\r\n").getBytes());
os.write(side.getBytes());
os.write(("\r\n").getBytes());
os.write(("--"+boundary+"--\r\n").getBytes());
os.flush();
os.close();
String header = httpCon.getHeaderField("X-W3C-Validator-Status").trim()
.toLowerCase();
// disconnect
if (!header.equals("valid")) {
// creates an file to see the error message
writeReceived(httpCon.getInputStream(), httpCon);
}
httpCon.disconnect();
System.out.println(header);
isValid = header.equals("valid");
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return isValid;
}
Received on Wednesday, 12 August 2009 20:19:35 UTC