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.html#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(new > > > 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]