transformar xml a html usando xslt
Lo que estoy haciendo : Estoy tratando de transformar xml a html utilizando xslt.
Pregunta : El programa se está ejecutando sin ningún error, es gproducing el archivo de salida también, pero no transforma el xml a html. Mi conjetura es que el bucle for
en el xsl no está recuperando los datos.
- La generación de Gradle falla debido a la entrada duplicada en strings.xml
- WebView no funciona, el lanzamiento de la URL externa en el navegador. Visualización de la página web en la aplicación
- Cómo obtener la posición de un elemento de un PopupMenu en un ListView personalizado
- ¿Cómo puedo configurar espacios de nombres personalizados en el archivo de diseño en Android Studio?
- Vista emergente de Android No funciona
XSLTTest.java
package JavaXSLTExample; import javax.xml.transform.ErrorListener; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource; public class XSLTTest { public static void main(String[] args) { /*if (args.length != 3) { System.err.println("give command as follows : "); System.err.println("XSLTTest data.xml converted.xsl converted.html"); return; }*/ String dataXML = "C:\\Users\\Devrath\\Desktop\\XSL\\FileOne.xml"; String inputXSL = "C:\\Users\\Devrath\\Desktop\\XSL\\FileTwo.xsl"; String outputHTML = "C:\\Users\\Devrath\\Desktop\\XSL\\output1.html"; XSLTTest st = new XSLTTest(); try { st.transform(dataXML, inputXSL, outputHTML); } catch (TransformerConfigurationException e) { System.err.println("TransformerConfigurationException"); System.err.println(e); } catch (TransformerException e) { System.err.println("TransformerException"); System.err.println(e); } } public void transform(String dataXML, String inputXSL, String outputHTML) throws TransformerConfigurationException, TransformerException { TransformerFactory factory = TransformerFactory.newInstance(); StreamSource xslStream = new StreamSource(inputXSL); Transformer transformer = factory.newTransformer(xslStream); StreamSource in = new StreamSource(dataXML); StreamResult out = new StreamResult(outputHTML); transformer.transform(in, out); System.out.println("The generated HTML file is:" + outputHTML); } }
FileOne.xml
<languages-list> <language> <name>Kannada</name> <region>Karnataka</region> <users>38M</users> <family>Dravidian</family> </language> <language> <name>Telugu</name> <region>Andra Pradesh</region> <users>74M</users> <family>Dravidian</family> </language> <language> <name>Tamil</name> <region>TamilNadu</region> <users>61M</users> <family>Dravidian</family> </language> <language> <name>Malayalam</name> <region>Kerela</region> <users>33M</users> <family>Dravidian</family> </language> <language> <name>Hindi</name> <region>Andaman and Nicobar Islands, North india, Parts of North east</region> <users>442M</users> <family>Indo Aryan</family> </language> <language> <name>Assamese</name> <region>Assam, Arunachal Pradesh</region> <users>13M</users> <family>Indo Aryan</family> </language> </languages-list>
FileTwo.xsl
<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <h1>Indian Languages details</h1> <table border="1"> <tr> <th>Language</th> <th>Family/Origin</th> <th>No. of speakers</th> <th>Region</th> </tr> <xsl:for-each select="language-list/language"> <tr> <td><xsl:value-of select="name"/></td> <td><xsl:value-of select="family"/></td> <td><xsl:value-of select="users"/></td> <td><xsl:value-of select="region"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>
Output.html
<html> <body> <h1>Indian Languages details</h1> <table border="1"> <tr> <th>Language</th><th>Family/Origin</th><th>No. of speakers</th><th>Region</th> </tr> </table> </body> </html>
- Escala de un recurso dibujable en XML (Android)
- ¿Por qué el estilo y el diseño no usan el espacio de nombres de Android?
- ERROR: "No se puede resolver el símbolo '@ string / edit_message'" Android Studio
- Problemas de procesamiento @ id / visible Android Studio
- Simple-XML analiza el feed RSS con 2 que se declara dos veces
- Android Studio AndroidManifest.xml vs build.gradle
- ¿Cómo puedo utilizar las operaciones lógicas en el enlace de datos de Android?
- Android InstrumentaciónTestRunner Salida XML para la ingesta de Hudson
XML es muy implacable. Esta:
<xsl:for-each select="language-list/language">
necesita ser:
<xsl:for-each select="languages-list/language">
Simplemente la fijación del idioma (s) -list no hace que el error del programa esté libre. Se produce un error con el siguiente error:
Error on line 7 of FileTwo.xsl: java.lang.IllegalArgumentException: URI scheme is not "file" TransformerException net.sf.saxon.trans.XPathException: java.lang.IllegalArgumentException: URI scheme is not "file"
Esto es engañoso porque no apunta al problema real. El problema es con "outputHTML" debe ser de un tipo File o FileOutputStream.
He intentado con el archivo y funcionó. Así que esta declaración:
StreamResult out = new StreamResult(outputHTML);
se reescribe como:
StreamResult out = new StreamResult(new File(outputHTML));
Ofcourse importación java.io.File
El uso de FileOutputStream necesita el ajuste apropiado del código y las declaraciones de importación.
- No se puede acceder a la sesión de Facebook – UnknownError: Aplicación no válida
- PowerManager.WakeLock en dispositivos Android