Re: multiple namespaces

Andrew Welch writes:

> With this XML:
> 
>   <ns1:foo>some text</ns1:foo>
>   <ns2:bar>some text</ns2:bar>

Well, first of all, that's not an XML document you could validate, so 
let's assume you meant something along the lines of:

With this XML:

  <ns1:root xmlns:ns1="uri1" xmlns:ns1="uri2">
    <ns1:foo>some text</ns1:foo>
    <ns2:bar>some text</ns2:bar>
  </ns1:root>


> Am I right in thinking I need two schemas - one for each namespace?

Well, you're terminology isn't quite what the Recommendation uses, but in 
the sense you probably mean the answer is "yes", at least presuming you 
wanted to actually validate the contents of both elements, rather than 
just accepting them with a wildcard.  To be a bit more precise, to 
validate the element information item "root" you would need a single 
>schema< with components declaring (at least) the three elements ns1:root, 
ns1:foo, and ns2:bar.

What you're (almost surely) thinking of as a schema is what the 
Recommendation calls a >Schema Document<, I.e. an XML document with a root 
of <xs:schema>.  Since each of those can contribute declarations for at 
most one so-called target namespace, in this case ns1 or ns2, you will 
need two such documents.  Very probably the schema document for ns1 will 
import the one for ns2, though there are other ways to get both documents 
used.  For example, some processors would let you name both schema 
documents on a command line or in an api. 

Anyway, the careful answer your question is:  you will be using one 
schema, which will almost surely be built (composed) from at least two 
schema documents.  The informal answer to your question is:  yes.  :-)

Noah

--------------------------------------
Noah Mendelsohn 
IBM Corporation
One Rogers Street
Cambridge, MA 02142
1-617-693-4036
--------------------------------------

Received on Monday, 23 April 2007 14:36:22 UTC