- From: Jeff Rafter <lists@jeffrafter.com>
- Date: Fri, 03 Dec 2004 08:00:46 -0800
- To: Dan Vint <dvint@dvint.com>
- CC: xmlschema-dev@w3.org
> In the Namespace spec I can't see any guidance on this question and with
> the schema spec saying schema location information is optional and at
> best a hint I don't see any help there either. With the schema location
> info being a "hint" there seems to be no way to make clear that I would
> want namespace foo with schema 1 rather than schema 2. So I lean towards
> this not being necessarily illegal, but a REALLLLLY poor design.
As Xan said, your assumption about <include> was incorrect-- you can
include items in the same namespace. This leaves you three options as
near as I can tell:
(1) Create a "driver" or "master" schema-- this does nothing more than
<include> your two divergent but like-namespaced schemas. Now you are
back to one schema, which you prefer.
(2) Include more than one schema in the schemaLocation hint
xsi:schemaLocation="http://foo schema1.xsd
http://foo schema2.xsd"
Unfortunately support for this is spotty.
(3) Use some other out of band mechanism. For example in Xerces or MSXML
you can list multiple schemas to be used for validation. Additionally
there is RDDL which allows you to identify which schemas can be used to
validate items coming from a particular namespace (XSV supports this but
again support for this is not very common) or use NRL (namespace routing
language) which should allow you to do exactly what you want. Of course
I haven't seen support for NRL in any XML Schema processor...
So of these... option (1) is the most stable.
Cheers,
Jeff Rafter
Received on Friday, 3 December 2004 16:01:16 UTC