[jdom-interest] Default Namespace vs No-Namespace.

New, Cecil (GEAE) cecil.new at ae.ge.com
Thu Jul 3 13:49:42 PDT 2003


If you can assume the namespace prefix is the same, changing the root references
should be all you need to do.  If you can't, then change to the root namespace
references will be a bit tricker.  But, nonetheless, I think that's all you need
to do.

Of course, others on this list are much more savvy than myself about these
matters.

But I think your use case is clear.  And I think it will be one that will be
very common in an age of web services/soap.

Jason once referred to such incoming XML documents as "viruses" -- making the
point very well.

Cheers.

-----Original Message-----
From: John Jefferson [mailto:surfer97301 at yahoo.com]
Sent: Thursday, July 03, 2003 2:03 PM
To: Elliotte Rusty Harold
Cc: 'jdom-interest at jdom.org'
Subject: Re: [jdom-interest] Default Namespace vs No-Namespace.


> >The default namespace is a feature of xml which
> allows
> >you to declare one namespace at the top and for any
> >element in the document which is not given a
> namespace
> >that element will inherit the default namespace.
> 
> No, this statement is not true. Namespaces are quite
> a bit more 
> complicated than that. When  designing an API, it's
> important to be 
> really precise and clear about these things.


Maybe you can enlighten me on this point.  Or point me
to something easier to digest than the xml namespace
spec.  

 
> >Why is jdom's behavior set such that when I have a
> >document and I set the default namespace at the
> root
> >the child nodes of the root do not inherit the
> >namespace but instead are set to the special
> >no-namespace namespace.
> 
> Because that's what you asked for in your code.

Alright how can I, without iterating through all nodes
in the document, set the root element to have a
default namespace and have that namespace propogate
down to all children nodes which are not already
namespaced - other than the special no-namespace?

 
> >This is problematic for me.  What I am doing is
> >receiving an xml file from an untrusted source. 
> What
> >I then what to ensure is that this xml validate
> >against my particular schema/dtd.
> >In order to do this, I build the document with SAX.
> >Get the root element and set the root elements
> >namespaces, etc such that this document is using my
> >schemas/dtds.  Now I write this document back out
> and
> >read it in again in order to validate it but since
> the
> >XmlOutputter gives the root children the
> no-namespace,
> >the document fails validation.
> 
> Yet another fallacy. You do not need to change the
> document to 
> validate it. The namespace name does *not* point to
> the schema.

Let me give you an example to make this more clear.  

The xml I have coming in looks like:

<root xmlns="http://notmynamespace"
xmlns:custom="http://www.custom.com/CUSTOM"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://notmynamespace
notmyname.xsd    http://www.custom.com/CUSTOM
custom.xsd">

<child1/>
<child2/>

</root>

Now I want to validate this document against the
default namespace of xmlns="http://mynamespace" and a
different set of schemas.  

How do I do this without changing the namespace?


Thanks for the response, any help is appreciated!

JJ


__________________________________
Do you Yahoo!?
The New Yahoo! Search - Faster. Easier. Bingo.
http://search.yahoo.com
_______________________________________________
To control your jdom-interest membership:
http://lists.denveronline.net/mailman/options/jdom-interest/youraddr@yourhost.co
m



More information about the jdom-interest mailing list