DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=28696>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=28696

Jsp:root has invalid attribute: xsi:schemaLocation

           Summary: Jsp:root has invalid attribute: xsi:schemaLocation
           Product: Tomcat 5
           Version: 5.0.19
          Platform: Other
        OS/Version: Other
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: Jasper
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]
                CC: [EMAIL PROTECTED]


It seems that Jasper is a bit strict about attributes on an XML JSP root
element.  Example JSP (same JSP causing stack trace listed below):

  <?xml version="1.0" encoding="UTF-8"?>
  <!-- $Id$ -->
  <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page";
            version="2.0"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
            xsi:schemaLocation="http://java.sun.com/JSP/Page
http://java.sun.com/dtd/jspxml.xsd";>
  </jsp:root>

These attributes seem to be perfectly valid, page 3-17 of the JSP 2.0
specification (also in http://java.sun.com/dtd/jspxml.xsd) has this annotation
about the root element:

  <xsd:element name = "root">
    <xsd:annotation>
      <xsd:documentation>
        The root element of all JSP documents is named root.
        
        Authors may, if they wish, include schema location information.
        If specified, the information may appear as attributes of
        the root element as follows:

        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
        xsi:schemaLocation="http://java.sun.com/JSP/Page xsd-file-location"

        Documents should not specify the system identifier of a DTD
        in a DOCTYPE declaration.
      </xsd:documentation>
    </xsd:annotation>
    ...

The reason I am using (or trying to use) XMLSchema-instance is that it seems to
be the only way to trigger Ant's xmlvalidate task to perform XML Schema
validation (perhaps the only way to trigger Xerces to perform Schema validation,
not just xmlvalidate).  It's probably absurd for me to think that my build
scripts will be able to validate real-world JSPs, but I'm one of those pedantic
sorts of people, I dream of the day that an IDE (emacs!) can resolve all XML
namespaces into schemas, possibly JSP tag libraries into schema-like metadata
(perhaps a plug-in for Xerces) and hack away happily without having 5 browser
tabs and 2 PDFs open jumping back and forth.


Full stack trace:

2004-04-29 13:34:36 StandardWrapperValve[jsp]: Servlet.service() for servlet jsp
threw exception
org.apache.jasper.JasperException: /index.jspx(6,96) Jsp:root has invalid
attribute: xsi:schemaLocation
        at
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:83)
        at 
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:402)
        at 
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:236)
        at org.apache.jasper.compiler.JspUtil.checkAttributes(JspUtil.java:348)
        at 
org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:432)
        at org.apache.jasper.compiler.Node$JspRoot.accept(Node.java:554)
        at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2180)
        at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2230)
        at org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2236)
        at org.apache.jasper.compiler.Node$Root.accept(Node.java:485)
        at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2180)
        at org.apache.jasper.compiler.Validator.validate(Validator.java:1518)
        at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:247)
        at org.apache.jasper.compiler.Compiler.compile(Compiler.java:456)
        at org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
        at 
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:553)
        at 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:291)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:284)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204)
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:257)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567)
        at
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:245)
        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567)
        at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:184)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
        at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567)
        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:156)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:578)
        at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:972)
        at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:206)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:833)
        at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:732)
        at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:619)
        at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:688)
        at java.lang.Thread.run(Thread.java:534)



In case your're curious (or someone at Sun is looking), Sun has bugs with their
JSP XML Schema, first off the one they've copied into the JSP 2.0 spec is really
the 1.2 XSD.  They don't seem to have a JSP 2.0 XSD anywhere.  The 1.2 XSD is
locked into version="1.2" (very easy to change when using a Catalog and a local
copy of the XSD).  Finally a regular expression in the XSD is broken (also easy
to fix as Xerces reports it in plain english!).  Here's the output of xmlvalidate:

  [xmlvalidate] /dtd/jspxml.xsd:238:42: InvalidRegex: Pattern value
'[A-Za-z0-9_-]*/[A-Za-z0-9_-]*(;\s*(charset=)?[A-Za-z0-9_-]*)?' is not a valid
regular expression. The reported error was: ''-' is an invalid character range.
Write '\-'.'.
  [xmlvalidate] /dtd/jspxml.xsd:249:42: InvalidRegex: Pattern value
'[A-Za-z0-9_-]*/[A-Za-z0-9_-]*' is not a valid regular expression. The reported
error was: ''-' is an invalid character range. Write '\-'.'.
  [xmlvalidate]
/home/gturner/src/newedgenetworks/zhenghesrc/server/src/web/index.jspx:6:96:
cvc-complex-type.3.1: Value '2.0' of attribute 'version' of element 'jsp:root'
is not valid with respect to the corresponding attribute use. Attribute
'version' has a fixed value of '1.2'.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to