import java.io.ByteArrayInputStream;
import java.io.InputStream;

import javax.xml.transform.ErrorListener;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.sax.SAXSource;

import org.xml.sax.InputSource;

public class JI9028492 implements ErrorListener{
	static final private String INVALID_STYLESHEET = "xxx"; 
	static final private String SYSTEM_ID = "http://myurl.com/myDirectory/myFile.xsl"; 

	public static void main(String[] args) {
		new JI9028492().run(); 
	}

	private void run() {
		System.out.println("This tool reveals JDK errors related to XSLT parsing"); 
		InputStream is = new ByteArrayInputStream(INVALID_STYLESHEET.getBytes()); 
		InputSource source = new InputSource(is); 
		source.setSystemId(SYSTEM_ID); 

		TransformerFactory factory = TransformerFactory.newInstance(); 
		factory.setErrorListener(this); 
		try { 
			factory.newTransformer(new SAXSource(source)); 
		} 
		catch(TransformerConfigurationException e) { 
			System.out.println("We catch a final TransformerConfigurationException"); 
		} 

	}
	
	@Override 
    public void error(TransformerException exception) 
            throws TransformerException 
    { 
        System.out.println("Correctly handled error: " + exception.getMessage()); 
    } 

    @Override 
    public void fatalError(TransformerException exception) 
            throws TransformerException 
    { 
        System.out.println("Correctly handled fatal: " + exception.getMessage()); 
    } 

    @Override 
    public void warning(TransformerException exception) 
            throws TransformerException 
    { 
        System.out.println("Correctly handled warning: " + exception.getMessage()); 
    } 
}
