import java.io.*;
import java.net.*;
import java.util.*;

import com.sun.xml.parser.Resolver;
import com.sun.xml.tree.XmlDocument;

import org.w3c.dom.*;
import org.xml.sax.*;

/***
 * An application that validates xml web pages
 * usage ValidateXML page1 [page2...]
 * example:  ValidateXML http://www.w3.org 
 * @author mitch fincher, mitch[at]fincher[dot]org, May 2000
**/
public class ValidateXML 
{

public static void PrintWebPage(String addr, Exception e)
    {
	String line = null;
	URLConnection uc = null;
	int lineNumber = 0;
	System.out.println("PrintWebPage: \"" + e+"\"");
	if(e instanceof org.xml.sax.SAXParseException) {
	    lineNumber = ((SAXParseException)e).getLineNumber();
	    System.out.println("getLineNumber(): " + ((SAXParseException)e).getLineNumber());
	    System.out.println("getColumnNumber(): " + ((SAXParseException)e).getColumnNumber());
	    System.out.println("getPublicId(): " + ((SAXParseException)e).getPublicId());
	    System.out.println("getSystemId(): " + ((SAXParseException)e).getSystemId());
	}

	
	try {
	    uc = new URL(addr).openConnection();
	    BufferedReader sin = new BufferedReader(new InputStreamReader(uc.getInputStream()));
	    int i=0;
	    while((line = sin.readLine()) != null) {
		i++;
		if(i == lineNumber) {
		    System.out.println(" *** " + e + " *** " );
		}
		System.out.println(""+i+":"+line);
	    }
	    sin.close();
	}
	// try
	catch (Exception ex)
	    { 
		System.out.println("Exception thrown: " + ex);
		ex.printStackTrace(System.out); 
	    }
    }

///////////////////////////////////////////////////////////////
public static void main(String argv[])
////////////////////////////////////////////////////////////////
    {
	XmlDocument doc = null;
	int numberOfPages = argv.length;
	if(numberOfPages < 0) {
	    System.out.println("usage:  ValidateXML page1 [page2 ...]");
	    System.out.println("  example:  ValidateXML http://www.w3.org ");
	    System.exit(1);
	}
	try {
	    for(int i=0;i<numberOfPages;i++) {
		doc = XmlDocument.createXmlDocument(argv[i], true);
	    }
	}
	catch(Exception e) {
	    System.out.println("ValidateXML.java exception: " + e);
	    e.printStackTrace(System.out);
	    if(argv.length > 0) {
		PrintWebPage(argv[0], e);
	    }
	}
    }
} // ValidateXML
