- From: <noah_mendelsohn@us.ibm.com>
- Date: Mon, 23 Apr 2007 10:35:58 -0400
- To: "Andrew Welch" <andrew.j.welch@gmail.com>
- Cc: xmlschema-dev@w3.org
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