<html>
<head>

    <%@ page 
    import = "org.w3c.dom.*,org.apache.xerces.parsers.DOMParser,org.xml.sax.*"
    %>

    <title>Fiches du campus virtuel en version XML</title>
    <!-- Changed by: S.M.M, 19-Jan-1999 -->		
    <!-- Changed by: DKS, avr-2000 -->

    </head>
    <BODY BGCOLOR="#eeeeff">
    
    <h1>Fiches du campus virtuel en version XML</h1>
    (enfin il s'agit d'une simple démo ....)
<hr>
    
    <P>
    <B>http://tecfa2.unige.ch/guides/java/staf2x/ex/xml/fiches/v2/fiches-arbre-fixe.jsp</B> affiche un document XML sous forme d'un arbre au format HTML. 
    La <A HREF="fiches-arbre-fixe.jsp.text">source</a> est disponible et
    une <A HREF="fiches-arbre.jsp">version plus smart</a> affiche mieux
les éléments du même type qui se suivent.
    </P>
    <P>
    Il s agit ici de la version "arbre". Une version <A HREF="fiches.jsp"> table</a> est aussi disponible.
    </P>
    <P>
    Le contenu du fichier XML (http://tecfa.unige.ch/guides/java/staf2x/ex/xml/fiches/Fiches2.xml) peut être visualisé en regardant le fichier
    <A HREF="http://tecfa.unige.ch/guides/java/staf2x/ex/xml/fiches/Fiches2.text">Fiches2.text</A>.
    </P>
    <P>
    <B>Attention:</B> le fichier XML est ISO-8859-1 encoded (accents tels qu'on les tape sous Unix ou Win).
    </P>
    <P>
Pour les autres versions (Application, servlet, etc.) voir
<A HREF="http://tecfa.unige.ch/guides/java/staf2x/ex/xml/fiches/">http://tecfa.unige.ch/guides/java/staf2x/ex/xml/fiches/</A>
   </P>

    <hr />

<%
    // URL	
    String URL = "http://tecfa.unige.ch/guides/java/staf2x/ex/xml/fiches/Fiches2.xml";
    // Entry element (fiche)
    String ROOT_ELEMENT_TAG = "Entry";

    // DONNEES
    // charge le document et cree le document xml ou exit si cela ne marche pos
    // Note: Il est OBLIGATOIRE d'implementer ce try (avec xml.jar de Sun en tout cas!)
    
    try {
	DOMParser parser = new DOMParser();
	parser.parse(URL);
	Document TheDocument = parser.getDocument();
	
	// Say Hello
	out.println("<p>Fiches structurés par " + ROOT_ELEMENT_TAG+" : </p>");
	

	// List of entries (fiches)
	NodeList entries = TheDocument.getDocumentElement().getElementsByTagName(ROOT_ELEMENT_TAG);
	int nEntries = entries.getLength();
	
	// Deal Entry by Entry
	for(int i=0; i < nEntries; i++) {
	    Element currentEntry = (Element) entries.item(i);
	    NodeList entryItems = currentEntry.getChildNodes();
	    int nEntryItems = entryItems.getLength();
	    out.println("<ul><li><b>Fiche numéro " + i + "/"
			+ nEntries + " :</b>");
	    
	    out.println("<dl>");
	    Element lastItem = null;
	    
	    // Deal with each Item for the current Entry

	    for (int j=0; j < nEntryItems; j++) {
		
		// test if the item is real element
		if (entryItems.item(j) instanceof Element) {
		    Element item = (Element)entryItems.item(j);
		    currentEntry.getChildNodes();
		    out.println("<dt><i>" + item.getTagName() + ":</i></dt>");
		    out.println("<dd>");
		    NodeList itemStringNodes = item.getChildNodes();
		    String itemValue = new String();
		    for(int k=0; k<itemStringNodes.getLength(); k++){
			itemValue = ((Node) itemStringNodes.item(k)).getNodeValue().trim();
			if(!itemValue.equals("")&&!itemValue.equals("\r")) {
			    break;
			}
		    }
		    if (itemValue.toUpperCase().startsWith("HTTP://"))
			{
			    out.println("<a href=" + itemValue + ">" + itemValue + "</a>");
			}
		    else
			{
			    out.println(itemValue);
			}
		out.println("</dd>");
		}
	    }
	    out.println("</dl></li>");
	    out.println("</ul>");
	    
	}
	
	out.println( "<hr>Copyright TECFA, 1999. FreeWare.");
	
    }

  catch (SAXParseException e) { 
      out.println("The File is not well formed.");
      out.println(e.getMessage()
			 + " at line " + e.getLineNumber() 
			 + ", column " + e.getColumnNumber());
  }
  catch (SAXException e) { 
      out.println("SAX exception found");
      out.println(e.getMessage());
      // e.printStackTrace(out);
  }
  catch (Exception e) {
      out.println (e.getMessage());
      // e.printStackTrace(out);
      out.println ("<p>On arrete tout de suite, reparez l'erreur SVP<p><hr>");
      return;
  }

%>

</body>
</html>
