import javax.xml.transform.*;

import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

public class TransformTest
{
    private TransformerFactory transformerFactory = null;
    private DocumentBuilderFactory builderFactory = null;
    private String xmlString =
        "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
        "<page user-id=\"f\" service=\"Login\" session=\"41845463\" base-url=\"/servlets/WUDisp\" cache-time=\"0\">\n" +
        "<page-area id=\"pa1\" title=\"Login\">" +
        "<paragraph id=\"p1\">\n" +
        "<action id=\"a1\" text=\"Ok\" type=\"internal\" service=\"MNU\" function=\"Main\" button=\"accept\"/>\n" +
        "</paragraph>\n" +
        "</page-area>\n" +
        "</page>";
    
    
    public TransformTest()
    {
        transformerFactory = TransformerFactory.newInstance();
        builderFactory = DocumentBuilderFactory.newInstance();
        builderFactory.setValidating(false);
        
        try
        {
            System.out.println(transform());
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
    
    private String transform() throws Exception
    {
        Document document = null;
        try
        {
            InputSource inputSource = new InputSource(new StringReader(xmlString));
            DocumentBuilder builder = builderFactory.newDocumentBuilder();
            document = builder.parse(inputSource);
            
            Source domSource =  new DOMSource(document.getDocumentElement());
            StringWriter writer = new StringWriter();
            Result result = new StreamResult(writer);
            
            StreamSource streamSource = new StreamSource("file:dial11_wml.xsl");
            Templates templates = transformerFactory.newTemplates(streamSource);
            
            Transformer transformer = templates.newTransformer();
            transformer.transform(domSource, result);
            return writer.toString();
        }
        catch (ParserConfigurationException ex)
        {
            throw new IOException(ex.toString());
        }
        catch (SAXException ex)
        {
            throw new TransformerException(ex.toString());
        }
    }
    
    public static void main (String args[])
    {
        new TransformTest();
    }
}

