xsl www with w3schools sort example ejemplo create javascript xml internet-explorer xslt embed

javascript - www - xslt transformation



Incrustar xsl en un archivo XML (3)

Estoy tratando de incrustar un xsl en un archivo XML. La razón para hacer esto es crear un único archivo que se pueda mover a diferentes computadoras, esto evitaría la necesidad de mover el archivo xsl.

El archivo xsl está creando una tabla y tomando un paso de prueba del xml y si pasó o falló, bastante simple.
El problema que estoy teniendo, creo, es que el xsl tiene javascript y se muestra cuando el xml se carga en IE.

Cuando cargo el archivo xml con IE, el javascript se muestra sobre la tabla y debajo de la tabla se muestra el xml.

Así es como se distribuye mi documento:

<!DOCTYPE doc [ <!ATTLIST xsl:stylesheet id ID #REQUIRED> ]> <doc> <xsl:stylesheet id="4.1.0" version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="http://www.ni.com/TestStand" xmlns:vb_user="http://www.ni.com/TestStand/" > <xsl:template match="xsl:stylesheet" /> <xsl:text disable-output-escaping="yes"> <msxsl:script language="vbscript" implements-prefix="vb_user"> option explicit ''This function will return the localized decimal point for a decimal number Function GetLocalizedDecimalPoint () dim lDecPoint lDecPoint = Mid(CStr(1.1),2,1) GetLocalizedDecimalPoint = lDecPoint End Function </msxsl:script> <msxsl:script language="javascript" implements-prefix="user"><![CDATA[ // This style sheet will not show tables instead of graphs for arrays of values if // 1. TSGraph control is not installed on the machine // 2. Using the stylesheet in windows XP SP2. Security settings prevent stylesheets from creatign the GraphControl using scripting. // Refer to the TestStand Readme for more information. //more javascript functions //code to build table and insert data from the xml </xsl:stylesheet> <Reports> <Report Type=''UUT'' Title=''UUT Report'' Link=''-1-2008-12-3-10-46-52-713'' UUTResult=''Failed'' StepCount=''51''> // rest of xml </Report> </Reports> </doc>


La incrustación de hojas de estilo es posible para la mayoría de los navegadores, pero IE. Encuentre la referencia a una descripción y un ejemplo en la publicación a continuación.

IE6 / 7/8 no admite hojas de estilo incrustadas de forma predeterminada.

Es posible que desee utilizar la solución alternativa que permite a IE procesar hojas de estilo incrustadas desde aquí:

http://www.biglist.com/lists/lists.mulberrytech.com/xsl-list/archives/201001/msg00390.html



Aunque el W3C XSLT Spec admite incrustar una hoja de estilos XSLT en un documento XML, parece que IE y Firefox no son compatibles.

ACTUALIZACIÓN : Según el comentario de Robert Niestroj, años más tarde, en octubre de 2014, esto funciona en FireFox 33.

Sin embargo, hay una buena alternativa: insertar el documento XML en la hoja de estilos XSLT .

A continuación hay un ejemplo.

Una hoja de estilo XSLT que contiene un documento XML incrustado :

<?xml-stylesheet type="text/xsl" href="myEmbedded.xml"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output omit-xml-declaration="yes"/> <xsl:variable name="vEmbDoc"> <doc> <head></head> <body> <para id="foo">Hello I am foo</para> </body> </doc> </xsl:variable> <xsl:template match="para"> <h1><xsl:value-of select="."/></h1> </xsl:template> <xsl:template match="xsl:template"/> </xsl:stylesheet>

Cuando se abre este archivo en IE, el navegador muestra el resultado deseado:

Hola soy foo

Tenga en cuenta que es necesario incluir plantillas que ignoren la mayoría de las instrucciones XSLT (en este caso ignoramos cualquier <xsl:template> simplemente al no tener cuerpo de plantilla.