2 namespaces in 1 schema

Z

Zombie

Hi,
Can I have 2 namespaces in the same XML schema?
In the schema, I wish to declare elements such that some of them
belong to one namespace and others belong to a second namespace. Is
this possible? Note that both the namespaces should be in the same
schema and same xsd file. Could somebody provide a small snippet on
how to do this?

Thanks for your time.
 
M

Martin Honnen

Zombie wrote:

Can I have 2 namespaces in the same XML schema?

You need at least one schema to define elements for each namespace but
of course a schema for one namespace can import a schema for another
namespace and then reference elements from the other namespace.
 
Z

Zombie

Martin Honnen said:
Zombie wrote:



You need at least one schema to define elements for each namespace but
of course a schema for one namespace can import a schema for another
namespace and then reference elements from the other namespace.

Do you mean to say that 1 schema file can contain only 1 namespace?
Actually, 'import' is exactly what I want to avoid. That is why in the
OP, I explicitly mentioned that I want 1 schema in 1 xsd file
containing 2 namespaces.
Any way to do that?

Thanks much.
 
A

Abhinav

Zombie said:
Do you mean to say that 1 schema file can contain only 1 namespace?
Actually, 'import' is exactly what I want to avoid. That is why in the
OP, I explicitly mentioned that I want 1 schema in 1 xsd file
containing 2 namespaces.
Any way to do that?

Does this help ?

(This is an example given to me by Zafar Abbas at the newsgroup
microsoft.public.xml. Google for "Schema - Definition for checking part of
schema?")

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="a">
<xs:complexType>
<xs:sequence>
<xs:group ref = "allowAny"/>
<xs:element name="aa" />
<xs:group ref = "allowAny"/>
</xs:sequence>
</xs:complexType>
</xs:element>

<xs:group name="allowAny">
<xs:sequence>
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" />
</xs:sequence>
</xs:group>

</xs:schema>

The following xml will be valid according to it:

<a xmlns:ns="ns">
<aa>
</aa>

<ns:bb></ns:bb>
<ns:cc></ns:cc>

</a>

Regards
 
M

Martin Honnen

Zombie said:
Do you mean to say that 1 schema file can contain only 1 namespace?

It depends on what you mean by "contain". I clearly said that you need
one schema to define the elements for one namespace but that you need to
import the definitions of the schema for a second namespace.
Actually, 'import' is exactly what I want to avoid. That is why in the
OP, I explicitly mentioned that I want 1 schema in 1 xsd file
containing 2 namespaces.
Any way to do that?

No, if you want to validate all elements and you have elements in
differerent namespaces then you need to have one schema for every
namespace you want to define elements in.

The only thing you can do is skip validation for elements in one
namespace with
<xs:any>
 
Z

Zombie

Abhinav said:
Does this help ?

(This is an example given to me by Zafar Abbas at the newsgroup
microsoft.public.xml. Google for "Schema - Definition for checking part of
schema?")

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="a">
<xs:complexType>
<xs:sequence>
<xs:group ref = "allowAny"/>
<xs:element name="aa" />
<xs:group ref = "allowAny"/>
</xs:sequence>
</xs:complexType>
</xs:element>

<xs:group name="allowAny">
<xs:sequence>
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" />
</xs:sequence>
</xs:group>

</xs:schema>

The following xml will be valid according to it:

<a xmlns:ns="ns">
<aa>
</aa>

<ns:bb></ns:bb>
<ns:cc></ns:cc>

</a>

Regards

Abhinav, thanks for your effort. Actually, my problem starts right
after this.
Now, I wish to come up with a second schema that will define the "bb"
and "cc" elements so that the above xml gets validated against this
new schema (bb and cc should also get validated now). As you can see,
in the xml, "bb" and "cc" are in a new namespace. So, in the new
schema too, they need to be defined in a new namespace. And that is
exactly what I am unable to do.
I hope you understand my problem.

Thanks again.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,997
Messages
2,570,240
Members
46,830
Latest member
HeleneMull

Latest Threads

Top