java – 使用xslt将xml转换为html
发布时间:2020-12-15 05:11:14 所属栏目:Java 来源:网络整理
导读:我在做什么:我正在尝试使用xslt将xml转换为html. 问题:程序正在执行而没有任何错误,它也会生成输出文件,但它不会将xml转换为html.我的猜测是xsl中的for循环不是获取数据. XSLTTest.java package JavaXSLTExample;import javax.xml.transform.ErrorListener
我在做什么:我正在尝试使用xslt将xml转换为html.
问题:程序正在执行而没有任何错误,它也会生成输出文件,但它不会将xml转换为html.我的猜测是xsl中的for循环不是获取数据. 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:UsersDevrathDesktopXSLFileOne.xml"; String inputXSL = "C:UsersDevrathDesktopXSLFileTwo.xsl"; String outputHTML = "C:UsersDevrathDesktopXSLoutput1.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非常无情.这个:
<xsl:for-each select="language-list/language"> 需要是: <xsl:for-each select="languages-list/language"> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |