2010-10-18 95 views
6

He creado un documento de datos XML y una hoja de estilos XSLT, y deseo generar un documento HTML basado en los dos. Mi hoja de estilo tiene la etiqueta, y mi documento XML tiene la instrucción del procesador (junto con varias referencias "xsl: value-of"). Mi pregunta es, ¿cuál es la "mecánica" real de obtener el procesador XSLT (que, según tengo entendido, está integrado en todos los navegadores web) para leer los archivos de hoja de estilos XML y XSLT y sacar el documento HTML, que luego se mostrará en el ¿navegador? ¡El libro XML que he estado leyendo no especifica esto! GraciasCómo generar un archivo HTML desde XML y hoja de estilos XSLT

+0

Buena pregunta, +1. Ver mi respuesta para una explicación. –

+0

revise este artículo: http://www.yegor256.com/2014/06/25/xml-and-xslt-in-browser.html – yegor256

Respuesta

1

Mi pregunta es, ¿cuáles son los reales "mecánica" de conseguir el procesador XSLT (que, entiendo, es integrado en todos los navegadores web) para leer el XML y la hoja de estilo XSLT archivos y muestra el documento HTML, que será y luego mostrar en el navegador?

Es la tarea del explorador HTML específico que se utiliza para invocar su procesador XSLT. Luego, el navegador interpreta los resultados de la transformación XSLT como el HTML que debe mostrarse. Tenga en cuenta que, en general, los navegadores no están obligados a admitir el procesamiento previo XSLT, por lo que pueden existir navegadores que no tengan un procesador XSLT asociado y que no respeten el PI xml-stylesheet del pseudo-atributo type="text/xsl".

Para obtener más información, lea la especificación del W3C sobre "Associating Style Sheets with XML Documents"

Para probar la transformación XSLT en esto, un poco de manera primitiva, puede abrir el archivo XML con su navegador (hacer su tarea y aprender cómo abrir un archivo local desde el navegador) y examinar los resultados con un comando "View Source" o similar.

Ciertamente no recomiendo esta técnica primitiva. Es mucho mejor utilizar uno de los muchos entornos de desarrollo XSLT existentes, como el XSelerator, oxígeno, Visual Studio, ..., etc.

+0

Gracias por su respuesta. Pero digamos que quiero hacer una "prueba" en mi computadora local para ver el documento html generado por el navegador. ¿Como podría hacerlo? – Jack

+0

Esta es una pregunta diferente. Por favor haga una nueva pregunta. Esta nueva pregunta no tiene nada que ver con XSLT: solo necesita abrir el archivo en su navegador usando Archivo -> Abrir, o cualquiera que sea la secuencia de menú para abrir un archivo en el navegador específico. –

+0

No, mi pregunta está relacionada, pero creo que no estaba claro en mi redacción. Mi pregunta era, digamos que tengo un archivo XML y una hoja de estilos XSLT asociada, y quiero ingresar estos archivos al navegador para probar el archivo HTML que se mostrará. ¿Como podría hacerlo? Gracias. – Jack

2

Puede ejecutar XSL transforma en el "modo normal" con Javascript API, o utilizar una instrucción de procesamiento xml-stylesheet, así:

carga esto en su navegador ...

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

y la hoja de estilo, guardar esto como demo.xslt en el mismo directorio que el Archivo 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> 

Esto funciona para mí en Firefox en Linux.

2

La respuesta de Dimitre es lo que necesita. Pero aquí tienes un ejemplo:

XML:

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

de abrir el documento XML anterior en cualquiera (no realmente, pero usted lo consigue ...) del navegador y se va a transformar el documento XML con stylesheet.xsl y muestra el resultado.

Es realmente un desastre cuando se trata de transformaciones en los navegadores imo, mal soporte y solo XSLT 1.0. El tipo MIME text/xsl ni siquiera es "correcto", pero es el más comúnmente admitido por los navegadores. El tipo MIME correcto debe ser application/xslt+xml, pero eso no es compatible con ningún navegador (?) Que yo sepa.Vea el comentario de Alejandros a continuación.

+0

en realidad, no hay un tipo MIME para XSLT. 'application/xslt + xml' fue la propuesta en XSLT 2.0 WD. Entonces, 'test/xml' o' application/xml' (para purist) son el tipo MIME correcto para ** enviar ** hojas de estilo XSLT. El pseudo atributo 'type' de' xml-stylesheet' PI es solo para determinar entre 'test/css' y' test/xsl'. –

+0

@Alejandro: Tiene razón, no me actualicé a la ligera ni leo algunas cosas viejas. Perdón por eso y gracias por la aclaración! –

3

A continuación se muestra un código de Java que se utiliza para crear el archivo HTML. Cuando ejecute ejecutar este código, se creará el archivo 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); 
    } 
} 
Cuestiones relacionadas