Jump to content

Recommended Posts

By: Tuan Le - lesoft

Parse error

2003-10-08 10:55

I'm new to JasperReports. I borrowed a BasicReport.xml template from a JavaWorld article below. When it compiles, it throws a parse error.

 

Have you seen this error before? What am I missing?

 

Thanks in advance for your help!

Tuan

 

---- BasicReport.xml ----

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE jasperReport PUBLIC "-//JasperReports//DTD Report Design//EN"

"http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">

<jasperReport name="BasicReport" >

<parameter name="ReportTitle" class="java.lang.String"/>

<queryString><![CDATA[select employee_id, last_name from employee]]></queryString>

<field name="EMPLOYEE_ID" class="java.lang.String"/>

<field name="LAST_NAME" class="java.lang.String"/>

<title>

<band height="50">

<textField>

<reportElement x="0" y="0" width="200" height="50" />

<textFieldExpression class="java.lang.String">$P{ReportTitle}</textFieldExpression>

</textField>

</band>

</title>

<pageHeader>

<band>

</band>

</pageHeader>

<columnHeader>

<band height="20">

<staticText>

<reportElement x="180" y="0" width="180" height="20"/>

<textElement>

<font isUnderline="true"/>

</textElement>

<text><![CDATA[EMPLOYEE_ID]]></text>

</staticText>

<staticText>

<reportElement x="360" y="0" width="180" height="20"/>

<textElement>

<font isUnderline="true"/>

</textElement>

<text><![CDATA[LAST_NAME]]></text>

</staticText>

</band>

</columnHeader>

<detail>

<band height="20">

<textField>

<reportElement x="180" y="0" width="180" height="20"/>

<textFieldExpression class="java.lang.String"><![CDATA[$F{EMPLOYEE_ID}]]></textFieldExpression>

</textField>

<textField pattern="0.00">

<reportElement x="360" y="0" width="180" height="20"/>

<textFieldExpression class="java.lang.Double"><![CDATA[$F{LAST_NAME}]]></textFieldExpression>

</textField>

</band>

</detail>

<columnFooter>

<band>

</band>

</columnFooter>

<pageFooter>

<band height="15">

<staticText>

<reportElement x="0" y="0" width="40" height="15"/>

<textElement/>

<text><![CDATA[Page:]]></text>

</staticText>

<textField>

<reportElement x="40" y="0" width="100" height="15"/>

<textElement/>

<textFieldExpression class="java.lang.Integer"><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>

</textField>

</band>

</pageFooter>

<summary>

<band>

</band>

</summary>

</jasperReport>

 

 

---- my servlet code that read, compile XML file ---

try {

ServletContext context = this.getServlet().getServletContext();

System.setProperty("jasper.reports.compile.class.path", context.getRealPath("/WEB-INF/lib/jasperreports-0.5.0.jar"));

System.getProperty("path.separator", context.getRealPath("/WEB-INF/classes/"));

System.setProperty("jasper.reports.compile.temp", context.getRealPath("/WEB-INF/reports/"));

JasperReport jReport = JasperCompileManager.compileReport(context.getRealPath("/WEB-INF/reports/BasicReport.xml"));

 

// Second, create a map of parameters to pass to the report

Map parameters = new HashMap();

parameters.put("ReportTitle", "Focal Review Manager Summary Report");

 

// Third, get a database connection

DAOFactory factory = DAOFactory.getDAOFactory(DAOFactory.SQLSERVER);

IReportingDAO reportingDAO = factory.getReportingDAO();

Connection conn = reportingDAO.getDBConnection();

 

// Fourth, create JasperPrint using fillReport() method

JasperPrint jPrint = JasperFillManager.fillReport(jReport, parameters, conn);

// use JasperPrint to create PDF

JasperExportManager.exportReportToPdfFile(jPrint, "BasicReport.pdf");

}

catch (JRException jre) {

System.err.println(jre.getMessage());

}

catch (Exception e) {

System.err.println(e.getMessage());

}

 

 

 

--- Error output -----

SEVERE: Parse Fatal Error at line 2 column 6: The processing instruction target matching "[xX][mM][lL]" is not allowed.

org.xml.sax.SAXParseException: The processing instruction target matching "[xX][mM][lL]" is not allowed.

at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:232)

at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:213)

at org.apache.xerces.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:375)

at org.apache.xerces.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:305)

at org.apache.xerces.impl.XMLScanner.reportFatalError(XMLScanner.java:1269)

at org.apache.xerces.impl.XMLScanner.scanPIData(XMLScanner.java:623)

at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanPIData(XMLDocumentFragmentScannerImpl.java:644)

at org.apache.xerces.impl.XMLScanner.scanPI(XMLScanner.java:598)

at org.apache.xerces.impl.XMLDocumentScannerImpl$PrologDispatcher.dispatch(XMLDocumentScannerImpl.java:702)

at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:329)

at org.apache.xerces.parsers.DTDConfiguration.parse(DTDConfiguration.java:525)

at org.apache.xerces.parsers.DTDConfiguration.parse(DTDConfiguration.java:581)

at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:152)

at org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1175)

at org.apache.commons.digester.Digester.parse(Digester.java:1514)

at dori.jasper.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:373)

at dori.jasper.engine.xml.JRXmlLoader.load(JRXmlLoader.java:357)

at dori.jasper.engine.xml.JRXmlLoader.load(JRXmlLoader.java:337)

at dori.jasper.engine.xml.JRXmlLoader.load(JRXmlLoader.java:323)

at dori.jasper.engine.JasperCompileManager.compileReport(JasperCompileManager.java:146)

at com.phs.ezhr.focal.presentation.action.ReportingAction.perform(ReportingAction.java:139)

at org.apache.struts.action.Action.execute(Action.java:401)

at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:446)

at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:266)

at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1292)

at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:492)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)

at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:261)

at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:360)

at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:632)

at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:590)

at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:707)

at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:530)

at java.lang.Thread.run(Thread.java:536)

The processing instruction target matching "[xX][mM][lL]" is not allowed.

 

 

 

 

By: Tuan Le - lesoft

RE: Parse error

2003-10-08 11:02

One correction to the BasicReport.xml template

 

Replaced

<textFieldExpression class="java.lang.Double"><![CDATA[$F{LAST_NAME}]]></textFieldExpression>

with

<textFieldExpression class="java.lang.String"><![CDATA[$F{LAST_NAME}]]></textFieldExpression>

Link to comment
Share on other sites

  • Replies 0
  • Created
  • Last Reply

Top Posters In This Topic

Popular Days

Top Posters In This Topic

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...