2010-10-18 10 views
6

Ho creato un documento di dati XML e un foglio di stile XSLT e voglio produrre un documento HTML basato sui due. Il mio foglio di stile ha il tag e il mio documento XML ha l'istallazione del processore (insieme a vari riferimenti "xsl: value-of"). La mia domanda è, quali sono le vere "meccaniche" per ottenere il processore XSLT (che, capisco, è integrato in tutti i browser Web) per leggere i file di fogli di stile XML e XSLT e generare il documento HTML, che verrà quindi visualizzato sul browser? Il libro XML che ho letto non lo specifica! GrazieCome stampare il file HTML da un foglio di stile XML e XSLT

+0

Buona domanda, +1. Vedi la mia risposta per una spiegazione. –

+0

controlla questo articolo: http://www.yegor256.com/2014/06/25/xml-and-xslt-in-browser.html – yegor256

risposta

1

La mia domanda è, quali sono le effettive "meccanica" di ottenere il processore XSLT (che, capisco, è costruito per tutti i browser web) per leggere l'XML e fogli di stile XSLT i file e restituiscono il documento HTML, che sarà quindi visualizzato nel browser?

È il compito del browser HTML specifico utilizzato per richiamare il suo processore XSLT. Quindi il browser interpreta i risultati della trasformazione XSLT come HTML che dovrebbe essere visualizzato. Si noti che in generale i browser non sono tenuti a supportare la preelaborazione XSLT, quindi potrebbero esistere browser che non dispongono di un processore XSLT associato e non onorano il PI xml-stylesheet per lo pseudo-attributo type="text/xsl".

Per maggiori informazioni leggere le specifiche del W3C su "Associating Style Sheets with XML Documents"

Per testare la trasformazione XSLT in questo, un po 'modo primitivo, è possibile aprire il file XML con il vostro browser (fare il vostro lavoro e imparare come aprire un file locale dal browser) ed esaminare i risultati con un comando "View Source" o simile.

Certamente non consiglio questa tecnica primitiva. E 'molto meglio usare uno dei tanti IDE XSLT esistenti, come il XSelerator, ossigeno, Visual Studio, ..., ecc

+0

Grazie per la risposta. Ma diciamo che voglio fare un "test" sul mio computer locale per vedere il documento html emesso dal browser. Come potrei farlo? – Jack

+0

Questa è una domanda diversa. Si prega di fare una nuova domanda. Questa nuova domanda non ha nulla a che fare con XSLT: devi solo aprire il file nel tuo browser usando File -> Apri, o qualunque sia la sequenza di menu per aprire un file nel browser specifico. –

+0

No, la mia domanda è correlata, ma non penso di essere stata chiara nelle mie parole. La mia domanda era, supponiamo di avere un file XML e un foglio di stile XSLT associato, e voglio inserire questi file nel browser per testare il file HTML che verrà visualizzato. Come potrei farlo? Grazie. – Jack

2

È possibile eseguire XSL trasforma in "via normale" utilizzando Javascript API, o utilizzare un'istruzione di elaborazione xml-stylesheet, in questo modo:

Load questo al vostro browser ...

<?xml version="1.0"?> 
<?xml-stylesheet href="demo.xslt" type="text/xsl"?> 
<data> 
    <first>first</first> 
    <second>second</second> 
</data> 

e il foglio di stile, salvare questo come demo.xslt nella stessa directory come il File XML

<?xml version="1.0"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:output method="html"/> 
    <xsl:template match="/"> 
     <html> 
      <head><title>Xslt browser demo</title></head> 
      <body> 
        Here's my data: 
       <xsl:for-each select="/data/*"><b><xsl:value-of select="."/></b></xsl:for-each> 
      </body> 
     </html> 
    </xsl:template> 
</xsl:stylesheet> 

Questo funziona per me in Firefox su Linux.

2

La risposta di Dimitre è ciò di cui hai bisogno. Ma qui si ha un esempio:

XML:

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> 
<document> 
    ... 
</document> 

Apertura del documento XML in qualsiasi precedente (non proprio, ma si ottiene ...) del browser e sarà trasformare il documento XML con stylesheet.xsl e visualizza il risultato.

È decisamente un disastro quando si tratta di trasformazioni nei browser imo, cattivo supporto e solo XSLT 1.0. Il tipo MIME text/xsl non è nemmeno "corretto" ma è quello più comunemente supportato dai browser. Il tipo MIME corretto dovrebbe essere application/xslt+xml ma ciò non è supportato in alcun (?) Browser a mia conoscenza.Vedere commenti Alejandros qui sotto.

+0

in realtà, non esiste un tipo MIME per XSLT. 'application/xslt + xml' era la proposta in XSLT 2.0 WD. Quindi, 'test/xml' o' application/xml' (per puristi) sono il tipo MIME corretto per ** inviare ** fogli di stile XSLT. Lo pseudo attributo 'type' di' xml-stylesheet' PI è solo per determinare tra 'test/css' e' test/xsl'. –

+0

@ Alejandro: hai ragione, non mi sono aggiornato di tanto in tanto o non ho letto alcune vecchie cose. Ci scusiamo per questo e grazie per il chiarimento! –

3

Di seguito è riportato un codice java che viene utilizzato per creare il file HTML. Quando si esegue eseguire questo codice verrà creato il file out.html.

package xslt; 

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


class XSLT { 
    public static void main (String argv[]) throws Exception { 
    File stylesheet = new File("xslt-example.xsl"); 
    File xmlfile = new File("SigmodRecord.xml"); 
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder db = dbf.newDocumentBuilder(); 
    Document document = db.parse(xmlfile); 
    StreamSource stylesource = new StreamSource(stylesheet); 
    TransformerFactory tf = TransformerFactory.newInstance(); 
    Transformer transformer = tf.newTransformer(stylesource); 
    DOMSource source = new DOMSource(document); 
    //The Html output is in out.html 
    StreamResult result = new StreamResult("out.html"); 
    transformer.transform(source,result); 
    } 
} 
Problemi correlati