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.


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> 

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.

  • ¿Cómo puede convertir el archivo XML local a org.ksoap2.serialization.SoapObject?
  • Error al ejecutar el objetivo com.jayway.maven.plugins.android.generation2: android-maven-plugin
  • Cómo tener selectableItemBackground en Imageview?
  • Android: uso del diseño XML desde el almacenamiento interno
  • Fallo Android Studio
  • Cómo crear un menú mediante programación en Android?
  • Definición de archivo xml para el botón para cambiar el fondo Y textColor basado en el estado
  • Android: Cómo acceder a la carpeta de recursos de otra aplicación de Android
  • Hacer formas dinámicas (el mejor enfoque)
  • Cómo convertir el objeto de cursor en XML o JSON en android
  • API de gráficos para Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.