By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
446,231 Members | 1,514 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 446,231 IT Pros & Developers. It's quick & easy.

Namespaces on Schemas

P: n/a
Hello all!

I need to build an XML file structure so a client can import data to
one of our systems. Totally new to XML, I learned about Namespaces and
DTD, and built a nice spec using them. Now I am trying to use XML
Schemas to tell more about what kind of data are allowed on each
element/attribute, but I can't understand how to mix Namespaces and
Schemas.

Can anyone give me tips, starting points, about how to specify the
Schema for the following example XML?

<library xmlns:book="book" xmlns:author="author">
<book:book>
<book:title>Example</book:title>
<book:pages>150</book:pages>
</book:book>
<author:author>
<author:title>Mr</author:title>
<author:name>Julio Nobrega</author:name>
</author:author>
</library>

I want to say that the <title> tag has different validation rules
depending on the namespace...

Thank you!

--
Julio Nobrega
http://www.inerciasensorial.com.br

Oct 13 '05 #1
Share this Question
Share on Google+
6 Replies


P: n/a
You are mis-using namespaces. Namespaces should only really be used
when you are addressing xml from different sources, say, from two
different departments, and want to keep their definitions distinct. As
someone who is producing an entire xml document, one should never use
more than one namespace. When you are aggregating documents from
different sources and are concerned about namespace clashed, you then
think about using a set of namespaces.

Here are my rules for the use of namespaces:
Rule 1 of namespace: Don't
Rule 2 of namespaces: Not yet
Rule 3 of namespaces: only when you need to

Thus your xml would look like:

<library>
<book>
<title>here</title>
<author>there</author>
</book>
<author>
<title>here</title>
<name>there</name>
</author>
</library>

xml Schema is nice because it allows you to define structure that may
be called the same, but is used in different places. e.g.:

You wanted the library/book/title element to have an ISBN attribute,
but the library/book/title element to have a number attribute (i.e.
this is the author's Nth book). Any good schema reference will tell
you how to define children element of the same name but of different
(complex/simple) types.

In conclusion, that the title element is a child of the book element
implies that it is a "book title", there's no need to define different
namespaces.

take a look at http://builder.com.com/5100-6389-1046618.html for more
on namespaces.

Oct 13 '05 #2

P: n/a
In article <11**********************@g44g2000cwa.googlegroups .com>,
<in****@gmail.com> wrote:
<library xmlns:book="book" xmlns:author="author">


Namespace names are supposed to be absolute URLs.

-- Richard
Oct 13 '05 #3

P: n/a
Actually, namespaces are designated as URI's not URL's. Taken from the W3C's recommendation on XML namepsaces: <http://www.w3.org/TR/REC-xml-names/#ns-decl>

[Definition:] The attribute's value, a URI reference, is the namespace name identifying the namespace. The namespace name, to serve its intended purpose, should have the characteristics of uniqueness and persistence. It is not a goal that it be directly usable for retrieval of a schema (if any exists). An example of a syntax that is designed with these goals in mind is that for Uniform Resource Names [RFC2141]. However, it should be noted that ordinary URLs can be managed in such a way as to achieve these same goals.

In other words, the namespace URI has to be unique and that's it. URL's, by definition, are unique (all URL's are URI's but not vice versa) therefore, acceptable as namespace names. Generally, one simply uses a URL for the namespace name, however, this URL doesn't need to point to any actual document. Convention and general usefullness suggests placing the schema or DTD of said namespace at said URL is a good idea, and I concur.

nntp://news.cis.ohio-state.edu/comp.text.xml/<di***********@pc-news.cogsci.ed.ac.uk>

In article <11**********************@g44g2000cwa.googlegroups .com>,
<in****@gmail.com> wrote:
<library xmlns:book="book" xmlns:author="author">


Namespace names are supposed to be absolute URLs.

-- Richard

[comp.text.xml]
Oct 13 '05 #4

P: n/a
In article <di**********@news.cis.ohio-state.edu>,
Jason Karns <karns.17@n!o!s!p!a!m.osu.edu> wrote:
Actually, namespaces are designated as URI's not URL's.


I know that. I was trying not to obscure the point with subtleties.

-- Richard
Oct 13 '05 #5

P: n/a
The W3C XML Schema Primer [1] has a very good introduction to this
topic which I think you will find helpful.

ht

[1] http://www.w3.org/TR/xmlschema-0/
--
Henry S. Thompson, HCRC Language Technology Group, University of Edinburgh
Half-time member of W3C Team
2 Buccleuch Place, Edinburgh EH8 9LW, SCOTLAND -- (44) 131 650-4440
Fax: (44) 131 650-4587, e-mail: ht@inf.ed.ac.uk
URL: http://www.ltg.ed.ac.uk/~ht/
[mail really from me _always_ has this .sig -- mail without it is forged spam]
Oct 14 '05 #6

P: n/a
Chris wrote:
You are mis-using namespaces. Namespaces should only really be used
when you are addressing xml from different sources, say, from two
different departments, and want to keep their definitions distinct.


Thank you Chris. I solved the problem by not using namespaces on my
own created file :)

Actually, I gave up on XML Schema and started using RELAX NG, but
that's another topic... not that I know how to use namespaces on RELAX
NG either, but following your advice I am not even looking how to do
it, for now :)

Oct 20 '05 #7

This discussion thread is closed

Replies have been disabled for this discussion.