You can either copy and paste XML files into the text area, or you can upload your files.
If your uploaded files contain references to other files, you will be prompted for those. During your session, all of your files are kept for you on the server, and you can edit each of them.
If errors are found in any of these files, they are marked in the text with icons. If you point at one of these icons with your mouse, the error is desribed in a popup window:

If you would like to see how xmlvalidation.com works, but don't have an XML file to use for testing, you can use this example.
First, paste or upload the XML file. You will then be prompted for the XSD file. When both are uploaded, the errors will be highlighted and described.
You can read more about XML on http://www.w3.org/XML/.
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 16 in the jsp file: /start.jsp ESAPI.Encoder cannot be resolved to a type 13: <%=mess.getMessage(Messages.START_HEADLINE)%> 14: <br/> 15: <form method="post" action="<%=postURL%>" enctype="multipart/form-data"> 16: <textarea name="<%=keyFile%>" rows="10" cols="80"><%=ESAPI.Encoder.encodeForHTML(xml, false)%></textarea> 17: <input type="hidden" name="<%=keyFilename%>" value="xml"/> 18: <%=embeddedParam%> 19: <br/> Stacktrace: org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:93) org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330) org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:435) org.apache.jasper.compiler.Compiler.compile(Compiler.java:298) org.apache.jasper.compiler.Compiler.compile(Compiler.java:277) org.apache.jasper.compiler.Compiler.compile(Compiler.java:265) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:564) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:302) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) sun.reflect.GeneratedMethodAccessor48.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:597) org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:244) java.security.AccessController.doPrivileged(Native Method) javax.security.auth.Subject.doAsPrivileged(Subject.java:517) org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:276) org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5 logs.