I am working with JSP for a j2e app and I have an issue trying to work with xml jstl library. When I try to parse the file I have this error : [Fatal Error] jstl::1:1: Content is not allowed in prolog
I have check only course and error base but I am not able to solve my issue.
Here is my XML :
<?xml version="1.0" encoding="utf-8"?>
<inventaire>
<livre>
<auteur>Pierre</auteur>
<titre>Développez vos applications web avec JRuby !</titre>
<date>Janvier 2012</date>
<prix>22</prix>
<stock>127</stock>
<minimum>10</minimum>
</livre>
<livre>
<auteur>Paul</auteur>
<titre>Découvrez la puissance du langage Perl</titre>
<date>Avril 2017</date>
<prix>26</prix>
<stock>74</stock>
<minimum>10</minimum>
</livre>
<livre>
<auteur>Matthieu</auteur>
<titre>Apprenez à programmer en C</titre>
<date>Novembre 2009</date>
<prix>25</prix>
<stock>19</stock>
<minimum>20</minimum>
</livre>
<livre>
<auteur>Matthieu</auteur>
<titre>Concevez votre site web avec PHP et MySQL</titre>
<date>Mars 2010</date>
<prix>30</prix>
<stock>7</stock>
<minimum>20</minimum>
</livre>
<livre>
<auteur>Cysboy</auteur>
<titre>La programmation en Java</titre>
<date>Septembre 2010</date>
<prix>29</prix>
<stock>2000</stock>
<minimum>20</minimum>
</livre>
</inventaire>
And my jsp :
<%@ page pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>
<p>
<c:import var="bookInfo"
url="inventaire.xml" />
<%-- <x:parse var="output" xml="${bookInfo}" /> --%>
<x:parse var="doc" doc="${bookInfo}" />
<x:out select="$doc/inventaire/livre[1]/titre" />
<br>
</p>
</body>
</html>
Full stack trace :
[Fatal Error] jstl::1:1: Content is not allowed in prolog.
May 25, 2020 10:06:02 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [jsp] in context with path [/jstl_exo2] threw exception [An exception occurred processing [rapportInventaire.jsp] at line [17]
14: url="inventaire.xml" />
15: <%-- <x:parse var="output" xml="${bookInfo}" /> --%>
16: <x:parse var="doc" doc="${bookInfo}" />
17: <x:out select="$doc/inventaire/livre[1]/titre" />
18: <br>
19:
20: </p>
Stacktrace:] with root cause
org.xml.sax.SAXParseException; systemId: jstl:; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:257)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339)
at org.apache.taglibs.standard.tag.common.xml.ParseSupport.parseInputSource(ParseSupport.java:236)
at org.apache.taglibs.standard.tag.common.xml.ParseSupport.parseInputSourceWithFilter(ParseSupport.java:202)
at org.apache.taglibs.standard.tag.common.xml.ParseSupport.parseReaderWithFilter(ParseSupport.java:208)
at org.apache.taglibs.standard.tag.common.xml.ParseSupport.parseStringWithFilter(ParseSupport.java:215)
at org.apache.taglibs.standard.tag.common.xml.ParseSupport.doEndTag(ParseSupport.java:147)
at org.apache.jsp.rapportInventaire_jsp._jspx_meth_x_005fparse_005f0(rapportInventaire_jsp.java:233)
at org.apache.jsp.rapportInventaire_jsp._jspService(rapportInventaire_jsp.java:152)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:477)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
I am using a maven project with this pom :
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>inc.game.small</groupId>
<artifactId>jstl_exo2</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>jstl_exo2 Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/jstl/jstl -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
<build>
<finalName>jstl_exo2</finalName>
</build>
</project>
If anyone has an idea ?
Regard
Quentin