Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    77

    come faccio a trasformare xml in html?

    Ciao a tutti ho un problema di questo tipo:

    ho una servlet (visulaizza_ristorante.class) che mi deve visualizzare il contenuto di un file xml (osteria.xml) in formato html usando un xsl (visualizza.xsl)

    poi ho un'altra servlet (modifica_ristorante.class) che mi deve visualizzare il contenuto dello stesso xml (osteria.xml) ancora in html ma diversamente con un xslt (modifica.xsl)

    In poche parole quello che mi serve è come faccio con librerie java a creare un processore xslt che prenda in ingresso il mio file xml e xslt e mi produca l'html desiderato? E come faccio a spedirlo al client?

    Uso tomcat6 e java5, tutto il resto della mia applicazione funziona, ma non so come fare a fare sta cosa.

    Pensavo di usare Xalan ma non so bene come fare...POTETE AIUTARMI??
    GRAZIE

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    7
    Ciao.Potresti navigare il DOM del tuo file xml e con la servlet fare tanti out.println() e scrivere il contenuto del tuo file.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Se usi solo le servlet, importi la libreria Xalan, poi nel codice della servlet
    codice:
    PrintWriter out = response.getWriter();
    TransformerFactory tFactory = TransformerFactory.newInstance();
    try {
       Transformer transformer = tFactory.newTransformer(new StreamSource("PathFileXsl"));
       transformer.transform(new StreamSource("PathFileXml"), new StreamResult(out));
    } catch (TransformerConfigurationException ex) {
       ex.printStackTrace();
    } catch (TransformerException ex) {
       ex.printStackTrace();
    }
    out.close();
    Se usi anche pagine jsp ti conviene usare le taglib.

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    77
    Ok ho fatto come dice simo...MA MI DA ERRORE SU TUTTI I METODI DELLE TRASFORMAZIONI, in poche parole sbaglio gli import

    COSA DEVO METTERE NEGLI IMPORT??

    Io sul mio pc ho questo percorso per il file xalan.jar
    c:/programmi/java/librerie_aggiunte/processore xslt (xalan 2.7)/xalan-j_2_7_0-bin-2jars/xalan-j_2_7_0/xalan.jar
    e ho impostato la variabile classpath di windows con l'aggiunta di tale percorso

    POI SCRIVO COSì NELL'IMPORT
    import org.apache.xalan.xslt.*;

    E' GIUSTO?? COS'ALTRO DEVO FARE???

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    77
    MI DA ANCHE ERRORE SUGLI StreamSource e StreamResult dicendomi che non trova le classi, COSA DEVO IMPORTARE PER QUESTI?????

    RIPORTO IL CODICE DELLA MIA SERVLET PER FARVI CAPIRE MEGLIO COSA HO FATTO:

    codice:
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;
    import java.io.File;
    import java.util.*;
    import java.text.*;
    import java.util.Iterator;
    import java.util.List;
    import org.apache.xalan.xslt.*;
    
    public class visualizza_ristorante_da_modificare extends HttpServlet{
    	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
    		String ristorante = request.getParameter("ristorante");
    		StringBuffer buf = new StringBuffer();
    		String city = request.getParameter("city");
    		String pathxsl = new String("../webapps/restaurants/xslt/visualizza_ristorante_da_modificare.xsl");		
    		response.setContentType("text/html");
    		PrintWriter responseOutput = response.getWriter();
    		String pathfile = new String ("../webapps/restaurants/xml/ristoranti/" + city + "/" + ristorante+".xml");
    		File file = new File(pathfile);
    		if (!file.exists()){
    			buf.append("Il ristorante non è più presente in archivio");
    			responseOutput.println(buf.toString());
    		}
    		else{
    			//TRASFORMA L'XML IN HTML CON L'XSL
    			TransformerFactory tFactory = TransformerFactory.newInstance();
    			try {
       				Transformer transformer = tFactory.newTransformer(new StreamSource(pathxsl));
       				transformer.transform(new StreamSource(pathfile), new StreamResult(responseOutput));
    			} 
    			catch (TransformerConfigurationException ex) {
       				ex.printStackTrace();
    			} 
    			catch (TransformerException ex) {
    		   		ex.printStackTrace();
    			}
    		}
    		responseOutput.close();	
    	}
    }

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    77
    OK HO RISOLTO SOLO A METà, SCUSATE MA SONO IO CHE NON SO ANCORA BENE COME USARE GLI IMPORT, ORA HO CAPITO CHE LA CLASSPATH INDICA DOVE ANDARE A CERCARE LE CLASSI CHE IL COMPILATORE NON TROVA NELLE CARTELLE DI DEFAULT DI JAVA O NELLA DIRECTY CORRENTE E CHE NELL'IMPORT SI DESCRIVER IL PERCORSO DA SEGUIRE ALL'INTERNO DEL .JAR CHE è INDICATO DALLA CLASSPATH. QUINDI L'IMPORT NON DIPENDE DA DOVE HO MESSO LA LIBRERIA .JAR SUL MIO PC, QUELLO LO SPECIFICO NELLA CLASSPATH.
    QUINDI INDIPENDENTEMENTE DAL PERCORSO SUL MIO PC DELLLA LIBRERIA CHE CONTIENE LA CLASSE IMPORTATA L'IMPORT SARà LO STESSO ..



    SOLO A METà NEL SENSO CHE ORA IL .JAVA RIESCO A COMPILARLO, E NON DA NESSUN ERRORE, MA QUANDO RICHIAMO LA SSERVLET DAL LINK NEL SITO IL RISULTATO DELLA SERVLET è COMPLETAMENTE BIANCO, UNA PAGINA BIANCA E LA SERVLET INVECE DOVREBBE BUTTAR FUORI LXML TRASFORMATO IN HTML TRAMITE L'XSL.
    XSL FUNZIONA COME VOGLIO IO PERCHè HO PROVATO A COLLEGARLO ALL'XML DICIAMO COSì A MANO INDICANDOLO DIRETTAMENTE COME FOGLIO DI DTILE ASSOCIATO NEL FILE XML PER VEDERE SE ANDAVA E VA. POI LO TOLTO DAL FILE XML COME FOGLIO DI STILE ASSOCIATO PERCHè DE VE EESSERE COLLEGATO NELLA SERVLET TRAMITE XALAN


    QUALE PUò ESSERE IL PROBLEMA???
    L'ULTIMA VERSIONE DELLA SERVLET è:
    codice:
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;
    import java.io.File;
    import java.util.*;
    import java.text.*;
    import java.util.Iterator;
    import java.util.List;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.Transformer;
    import javax.xml.transform.TransformerException;
    import javax.xml.transform.TransformerConfigurationException;
    import javax.xml.transform.stream.*;
    public class visualizza_ristorante_da_modificare extends HttpServlet{
    	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
    		String ristorante = request.getParameter("ristorante");
    		StringBuffer buf = new StringBuffer();
    		String city = request.getParameter("city");
    		String pathxsl = new String("../webapps/restaurants/xslt/visualizza_ristorante_da_modificare.xsl");		
    		response.setContentType("text/html");
    		PrintWriter responseOutput = response.getWriter();
    		String pathfile = new String ("../webapps/restaurants/xml/ristoranti/" + city + "/" + ristorante+".xml");
    		File file = new File(pathfile);
    		if (!file.exists()){
    			buf.append("Il ristorante non è più presente in archivio");
    			responseOutput.println(buf.toString());
    		}
    		else{
    			//TRASFORMA L'XML IN HTML CON L'XSL
    			TransformerFactory tFactory = TransformerFactory.newInstance();
    			try {
       				Transformer transformer = tFactory.newTransformer(new StreamSource(pathxsl));
       				transformer.transform(new StreamSource(pathfile), new StreamResult(responseOutput));
    			} 
    			catch (TransformerConfigurationException ex) {
       				ex.printStackTrace();
    			} 
    			catch (TransformerException ex) {
    		   		ex.printStackTrace();
    			}
    		}
    		responseOutput.close();	
    	}
    }

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    77
    PER SPIEGARMI MEGLIO ANCORA VI DICO CHE UNA VOLTA CHE LANCIO DAL SITO LA SERVLET CHE MI DEVE DARE IL RISULTATO DELLA TRASFORMAZIONE DELLXML IN HTML, ANCHE SE SUCCEDE CHE MI RESTITUISCE APPARENTEMENTE UNA PAGINA BIANCA, SE IO SU TALE PAGINA BIANCA CLICCO CON IL TASTO DESTRO DEL MOUDE E SCELGO HTML, VEDO CHE IL SORGENTE HTML DI TALE PAGINA è PRORPIO IL RISULTATO GIUSTO CHE IO MI ASPETTAVO DALLA TRASFORMNAZIONE XSL, E ALLORA PERCHè NEL CODICE HTML DELLA PAGINA C'è , MA LA PAGINA è BIANCA?
    ----------
    OK SONO RIUSCITO PERò A CAPIRE IL PERCHè, SE IO TOLGO IL CSS INTERNO AL'HTML PRODOTTO DALL'XSL IL TUTTO VA E LA PAGINA NON è PIù BIANCA, MA COSì VIENE VISUALIZZATA BRUTTA DAL PUNTO DI VISTA DEL LAYOUT.
    QUALCUNO SA DIRMI SE CI SONO DEI PROBLEMI QUANDO IO APPLICO UN XSL AD UN XML PER TRASFORMARLO IN HTML E NEL CODICE HTML PRODOTTO ALL'INTERNO DELL'XSL IO INSERISCO ANCHE NELL'<HEAD></HEAD> DELL'AHTML I TAG <STYLE TYPE="TEXT/CSS">.....</STYLE>.

    sE APPLICO L'XSL ALL'XML INDICANDOLO NELLA SECONDA RIGA DEL XML COME FOGLIO DI STILE ASSOCIATO ALL'XML LO PRENDE ACHE INDICANDO I CSS DEL TAG SOPRA, MA SE ASSOCIO XSL AL XML TRAMITE JAVA PER LA TRASFORMAZINE ALLORA HO PROBLEMI? O DOVREBBE ANDARE COMUNQUE?

    ------------------

    LA DISCUSSIONE PUò RITENERSI CHIUSA, SCUSATE MA SONO UN IDIOTA NATO, IL PROBLEMA STAVA SOLO NEL FATTO CHE NELL'XSL AVEVO INSERITO OME TAG HTML
    QUESTO <TITLE> </TITLE> COME TAG VUOTO, MA ESSENDO UN XSL UN FILE XML DEVE RISPETTARNE LA SINTASSI E IGLI ELEMENTI VUOTI SI SCRIVONO <TITLE />

    DICO GRAZIE A TUTTI MA ORA VA D'AVVERO TUTTO GRAZIE GRAZIE GRAZIE

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.