/*
 * Created on 26 nov. 2003
 * 
 * To change the template for this generated file go to Window - Preferences -
 * Java - Code Generation - Code and Comments
 */

import java.io.*;
import org.w3c.dom.*;
import org.xml.sax.*;
import javax.xml.parsers.*;

public class parser {

	public PrintWriter out = null;

	//Rem changer Package par ModelElement
	public void parse(String _fichier)
		throws SAXException, ParserConfigurationException, IOException {

		// Charger le document
		FileInputStream _xml_input_file = new FileInputStream(_fichier);
		
		parse(_xml_input_file);
	}

	public void parse(InputStream _xml_input_file) throws SAXException, ParserConfigurationException, IOException
	{

		//création du fichier output
		out = new PrintWriter( 
		new FileOutputStream("./output.html"));
		out.println("<html xmlns:fo=\"http://www.w3.org/1999/XSL/Format\"><head />");
		out.println("<body>");
		out.println("<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><h1 align=\"left\">Domaines </h1>");

		//instancier le contrcuteur de parseurs
		DocumentBuilderFactory _factory = DocumentBuilderFactory.newInstance();

		//ignorer les commentaires dans les fichiers XML parsè
		_factory.setIgnoringComments(true);
		
		// créé un parseur
		DocumentBuilder _builder = _factory.newDocumentBuilder();

		// Charger le document
		Document doc = _builder.parse(_xml_input_file);

		// Parser le document
		Element bib = doc.getDocumentElement();
		NodeList filsDeRacine = bib.getChildNodes();
		for(int i=0 ; i<filsDeRacine.getLength();i++)
		{
			Node node = filsDeRacine.item(i);			
			if(node.getNodeType()== Node.ELEMENT_NODE)
			{
				Element domain = (Element)node; //domain = fstElmnt 
				Element title = (Element)domain.getElementsByTagName("title").item(0); //title=fstNmElmntLst 
				String titre = title.getTextContent();
				out.println("<h2> <a href=" + titre + "> " + titre + " </a> </h2>");
				
			}
		}
		out.println("<hr>");out.println("<hr>");
		for(int i=0 ; i<filsDeRacine.getLength();i++)
		{
			Node node = filsDeRacine.item(i);			
			if(node.getNodeType()== Node.ELEMENT_NODE)
			{
				Element domain = (Element)node; //domain = fstElmnt 
				Element title = (Element)domain.getElementsByTagName("title").item(0); //title=fstNmElmntLst 
				String titre = title.getTextContent();
				DomaineTemplate(domain,titre);
			}
		}

		
		out.close();
		out.flush();
	}

	public void DomaineTemplate(Element domaine, String name) {
		//name ne sert à rien
		out.println("<table width=\"100%\" border=\"1\">");
		out.println("	<tr>");
		out.println("   	<td width=\"100%\" bgcolor=\"#C0C0C0\">");
		out.println(
			"			<h2><a name=\"" + domaine.getElementsByTagName("title").item(0).getTextContent() + "\">" + domaine.getElementsByTagName("title").item(0).getTextContent() + "</a></h2>");
		out.println("		</td>");
		out.println("	</tr>");
		out.println("</table>");
		
		NodeList filsDeRacine = domaine.getElementsByTagName("bib_ref");
		
		for(int a=0 ; a<filsDeRacine.getLength();a++)
		{
			Node noeud = filsDeRacine.item(a);
			Element element = (Element)noeud;
			out.println("<hr>");
			out.println(
					"			Annee :" + element.getElementsByTagName("year").item(0).getTextContent());
			out.println(
					"<h3>			Titre :" + element.getElementsByTagName("title").item(0).getTextContent()+"</h3>");
			out.println(
					"			Auteur(s) :"+ element.getElementsByTagName("author").item(0).getTextContent());
			out.println(
					"<br/>			Lien : <a href=\""+ element.getElementsByTagName("weblink").item(0).getTextContent()+"\">"+ element.getElementsByTagName("weblink").item(0).getTextContent()+"</a>");
			
		} 
		
	}		
}