Ok, thanks a lot!

Bernd

> -----Original Message-----
> From: Michael Glavassevich [mailto:[EMAIL PROTECTED] 
> Sent: Wednesday, January 10, 2007 3:58 PM
> To: j-users@xerces.apache.org
> Subject: RE: Add schema to xmldocument
> 
> "Bernd Kolb \([EMAIL PROTECTED])" <[EMAIL PROTECTED]> wrote on 01/10/2007
> 06:58:49 AM:
> 
> > The problem is, that I am already getting the Element-Objects.
> > Some framework is parsing the xml and I am not able to change the 
> > DocumentBuilderFactory.
> >
> > Is the only possibility to save the elements to a file and load it 
> > again???
> 
> That's not the only way but it's probably the easiest 
> solution to implement.
> 
> > Thanks
> > 
> > Bernd
> > 
> > 
> > 
> > > -----Original Message-----
> > > From: Michael Glavassevich [mailto:[EMAIL PROTECTED]
> > > Sent: Wednesday, January 10, 2007 6:33 AM
> > > To: j-users@xerces.apache.org
> > > Subject: RE: Add schema to xmldocument
> > > 
> > > "Bernd Kolb \([EMAIL PROTECTED])" <[EMAIL PROTECTED]> wrote on 01/09/2007
> > > 09:58:08 AM:
> > > 
> > > > Thanks Michael for your explanations.
> > > > 
> > > > I have tried to add your remarks to my code, without success
> > > > 
> > > > I am using JDK 1.4.2_13 with xerces 2.9.0
> > > > 
> > > > -------------------------------------------------------------
> > > > 
> > > > Here is the code:
> > > > 
> > > > element.setAttribute("xmlns", 
> > > >    "http://example.com/zedv/services/Logger/log";);
> > > > element.setAttribute("xmlns:xsi", 
> > > >    XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI);
> > > 
> > > setAttribute() creates non-namespace-aware attribute nodes. 
> > > You should be using setAttributeNS() instead though as I 
> said in a 
> > > previous e-mail this will not do what you think. Adding a 
> namespace 
> > > declaration to the tree has no effect on the namespace 
> URI of other 
> > > nodes. To change the namespace URI of the 
> elements/attributes in the 
> > > DOM you must use renameNode().
> > > 
> > > > DocumentBuilderFactory newInstance = DocumentBuilderFactory.
> > > >    newInstance();
> > > > newInstance.setNamespaceAware(true);
> > > 
> > > This needs to be set on the DocumentBuilder which created the 
> > > Document you're importing from. Setting this here has no effect.
> > > 
> > > > Document doc2Validate =
> > > > newInstance.newDocumentBuilder().newDocument();
> > > > 
> > > > Element importNode = (Element)
> > > doc2Validate.importNode(element, true);
> > > > doc2Validate.appendChild(importNode);
> > > > doc2Validate.normalize();
> > > > 
> > > > Schema schema = SchemaFactory.newInstance(
> > > >    XMLConstants.W3C_XML_SCHEMA_NS_URI).newSchema(
> > > >       new StreamSource(this.getClass().
> > > >          getResourceAsStream("/LoggerLog.xsd")));
> > > > Validator newValidator = schema.newValidator(); 
> > > > newValidator.setErrorHandler(new ValidationErrorHandler()); 
> > > > newValidator.validate(new DOMSource(doc2Validate));
> > > > 
> > > > -------------------------------------------------------------
> > > > 
> > > > The XSD looks like this:
> > > > 
> > > > <?xml version="1.0" encoding="UTF-8"?> <xs:schema 
> > > > xmlns:xs="http://www.w3.org/2001/XMLSchema";
> > > >    xmlns="http://example.com/zedv/services/Logger/log"; 
> > > >    
> targetNamespace="http://example.com/zedv/services/Logger/log"; 
> > > >    elementFormDefault="qualified"> 
> > > >   <xs:element name="log" type="log"/> 
> > > >   <xs:complexType name="log"> 
> > > >     <xs:attribute name="info" type="xs:string"/> 
> > > >   </xs:complexType>
> > > > </xs:schema>
> > > > 
> > > > -------------------------------------------------------------
> > > > 
> > > > The XML is here:
> > > > 
> > > > <?xml version="1.0" encoding="UTF-8" ?> <log info="starting 
> > > > test"/>
> > > > 
> > > > -------------------------------------------------------------
> > > > 
> > > > I have added xerces 2.9.0 to the classpath an have run the
> > > code above
> > > > with jdk 1.4.3_13
> > > > 
> > > > The result was this exception
> > > > 
> > > > org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the
> > > declaration
> > > >    of element 'log'.
> > > >    at org.apache.xerces.util.ErrorHandlerWrapper.
> > > >       createSAXParseException(Unknown Source)
> > > >    at org.apache.xerces.util.ErrorHandlerWrapper.
> > > >       error(Unknown Source)
> > > >    at org.apache.xerces.impl.XMLErrorReporter.
> > > >       reportError(Unknown Source)
> > > >    at org.apache.xerces.impl.XMLErrorReporter.
> > > >       reportError(Unknown Source)
> > > >    at org.apache.xerces.impl.xs.XMLSchemaValidator.
> > > >       handleStartElement(Unknown Source)
> > > >    at org.apache.xerces.impl.xs.XMLSchemaValidator.
> > > >       startElement(Unknown Source)
> > > >    at org.apache.xerces.jaxp.validation.DOMValidatorHelper.
> > > >       beginNode(Unknown Source)
> > > >    at org.apache.xerces.jaxp.validation.DOMValidatorHelper.
> > > >       validate(Unknown Source)
> > > >    at org.apache.xerces.jaxp.validation.DOMValidatorHelper.
> > > >       validate(Unknown Source)
> > > >    at org.apache.xerces.jaxp.validation.ValidatorImpl.
> > > >       validate(Unknown Source)
> > > >    at javax.xml.validation.Validator.validate(Unknown Source)
> > > >    at XMLValidation.<init>(XMLValidation.java:58)
> > > >    at XMLValidation.main(XMLValidation.java:23)
> > > > Exception in thread "main" 
> > > > 
> > > > 
> > > > Then I changed the jdk to 1.5_6 and the same code is
> > > working fine....
> > > > 
> > > > Do you have any idea?
> > > > 
> > > > Regards
> > > > 
> > > > Bernd
> > > > 
> > > > > -----Original Message-----
> > > > > From: Michael Glavassevich [mailto:[EMAIL PROTECTED]
> > > > > Sent: Tuesday, January 09, 2007 3:21 PM
> > > > > To: j-users@xerces.apache.org
> > > > > Subject: RE: Add schema to xmldocument
> > > > > 
> > > > > Each node in a DOM [1] carries its own namespace URI. 
> Adding a 
> > > > > namespace declaration to the tree has no effect on the
> > > namespace URI
> > > > > of other nodes.
> > > > > If you want to change the namespace URI of a node (element or
> > > > > attribute) you need to use renameNode() [2]. Also if
> > > you're going to
> > > > > be validating this DOM against an XML schema it needs to
> > > have been
> > > > > constructed from a namespace aware parser.
> > > > > In other words you need to explicitly set namespace 
> awareness to 
> > > > > true (docBuilderFactory.setNamespaceAware(true)) on the
> > > instance of
> > > > > the DocumentBuilderFactory since the default value is false.
> > > > > 
> > > > > Once you've done all that there's no need to add the 
> > > > > xsi:schemaLocation attribute to the document. The 
> validator will 
> > > > > work just fine without it (and in fact it will ignore it).
> > > > > 
> > > > > [1] http://www.w3.org/DOM/faq.html#namespacefixup
> > > > > [2]
> > > > > http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.h
> > > > tml#Document3-renameNode
> > > > > 
> > > > > Michael Glavassevich
> > > > > XML Parser Development
> > > > > IBM Toronto Lab
> > > > > E-mail: [EMAIL PROTECTED]
> > > > > E-mail: [EMAIL PROTECTED]
> > > > > 
> > > > > "Bernd Kolb \([EMAIL PROTECTED])" <[EMAIL PROTECTED]> wrote on 
> > > > > 01/09/2007
> > > > > 03:15:58 AM:
> > > > > 
> > > > > > 
> > > > > > Yes, that's true.
> > > > > > 
> > > > > > Is it somehow possible to add
> > > > > > 
> > > > > > xmlns="http://sample.com"; 
> > > > > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
> > > > > > 
> > > > > > to an already parsed document?
> > > > > > As I said, I tried to add these arguments to the documents 
> > > > > > root element, without success.
> > > > > > 
> > > > > > Thanks again
> > > > > > 
> > > > > > Regards
> > > > > > 
> > > > > > Bernd Kolb
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > > > -----Original Message-----
> > > > > > > From: Dick Deneer 
> [mailto:[EMAIL PROTECTED]
> > > > > > > Sent: Tuesday, January 09, 2007 8:19 AM
> > > > > > > To: j-users@xerces.apache.org
> > > > > > > Subject: Re: Add schema to xmldocument
> > > > > > > 
> > > > > > > 
> > > > > > > Apparently your schema simple.xsd has a
> > > targetnamespace http://
> > > > > > > sample.com.
> > > > > > > Your test.xml has no namespace decaration, so it is
> > > in the "null" 
> > > > > > > namespace  and has to be validated against a schema thas
> > > > > als has a
> > > > > > > "null" targetnamespace.
> > > > > > > 
> > > > > > > Either you must remove the targetnamespace in your xsd or
> > > > > you have
> > > > > > > to add xmlns="http://sample.com";
> > > > > > > xmlns:xsi="http://www.w3.org/2001/
> > > > > > > XMLSchema-instance" to your test.xml.
> > > > > > > 
> > > > > > > 
> > > > > > > Regards
> > > > > > > Dick Deneer
> > > > > > > 
> > > > > > > 
> > > > > > > 
> > > > > > > Op 8-jan-2007, om 23:43 heeft Bernd Kolb (([EMAIL PROTECTED])) 
> > > > > > > het 
> > > > > > > volgende
> > > > > > > geschreven:
> > > > > > > 
> > > > > > > > Hi,
> > > > > > > >
> > > > > > > > I have a question: I am using xerces 2.9.0.
> > > > > > > >
> > > > > > > > I have a XML-Document witch was not created by 
> me and I am
> > > > > > > not able to
> > > > > > > > load it from a file. I am getting the 
> XML-Document Object.
> > > > > > > >
> > > > > > > > Now I want to validate this document against a schema.
> > > > > > > > This schema might not be in the document.
> > > > > > > >
> > > > > > > > So I want to add the schema programmatically.
> > > > > > > >
> > > > > > > > How can I achieve this?
> > > > > > > >
> > > > > > > >
> > > > > > > > Document doc =
> > > > > > > > 
> > > > > 
> DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(
> > > > > ne
> > > > > > > > w
> > > > > > > > File("test.xml"));
> > > > > > > >
> > > > > > > > Schema schema =
> > > > > > > > SchemaFactory.newInstance
> > > > > > > > (XMLConstants.W3C_XML_SCHEMA_NS_URI).newSchema(new
> > > > > > > > StreamSource("simpleSchema.xsd"));
> > > > > > > > schema.newValidator().validate(new DOMSource(doc));
> > > > > > > >
> > > > > > > >
> > > > > > > > test.xml looks like this
> > > > > > > >
> > > > > > > > <?xml version="1.0" encoding="UTF-8"?> <persons age="0">
> > > > > > > >   <name>name</name>
> > > > > > > >   <surname>surname</surname> </persons>
> > > > > > > >
> > > > > > > > But I'd like xerces to act as if it looked like the
> > > > > following one:
> > > > > > > > <?xml version="1.0" encoding="UTF-8"?> <persons age="0" 
> > > > > > > > xmlns="http://sample.com";
> > > > > > > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
> > > > > > > > xsi:schemaLocation="http://sample.com 
> simpleSchema.xsd ">
> > > > > > > >   <name>name</name>
> > > > > > > >   <surname>surname</surname> </persons>
> > > > > > > >
> > > > > > > > I tried to add the xmlns, xmlns:xsi and 
> xsi:schemaLocation
> > > > > > > attributes
> > > > > > > > to the root element by code, without success...
> > > > > > > >
> > > > > > > >
> > > > > > > > Any idea?
> > > > > > > >
> > > > > > > > Thanks a lot!
> > > > > > > >
> > > > > > > >
> > > > > > > > Best wishes
> > > > > > > >
> > > > > > > > Bernd Kolb
> > > > > > > >
> > > > > > > >
> > > > > > > > 
> > > > > > > 
> > > > > 
> > > 
> --------------------------------------------------------------------
> > > > > > > -
> > > > > > > > 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]
> > > > > > > 
> > > > > > > 
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > 
> > > 
> --------------------------------------------------------------------
> > > > > -
> > > > > > 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]
> > > > > 
> > > > > 
> > > > 
> > > > 
> > > > 
> > > 
> --------------------------------------------------------------------
> > > -
> > > > 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]
> > > 
> > > 
> > 
> > 
> > 
> ---------------------------------------------------------------------
> > 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]
> 
> 


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

Reply via email to