java - 如何解决 javax.xml.transform.TransformerConfigurationException

标签 java xml xslt

我正在尝试使用 xsl 样式表将 xml 文件转换为 html。 请看下面的代码。我已经尝试了很多方法来解决这个问题,但不知何故不能。 如果我打开 xml 文件,那么我可以看到所需的输出,但为什么我无法通过编程看到相同的输出?

错误信息: 错误:“Jaxpone.xsl” fatal error :“无法编译样式表” javax.xml.transform.TransformerConfigurationException:无法编译样式表 在 com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:885) 在 com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:671) 在 crawler.JAXPExamples.basic(JAXPExamples.java:52) 在 crawler.JAXPExamples.main(JAXPExamples.java:40)

Please see the code below

包爬虫;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URL;
import javax.xml.parsers.ParserConfigurationException;
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;
import org.xml.sax.SAXException;


public class JAXPExamples {


    public static void main(String argv[])
        throws TransformerException, TransformerConfigurationException,
               IOException, SAXException, ParserConfigurationException,                 
               FileNotFoundException
        {
        try {
         URL xmlURL = new URL("file://Jaxpone.xml");
         String xmlID = xmlURL.toString();
         URL xslURL = new URL("file://Jaxpone.xsl");


         String xslID = xslURL.toString();
     //
         System.out.println("--- basic ---");
         basic(xmlID, xslID);
         System.out.println();

      } catch(Exception err) {
        err.printStackTrace();
      }
   }
      public static void basic(String xmlID, String xslID)
      throws TransformerException, TransformerConfigurationException
   {
      TransformerFactory tfactory = TransformerFactory.newInstance();
      Transformer transformer = tfactory.newTransformer(new StreamSource(xslID));

      StreamSource source = new StreamSource(xmlID);
      transformer.transform(source, new StreamResult(System.out));
   }

}

XSLT 文件代码

<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:template match="title">
        <h2><b><xsl:value-of select="."/></b></h2><br />
    </xsl:template>

    <xsl:template match="pub_date">
        <h5><xsl:value-of select="."/></h5><br />
    </xsl:template>

        <xsl:template match="section">
        <p><b><xsl:value-of select="."/></b></p><br />
    </xsl:template>

        <xsl:template match="author">
        <p><b><xsl:value-of select="."/></b></p><br />
    </xsl:template>

        <xsl:template match="link">
        <p><xsl:value-of select="."/></p><br />
    </xsl:template>

        <xsl:template match="description">
        <p><xsl:value-of select="."/></p><br />
    </xsl:template>

        <xsl:template match="body">
       <p><xsl:value-of select="."/></p><br />
    </xsl:template>

    <xsl:template match="/">
        <html>
        <body>
        <xsl:apply-templates/>
        </body>
        </html>
</xsl:template>

</xsl:stylesheet>

最佳答案

TransformerConfigurationException 通常意味着您的样式表中存在错误。实际错误将已通知给您的 ErrorListener。您没有提供 ErrorListener,因此它们将转到默认的 ErrorListener,这可能会将消息写入控制台或某些日志文件。

尝试直接从命令行或 IDE 运行样式表,直到您确定代码正确为止。

关于java - 如何解决 javax.xml.transform.TransformerConfigurationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17717652/

相关文章:

xslt变量范围及其用法

xml - XSLT 中无用的 match=text()

javascript - E4X:如何向现有 E4X 对象添加默认命名空间

javascript - 使用 parseString() 时, Node xml2js 返回 'undefined'

java - 如何避免继承java类的复制构造函数中的instanceof

java - 多平台Base64编解码问题(Android to PC)

xml - 让JAXB生成一条XML处理指令

java - XSLT xsl :copy and xsl:for-each on attributes

java - spring-boot-devtools 在缺少 MANIFEST.MF 的 JAR 上失败

java - 背景图像未显示在 JPanel 中