Hi Tim,

Using the Endorsed Standards Override Mechanism is essential if you want 
to make use of JAXP 1.3 on JDK 1.4.2. If you merely put the jars on the 
classpath you can end up with a hybrid mess where some of the API and 
implementation get loaded from the JDK and other parts get loaded from the 
jars.

Thanks.

Michael Glavassevich
XML Parser Development
IBM Toronto Lab
E-mail: [EMAIL PROTECTED]
E-mail: [EMAIL PROTECTED]

Tim Carpenter <[EMAIL PROTECTED]> wrote on 02/14/2007 04:12:58 AM:

> Thanks for replying, Michael,
> 
> That's what the error looks like, for sure, but this error only 
> occurs on one machine, the other (devt) machine validates the 
> document correctly against the schema. I know for sure, as it throws 
> out about 4 errors (and rightly so) in regard to element data content 
> in the xml document. Same JAR on one machine as the other.
> 
> I have been trying various methods, even using the following:
> 
>               System.setProperty 
> ("javax.xml.parsers.DocumentBuilderFactory", 
> "org.apache.xerces.jaxp.DocumentBuilderFactoryImpl");
> 
>             DocumentBuilderFactory factory = 
> DocumentBuilderFactory.newInstance();
>             factory.setNamespaceAware(true);
>             factory.setValidating(true);
> factory.setAttribute("http://java.sun.com/xml/jaxp/properties/ 
> schemaLanguage", "http://www.w3.org/2001/XMLSchema"; );
> factory.setAttribute("http://java.sun.com/xml/jaxp/properties/ 
> schemaSource", "file:my_schema.xsd");
> 
>             DocumentBuilder builder =factory.newDocumentBuilder();
> 
>             MySAXErrorHandler handler = new MySAXErrorHandler(log);
>             builder.setErrorHandler(handler);
>             builder.parse(XmlDocumentUrl);
> 
> The above again works on one, but chokes on another. This gave that 
> very irritating error message saying it was one of three errors (this 
> might benefit from some refinement).
> 
> I have just tried the following:
> 
>             String language = XMLConstants.W3C_XML_SCHEMA_NS_URI;
>             SchemaFactory factory = SchemaFactory.newInstance(language);
>                      handler = new MySAXErrorHandler(log);
> 
>             factory.setErrorHandler(handler);
>             StreamSource ss = new StreamSource(new File(xmlSchema));
>             schema = factory.newSchema(ss);
>             validator = schema.newValidator();
>                       validator.setErrorHandler(handler);
>                 validator.validate(new StreamSource(XmlDocumentUrl));
> 
> which runs on one but throws out an error saying that the W3C string 
> is a bad parameter as soon as I instantiate the factory on the other. 
> This has set me experimenting with endorsed directories, which might 
> be why the destination system, running 1.4.2 is having issues due to 
> V1.3 JAXP libraries in my "Fat JAR" being ignored over those in the 
> JVM. I think this is the solution, frankly. Note my development 
> machine is also running 1.4.2.
> 
> That said, in each case it is a very vague error to issue if there is 
> a library shortfall ! The last code fragment has enabled me to move 
> forward purely because an exception is thrown right at the moment I 
> instantiate the factory and so set me on the "endorsed directory" 
> trail and away from the goose chase of URIs.
> 
> In one way unfair to criticise the library if this problem is due to 
> my JAR arrangement (lack of endorsed directory setting) but on the 
> other hand, the xerces library really should throw an exception if I 
> am trying to set a property (e.g. schema location) that is not yet 
> supported. What happens is it is in an unpredicatble state and then 
> throws out very misleading errors. If the exception was thrown 
> earlier, then it would have been more helpful. Again, this may well 
> be due to the unfortunate hybrid JAR arrangement that existed, but if 
> not, it might be worth visiting to ensure that things are thrown when 
> they should be.
> 
> At least if someone else has this problem on 1.4.2, I would suggest 
> they resolve the endorsed directories before progressing.
> 
> UPDATE: Endorsed directories do seem to resolve it. I am using the 
> last fragment (compiling the schema and using a validator) as I often 
> need to parse multiple documents of the same schema in quick succession.
> 
> NOTE: I just want to say, this issue aside, all the libraries I have 
> used in this area - xerces, xpath and the jaxp are a pleasure to use 
> in terms of how they are accessed, structured and most importantly to 
> me, named. Very professional, IMHO.
> 
> Tim
> 
> 
> On 14 Feb 2007, at 05:33, Michael Glavassevich wrote:
> 
> > Hi Tim,
> >
> > Tim Carpenter <[EMAIL PROTECTED]> wrote on 02/08/2007 09:50:34 
> > PM:
> >
> >> Update:
> >>
> >> I have managed to beat the system into finding my xsd file by using
> >> the following:
> >>
> >> urlStr = new String("my-schema.xsd"); // file is  local to the
> >> APPLICATION not to the source files.
> >> File xmlFile = new File(urlStr);
> >> FileReader xmlfr = new FileReader(xmlFile);
> >> InputSource inputSource = new InputSource(xmlfr);
> >> parser.parse(inputSource);
> >>
> >> Unfortunately, my schema, that begins with:
> >>
> >> <?xml version="1.0" encoding="ISO-8859-1" ?>
> >> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";
> >> elementFormDefault="qualified">
> >>
> >> throws out the following when validating...
> >>
> >> SEVERE: cvc-elt.1: Cannot find the declaration of element
> >> 'xs:schema'. at line number 2
> >>
> >> Now, this works fine on another machine. The erroneous machine is
> >> being accessed via FTP over the net, so it is a net-visible unit. It
> >> appears not to be able to accurately locate the w3 definition...most
> >> odd.
> >>
> >> Any ideas on this or improvements to how I am getting access to my
> >> schema?
> >
> > Given the error message, it looks like you're trying to validate your
> > schema document instead of the instance document. Is that what you 
> > really
> > intended to do?
> >
> >> Tim
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: [EMAIL PROTECTED]
> >> For additional commands, e-mail: [EMAIL PROTECTED]
> >
> > Michael Glavassevich
> > XML Parser Development
> > IBM Toronto Lab
> > E-mail: [EMAIL PROTECTED]
> > E-mail: [EMAIL PROTECTED]
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> 
> 
> 
> ___________________________________________________________ 
> Inbox full of spam? Get leading spam protection and 1GB storage with
> All New Yahoo! Mail. http://uk.docs.yahoo.com/nowyoucan.html
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]

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

Reply via email to