W3C home > Mailing lists > Public > www-validator-cvs@w3.org > March 2012

2002/css-validator/org/w3c/css/css CssValidator.java,1.14,1.15 DocumentParser.java,1.10,1.11 HTMLParserStyleSheetHandler.java,1.4,1.5 StyleSheetParser.java,1.25,1.26 TagSoupStyleSheetHandler.java,1.12,1.13 XMLStyleSheetHandler.java,1.35,1.36

From: Yves Lafon via cvs-syncmail <cvsmail@w3.org>
Date: Mon, 26 Mar 2012 12:11:27 +0000
To: www-validator-cvs@w3.org
Message-Id: <E1SC8lj-0005f4-QJ@lionel-hutz.w3.org>
Update of /sources/public/2002/css-validator/org/w3c/css/css
In directory hutz:/tmp/cvs-serv21683/css

Modified Files:
	CssValidator.java DocumentParser.java 
	HTMLParserStyleSheetHandler.java StyleSheetParser.java 
	TagSoupStyleSheetHandler.java XMLStyleSheetHandler.java 
Log Message:
various changes to allow direct use + some small typos

Index: XMLStyleSheetHandler.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/css/XMLStyleSheetHandler.java,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -d -r1.35 -r1.36
--- XMLStyleSheetHandler.java	9 Feb 2012 17:36:26 -0000	1.35
+++ XMLStyleSheetHandler.java	26 Mar 2012 12:11:25 -0000	1.36
@@ -35,10 +35,7 @@
 import org.xml.sax.SAXParseException;
 import org.xml.sax.ext.LexicalHandler;
 
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.StringReader;
+import java.io.*;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLConnection;
@@ -596,6 +593,64 @@
         }
     }
 
+    public void parse(InputSource source, String fileName) throws IOException, SAXException {
+        org.xml.sax.XMLReader xmlParser = new org.apache.xerces.parsers.SAXParser();
+        try {
+            xmlParser.setProperty("http://xml.org/sax/properties/lexical-handler",
+                    this);
+            xmlParser.setFeature("http://xml.org/sax/features/namespace-prefixes", true);
+            xmlParser.setFeature("http://xml.org/sax/features/validation", false);
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        }
+        xmlParser.setContentHandler(this);
+        if (fileName != null) {
+            baseURI = new URL(fileName);
+            documentURI = new URL(fileName);
+            source.setSystemId(fileName);
+        }
+        URL ref = ac.getReferrer();
+        try {
+            ac.setReferrer(documentURI);
+            xmlParser.parse(source);
+        } finally {
+            ac.setReferrer(ref);
+        }
+    }
+
+    /**
+     * Parse an HTML document, given as an InputStream
+     *
+     * @param is     the inputstream of the document
+     * @param docref the String version of the URI of the document
+     * @throws IOException
+     * @throws SAXException
+     */
+    public void parse(InputStream is, String docref) throws IOException, SAXException {
+        InputSource inputSource = new InputSource(is);
+        try {
+            parse(inputSource, docref);
+        } finally {
+            is.close();
+        }
+    }
+
+    /**
+     * Parse an HTML document, given as a Reader
+     *
+     * @param reader the Reader of the document
+     * @throws IOException
+     * @throws SAXException
+     */
+    public void parse(Reader reader) throws IOException, SAXException {
+        InputSource inputSource = new InputSource(reader);
+        try {
+            parse(inputSource, null);
+        } finally {
+            reader.close();
+        }
+    }
+
     HashMap<String, String> getValues(String data) {
         int length = data.length();
         int current = 0;

Index: HTMLParserStyleSheetHandler.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/css/HTMLParserStyleSheetHandler.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- HTMLParserStyleSheetHandler.java	9 Feb 2012 17:36:26 -0000	1.4
+++ HTMLParserStyleSheetHandler.java	26 Mar 2012 12:11:25 -0000	1.5
@@ -36,10 +36,7 @@
 import org.xml.sax.SAXParseException;
 import org.xml.sax.ext.LexicalHandler;
 
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.StringReader;
+import java.io.*;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLConnection;
@@ -527,8 +524,7 @@
         }
     }
 
-    public void parse(InputStream in, String fileName) throws IOException, SAXException {
-        InputSource source = new InputSource(in);
+    public void parse(InputSource source, String fileName) throws IOException, SAXException {
         org.xml.sax.XMLReader xmlParser = new nu.validator.htmlparser.sax.HtmlParser(ALLOW);
         try {
             xmlParser.setProperty("http://xml.org/sax/properties/lexical-handler",
@@ -548,7 +544,38 @@
             xmlParser.parse(source);
         } finally {
             ac.setReferrer(ref);
-            in.close();
+        }
+    }
+
+    /**
+     * Parse an HTML document, given as an InputStream
+     * @param is the inputstream of the document
+     * @param docref the String version of the URI of the document
+     * @throws IOException
+     * @throws SAXException
+     */
+    public void parse(InputStream is, String docref) throws IOException, SAXException {
+        InputSource inputSource = new InputSource(is);
+        try {
+            parse(inputSource, docref);
+        } finally {
+            is.close();
+        }
+    }
+
+    /**
+     * Parse an HTML document, given as a Reader
+     * @param reader the Reader of the document
+     * @param docref the String version of the URI of the document
+     * @throws IOException
+     * @throws SAXException
+     */
+    public void parse(Reader reader, String docref) throws IOException, SAXException {
+        InputSource inputSource = new InputSource(reader);
+        try {
+            parse(inputSource, docref);
+        } finally {
+            reader.close();
         }
     }
 

Index: DocumentParser.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/css/DocumentParser.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- DocumentParser.java	16 Feb 2012 13:29:22 -0000	1.10
+++ DocumentParser.java	26 Mar 2012 12:11:25 -0000	1.11
@@ -14,6 +14,7 @@
 import org.w3c.www.mime.MimeTypeFormatException;
 
 import java.io.IOException;
+import java.io.Reader;
 import java.net.URL;
 import java.net.URLConnection;
 
@@ -37,6 +38,41 @@
     private Exception exception;
     private ApplContext ac;
 
+    public DocumentParser(ApplContext ac, Reader reader) throws Exception {
+        this(ac, reader, "urn:unknown", null);
+    }
+
+    public DocumentParser(ApplContext ac, Reader reader, String urlString, MimeType mediatype) throws Exception {
+        this.htmlURL = HTTPURL.getURL(urlString);
+        this.ac = ac;
+        String media = ac.getMedium();
+
+        if (mediatype == null) {
+            mediatype = MimeType.TEXT_CSS;
+        }
+        if (mediatype.match(MimeType.TEXT_CSS) == MimeType.MATCH_SPECIFIC_SUBTYPE) {
+            StyleSheetParser csshandler = new StyleSheetParser();
+            csshandler.parseStyleSheet(ac, reader, htmlURL);
+            style = csshandler.getStyleSheet();
+        } else if (mediatype.match(MimeType.TEXT_HTML) == MimeType.MATCH_SPECIFIC_SUBTYPE) {
+            TagSoupStyleSheetHandler htmlhandler = new TagSoupStyleSheetHandler(htmlURL, ac);
+            //HTMLParserStyleSheetHandler htmlhandler = new HTMLParserStyleSheetHandler(htmlURL, ac);
+            htmlhandler.parse(reader);
+            style = htmlhandler.getStyleSheet();
+            if (style != null) {
+                style.setType("text/html");
+            }
+        } else if (mediatype.toString().endsWith("+xml") ||
+                (mediatype.match(MimeType.APPLICATION_XML) ==  MimeType.MATCH_SPECIFIC_SUBTYPE)) {
+            XMLStyleSheetHandler xmlhandler = new XMLStyleSheetHandler(htmlURL, ac);
+            xmlhandler.parse(reader);
+            style = xmlhandler.getStyleSheet();
+            if (style != null) {
+                style.setType("text/xml");
+            }
+        }
+    }
+
     /**
      * Create a new DocumentParser
      *

Index: TagSoupStyleSheetHandler.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/css/TagSoupStyleSheetHandler.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- TagSoupStyleSheetHandler.java	9 Feb 2012 17:36:26 -0000	1.12
+++ TagSoupStyleSheetHandler.java	26 Mar 2012 12:11:25 -0000	1.13
@@ -16,30 +16,14 @@
 import org.w3c.css.parser.CssError;
 import org.w3c.css.parser.Errors;
 import org.w3c.css.parser.analyzer.TokenMgrError;
-import org.w3c.css.util.ApplContext;
-import org.w3c.css.util.CssVersion;
-import org.w3c.css.util.HTTPURL;
-import org.w3c.css.util.InvalidParamException;
-import org.w3c.css.util.Util;
-import org.w3c.css.util.Warning;
-import org.w3c.css.util.Warnings;
+import org.w3c.css.util.*;
 import org.w3c.css.util.xml.XMLCatalog;
 import org.w3c.www.mime.MimeType;
 import org.w3c.www.mime.MimeTypeFormatException;
-import org.xml.sax.Attributes;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.EntityResolver;
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.InputSource;
-import org.xml.sax.Locator;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
+import org.xml.sax.*;
 import org.xml.sax.ext.LexicalHandler;
 
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.StringReader;
+import java.io.*;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLConnection;
@@ -519,8 +503,7 @@
         }
     }
 
-    public void parse(InputStream in, String fileName) throws IOException, SAXException {
-        InputSource source = new InputSource(in);
+    public void parse(InputSource source, String fileName) throws IOException, SAXException {
         org.xml.sax.XMLReader xmlParser = new org.ccil.cowan.tagsoup.Parser();
         try {
             xmlParser.setProperty("http://xml.org/sax/properties/lexical-handler",
@@ -531,16 +514,50 @@
             ex.printStackTrace();
         }
         xmlParser.setContentHandler(this);
-        baseURI = new URL(fileName);
-        documentURI = new URL(fileName);
-        source.setSystemId(fileName);
+        if (fileName != null) {
+            baseURI = new URL(fileName);
+            documentURI = new URL(fileName);
+            source.setSystemId(fileName);
+        }
         URL ref = ac.getReferrer();
         try {
             ac.setReferrer(documentURI);
             xmlParser.parse(source);
         } finally {
             ac.setReferrer(ref);
-            in.close();
+        }
+    }
+
+    /**
+     * Parse an HTML document, given as an InputStream
+     *
+     * @param is     the inputstream of the document
+     * @param docref the String version of the URI of the document
+     * @throws IOException
+     * @throws SAXException
+     */
+    public void parse(InputStream is, String docref) throws IOException, SAXException {
+        InputSource inputSource = new InputSource(is);
+        try {
+            parse(inputSource, docref);
+        } finally {
+            is.close();
+        }
+    }
+
+    /**
+     * Parse an HTML document, given as a Reader
+     *
+     * @param reader the Reader of the document
+     * @throws IOException
+     * @throws SAXException
+     */
+    public void parse(Reader reader) throws IOException, SAXException {
+        InputSource inputSource = new InputSource(reader);
+        try {
+            parse(inputSource, null);
+        } finally {
+            reader.close();
         }
     }
 

Index: CssValidator.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/css/CssValidator.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- CssValidator.java	3 Oct 2011 17:07:08 -0000	1.14
+++ CssValidator.java	26 Mar 2012 12:11:25 -0000	1.15
@@ -9,17 +9,19 @@
 
 package org.w3c.css.css;
 
-import org.w3c.css.parser.CssSelectors;
 import org.w3c.css.util.ApplContext;
 import org.w3c.css.util.CssVersion;
 import org.w3c.css.util.HTTPURL;
 import org.w3c.css.util.Util;
 import org.w3c.tools.resources.ProtocolException;
+import org.w3c.www.mime.MimeType;
 
 import java.io.IOException;
 import java.io.OutputStreamWriter;
 import java.io.PrintWriter;
+import java.io.Reader;
 import java.net.MalformedURLException;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
@@ -38,12 +40,11 @@
     // @@ HACK
     static boolean showCSS = false;
 
-    private Exception exception;
 
     /**
      * Creates a new instance of CssValidator with the following default values:
      * <ul>
-     * <li>profile = css21</li>
+     * <li>profile = &gt;default&lt;</li>
      * <li>medium = all</li>
      * <li>output = text</li>
      * <li>lang = en</li>
@@ -61,11 +62,30 @@
         params.put("vextwarning", "false");
     }
 
+    public CssValidator(String profile, String medium, String lang, int warninglevel, boolean vextwarning, boolean followlinks) {
+        ac = new ApplContext(lang);
+        ac.setCssVersionAndProfile(profile);
+        ac.setMedium(medium);
+        ac.setTreatVendorExtensionsAsWarnings(vextwarning);
+        ac.setWarningLevel(warninglevel);
+        ac.setFollowlinks(followlinks);
+    }
+
+    public void setOptionsFromParams() {
+        // CSS version to use
+        String profile = params.get("profile");
+        ac.setCssVersionAndProfile(profile);
+
+        // medium to use
+        ac.setMedium(params.get("medium"));
+
+        String vextwarn = params.get("vextwarning");
+        ac.setTreatVendorExtensionsAsWarnings("true".equalsIgnoreCase(vextwarn));
+    }
+
     public static void main(String args[])
             throws IOException, MalformedURLException {
 
-        CssSelectors selector = null;
-
         CssValidator style = new CssValidator();
 
         // first, we get the parameters and create an application context
@@ -113,15 +133,7 @@
             System.exit(1);
         }
 
-        // CSS version to use
-        String profile = (String) style.params.get("profile");
-        style.ac.setCssVersionAndProfile(profile);
-
-        // medium to use
-        style.ac.setMedium((String) style.params.get("medium"));
-
-        String vextwarn = (String) style.params.get("vextwarning");
-        style.ac.setTreatVendorExtensionsAsWarnings("true".equalsIgnoreCase(vextwarn));
+        style.setOptionsFromParams();
 
         String encoding = style.ac.getMsg().getString("output-encoding-name");
         if (encoding != null) {
@@ -182,6 +194,42 @@
 
     }
 
+    public void handleCSSStyleSheet(ApplContext ac, Reader reader, URL docref) {
+        StyleSheet sheet;
+        DocumentParser parser = null;
+        try {
+            parser = new DocumentParser(ac, reader, docref.toString(), MimeType.TEXT_CSS);
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        }
+        sheet = parser.getStyleSheet();
+        sheet.findConflicts(ac);
+    }
+
+    public void handleHTMLStyleSheet(ApplContext ac, Reader reader, URL docref) {
+        StyleSheet sheet;
+        DocumentParser parser = null;
+        try {
+            parser = new DocumentParser(ac, reader, docref.toString(), MimeType.TEXT_HTML);
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        }
+        sheet = parser.getStyleSheet();
+        sheet.findConflicts(ac);
+    }
+
+    public void handleXMLStyleSheet(ApplContext ac, Reader reader, URL docref) {
+        StyleSheet sheet;
+        DocumentParser parser = null;
+        try {
+            parser = new DocumentParser(ac, reader, docref.toString(), MimeType.APPLICATION_XML);
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        }
+        sheet = parser.getStyleSheet();
+        sheet.findConflicts(ac);
+    }
+
     /**
      * Analyses the command-line parameters
      *

Index: StyleSheetParser.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/css/StyleSheetParser.java,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -d -r1.25 -r1.26
--- StyleSheetParser.java	9 Feb 2012 17:36:26 -0000	1.25
+++ StyleSheetParser.java	26 Mar 2012 12:11:25 -0000	1.26
@@ -391,6 +391,16 @@
     }
 
     /**
+     * Unify call to the parser for css doc as a reader.
+     * @param ac
+     * @param reader
+     * @param docref
+     */
+    public void parseStyleSheet(ApplContext ac, Reader reader, URL docref) {
+        parseStyleElement(ac, reader, null, null, (docref == null) ? ac.getFakeURL() : docref, 0);
+    }
+
+    /**
      * Parse some declarations. All declarations always comes from the user
      *
      * @param input the inputStream containing the style data
Received on Monday, 26 March 2012 12:11:35 UTC

This archive was generated by hypermail 2.3.1 : Wednesday, 7 January 2015 15:17:49 UTC