[prev in list] [next in list] [prev in thread] [next in thread] 

List:       xerces-j-dev
Subject:    Re: DOM and Validation
From:       Ankit Pasricha <ankitp () ca ! ibm ! com>
Date:       2004-09-29 15:59:26
Message-ID: OF695C0D08.3A62B9CE-ON85256F1E.0057824A-85256F1E.0057B93F () ca ! ibm ! com
[Download RAW message or body]

--=_alternative 0057B74E85256F1E_=
Content-Type: text/plain; charset="US-ASCII"

See the 'http://apache.org/xml/properties/schema/external-schemaLocation' 
property in [1]

[1] http://xml.apache.org/xerces2-j/properties.html

Ankit Pasricha
XML Parser Development
IBM Toronto Lab
8200 Warden Avenue, Ontario L6G 1C7
Phone: (905) 413 4941



Jared Davis <jared@cs.utexas.edu> 
09/29/2004 11:55 AM
Please respond to
xerces-j-user@xml.apache.org


To
xerces-j-user@xml.apache.org
cc

Subject
DOM and Validation






Hi,

I'm trying to parse some XML files (which will be written by hand)
and validate them against a schema (which will be somewhere on the
end user's system, and found using getResource).  So, I am thinking
that I don't want to have the XML files themselves specify an
explicit location, but instead I'd like to just load the schema
manually and check the files against it.

I don't seem to be having much luck with this.  Here's what I'm
trying to do:


   // Open a stream to the file to read.
   InputStream in = ...;

   // Create a Schema object with my xsd file
   SchemaFactory scf = 
SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
   Schema schema = scf.newSchema(getClass().getResource("fog.xsd"));

   // Create a DocumentBuilderFactory and set its schema
   DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
   dbf.setSchema(schema);

   // Create a DocumentBuilder and parse the file.
   DocumentBuilder db = dbf.newDocumentBuilder();
   Document doc = db.parse(in);



Anyway, when I run this code, I get the attached error trace.  The
error will not occur if I don't set the schema.  Perhaps I'm not
doing this in the proper way?

Thanks,
    Jared




java.lang.IllegalStateException
         at 
com.sun.org.apache.xerces.internal.jaxp.validation.ValidatorHandlerImpl$3.checkState(ValidatorHandlerImpl.java:411)
  at 
com.sun.org.apache.xerces.internal.jaxp.validation.ValidatorHandlerImpl$3.getElementTypeInfo(ValidatorHandlerImpl.java:441)
  at 
com.sun.org.apache.xerces.internal.jaxp.JAXPValidatorComponent$SAX2XNI.elementAug(JAXPValidatorComponent.java:299)
  at 
com.sun.org.apache.xerces.internal.jaxp.JAXPValidatorComponent$SAX2XNI.endElement(JAXPValidatorComponent.java:291)
  at 
com.sun.org.apache.xerces.internal.jaxp.XNI2SAX.endElement(XNI2SAX.java:163)
         at 
com.sun.org.apache.xerces.internal.jaxp.validation.XNI2SAXEx.endElement(XNI2SAXEx.java:108)
  at 
com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.endElement(XMLSchemaValidator.java:818)
  at 
com.sun.org.apache.xerces.internal.jaxp.validation.ValidatorHandlerImpl.endElement(ValidatorHandlerImpl.java:339)
  at 
com.sun.org.apache.xerces.internal.jaxp.XNI2SAX.endElement(XNI2SAX.java:163)
         at 
com.sun.org.apache.xerces.internal.jaxp.JAXPValidatorComponent.endElement(JAXPValidatorComponent.java:206)
  at 
com.sun.org.apache.xerces.internal.xinclude.XIncludeHandler.endElement(XIncludeHandler.java:790)
  at 
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1241)
  at 
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1685)
  at 
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
  at 
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
  at 
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
  at 
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
         at 
com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:248)
         at 
com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:292)


---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-j-user-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-j-user-help@xml.apache.org



--=_alternative 0057B74E85256F1E_=
Content-Type: text/html; charset="US-ASCII"


<br><font size=2 face="sans-serif">See the </font><font \
size=3><tt>'http://apache.org/xml/properties/schema/external-schemaLocation</tt></font><font \
size=2 face="sans-serif">' property in [1]</font>
<br>
<br><font size=2 face="sans-serif">[1] \
http://xml.apache.org/xerces2-j/properties.html</font> <br>
<br><font size=2 face="sans-serif">Ankit Pasricha<br>
XML Parser Development<br>
IBM Toronto Lab<br>
8200 Warden Avenue, Ontario L6G 1C7<br>
Phone: (905) 413 4941</font>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td width=40%><font size=1 face="sans-serif"><b>Jared Davis \
&lt;jared@cs.utexas.edu&gt;</b> </font>
<p><font size=1 face="sans-serif">09/29/2004 11:55 AM</font>
<table border>
<tr valign=top>
<td bgcolor=white>
<div align=center><font size=1 face="sans-serif">Please respond to<br>
xerces-j-user@xml.apache.org</font></div></table>
<br>
<td width=59%>
<table width=100%>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">To</font></div>
<td><font size=1 face="sans-serif">xerces-j-user@xml.apache.org</font>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">cc</font></div>
<td>
<tr valign=top>
<td>
<div align=right><font size=1 face="sans-serif">Subject</font></div>
<td><font size=1 face="sans-serif">DOM and Validation</font></table>
<br>
<table>
<tr valign=top>
<td>
<td></table>
<br></table>
<br>
<br>
<br><font size=2><tt>Hi,<br>
<br>
I'm trying to parse some XML files (which will be written by hand)<br>
and validate them against a schema (which will be somewhere on the<br>
end user's system, and found using getResource). &nbsp;So, I am thinking<br>
that I don't want to have the XML files themselves specify an<br>
explicit location, but instead I'd like to just load the schema<br>
manually and check the files against it.<br>
<br>
I don't seem to be having much luck with this. &nbsp;Here's what I'm<br>
trying to do:<br>
<br>
<br>
 &nbsp; // Open a stream to the file to read.<br>
 &nbsp; InputStream in = ...;<br>
<br>
 &nbsp; // Create a Schema object with my xsd file<br>
 &nbsp; SchemaFactory scf = \
SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);<br>  &nbsp; Schema \
schema = scf.newSchema(getClass().getResource(&quot;fog.xsd&quot;));<br> <br>
 &nbsp; // Create a DocumentBuilderFactory and set its schema<br>
 &nbsp; DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();<br>
 &nbsp; dbf.setSchema(schema);<br>
<br>
 &nbsp; // Create a DocumentBuilder and parse the file.<br>
 &nbsp; DocumentBuilder db = dbf.newDocumentBuilder();<br>
 &nbsp; Document doc = db.parse(in);<br>
<br>
<br>
<br>
Anyway, when I run this code, I get the attached error trace. &nbsp;The<br>
error will not occur if I don't set the schema. &nbsp;Perhaps I'm not<br>
doing this in the proper way?<br>
<br>
Thanks,<br>
 &nbsp; &nbsp;Jared<br>
<br>
<br>
<br>
<br>
java.lang.IllegalStateException<br>
 &nbsp; &nbsp; &nbsp; &nbsp; at <br>
com.sun.org.apache.xerces.internal.jaxp.validation.ValidatorHandlerImpl$3.checkState(ValidatorHandlerImpl.java:411)<br>
  &nbsp; &nbsp; &nbsp; &nbsp; at <br>
com.sun.org.apache.xerces.internal.jaxp.validation.ValidatorHandlerImpl$3.getElementTypeInfo(ValidatorHandlerImpl.java:441)<br>
  &nbsp; &nbsp; &nbsp; &nbsp; at <br>
com.sun.org.apache.xerces.internal.jaxp.JAXPValidatorComponent$SAX2XNI.elementAug(JAXPValidatorComponent.java:299)<br>
  &nbsp; &nbsp; &nbsp; &nbsp; at <br>
com.sun.org.apache.xerces.internal.jaxp.JAXPValidatorComponent$SAX2XNI.endElement(JAXPValidatorComponent.java:291)<br>
  &nbsp; &nbsp; &nbsp; &nbsp; at \
com.sun.org.apache.xerces.internal.jaxp.XNI2SAX.endElement(XNI2SAX.java:163)<br>  \
&nbsp; &nbsp; &nbsp; &nbsp; at \
com.sun.org.apache.xerces.internal.jaxp.validation.XNI2SAXEx.endElement(XNI2SAXEx.java:108)<br>
  &nbsp; &nbsp; &nbsp; &nbsp; at <br>
com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.endElement(XMLSchemaValidator.java:818)<br>
  &nbsp; &nbsp; &nbsp; &nbsp; at <br>
com.sun.org.apache.xerces.internal.jaxp.validation.ValidatorHandlerImpl.endElement(ValidatorHandlerImpl.java:339)<br>
  &nbsp; &nbsp; &nbsp; &nbsp; at \
com.sun.org.apache.xerces.internal.jaxp.XNI2SAX.endElement(XNI2SAX.java:163)<br>  \
&nbsp; &nbsp; &nbsp; &nbsp; at <br> \
com.sun.org.apache.xerces.internal.jaxp.JAXPValidatorComponent.endElement(JAXPValidatorComponent.java:206)<br>
  &nbsp; &nbsp; &nbsp; &nbsp; at <br>
com.sun.org.apache.xerces.internal.xinclude.XIncludeHandler.endElement(XIncludeHandler.java:790)<br>
  &nbsp; &nbsp; &nbsp; &nbsp; at <br>
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1241)<br>
  &nbsp; &nbsp; &nbsp; &nbsp; at <br>
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1685)<br>
  &nbsp; &nbsp; &nbsp; &nbsp; at <br>
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)<br>
  &nbsp; &nbsp; &nbsp; &nbsp; at <br>
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)<br>
  &nbsp; &nbsp; &nbsp; &nbsp; at <br>
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)<br>
  &nbsp; &nbsp; &nbsp; &nbsp; at \
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)<br>  \
&nbsp; &nbsp; &nbsp; &nbsp; at \
com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:248)<br>  \
&nbsp; &nbsp; &nbsp; &nbsp; at <br> \
com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:292)<br>
 <br>
---------------------------------------------------------------------<br>
To unsubscribe, e-mail: xerces-j-user-unsubscribe@xml.apache.org<br>
For additional commands, e-mail: xerces-j-user-help@xml.apache.org<br>
<br>
</tt></font>
<br>
--=_alternative 0057B74E85256F1E_=--


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic