471,339 Members | 1,280 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 471,339 software developers and data experts.

xmlns

hi all,
I pretty new to xml, what does xmlns mean?
like in:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://purl.org/rss/1.0/"
xmlns:perljobs="http://jobs.perl.org/rss/"
xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:syn="http://purl.org/rss/1.0/modules/syndication/"
xmlns:admin="http://webns.net/mvcb/"

tia
--
http://www.kolumbus.fi/bob.smith
Aug 3 '05 #1
8 1820
Bob Smith wrote:
I pretty new to xml, what does xmlns mean?
like in:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://purl.org/rss/1.0/"
xmlns:perljobs="http://jobs.perl.org/rss/"
xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:syn="http://purl.org/rss/1.0/modules/syndication/"
xmlns:admin="http://webns.net/mvcb/"


It maps a namespace prefix to the corresponding namespace URI. See
<http://www.w3.org/TR/REC-xml-names/>
--
Johannes Koch
In te domine speravi; non confundar in aeternum.
(Te Deum, 4th cent.)
Aug 3 '05 #2
On Wed, 03 Aug 2005 19:23:37 +0200, Bob Smith <bo*******@marketweighton.com>
wrote:
hi all,
I pretty new to xml, what does xmlns mean?
like in:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://purl.org/rss/1.0/"
xmlns:perljobs="http://jobs.perl.org/rss/"
xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:syn="http://purl.org/rss/1.0/modules/syndication/"
xmlns:admin="http://webns.net/mvcb/"

tia


Each xmlns... attribute means that, for the RDF element and any elements it
contains, those are the prefixes used to qualify specific namespaces of
elements (and attributes if required).

xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
means that any element prefixed with rdf: (including the rdf:RDF element
belongs to the namespace http://www.w3.org/1999/02/22-rdf-syntax-ns#.

xmlns="http://purl.org/rss/1.0/"
means that any element with no prefix at all belongs to the
http://purl.org/rss/1.0/ namespace.
Aug 4 '05 #3
Steve Jorgensen wrote:
On Wed, 03 Aug 2005 19:23:37 +0200, Bob Smith
<bo*******@marketweighton.com> wrote:
hi all,
I pretty new to xml, what does xmlns mean?
like in:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://purl.org/rss/1.0/"
xmlns:perljobs="http://jobs.perl.org/rss/"
xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:syn="http://purl.org/rss/1.0/modules/syndication/"
xmlns:admin="http://webns.net/mvcb/"

tia


Each xmlns... attribute means that, for the RDF element and any elements
it contains, those are the prefixes used to qualify specific namespaces of
elements (and attributes if required).

xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
means that any element prefixed with rdf: (including the rdf:RDF element
belongs to the namespace http://www.w3.org/1999/02/22-rdf-syntax-ns#.

xmlns="http://purl.org/rss/1.0/"
means that any element with no prefix at all belongs to the
http://purl.org/rss/1.0/ namespace.

right, so what is the idea on the client side?
okey so we have namespaces, but what are they good for? Does the namespace
declare data types or only names?
--
http://www.kolumbus.fi/bob.smith
Aug 4 '05 #4
Bob Smith wrote:
hi all,
I pretty new to xml, what does xmlns mean?
like in:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://purl.org/rss/1.0/"
xmlns:perljobs="http://jobs.perl.org/rss/"
xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:syn="http://purl.org/rss/1.0/modules/syndication/"
xmlns:admin="http://webns.net/mvcb/"

tia


xmlns is used to bound prefixes to namespace URIs

it means that the *universal name* of the <rdf:RDF> element is
[ http://www.w3.org/1999/02/22-rdf-syntax-ns# , RDF ]
this notation [ URI , local-name ] denotes that the *universal name* is
in 2 parts (in most XML papers, it is displayed with another notation :
{http://www.w3.org/1999/02/22-rdf-syntax-ns#}RDF but I prefer the
former) ; notice that these notations are only for explanation and NEVER
appear in real XML documents

such names are *universal names* because URIs are unique ; notice that
an URI is not necessary an URL :
xmlns:foo="urn:guid:88d969c9-f192-11d4-a65f-0040963251e6"
xmlns:book="urn:isbn:2-84177-230-6"
xmlns:office="urn:schemas-microsoft-com:office:office"
namespace URIs are just use to qualify XML names

the prefix is just an alias for the URI, but its mean is local to the
xmlns declaration (that is to say, applies on its host element and its
descendents)
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<foo:RDF xmlns:foo="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
are the same ; the last form doesn't use a prefix, it uses the default
namespace

attributes are told "owned" by their host elements, so they don't need
additional information ; that's why the default namespace doesn't apply
to attributes ; sometimes, it is necessary to "add" to an element
special purpose attributes, that are often called "foreign attributes" :
<image xmlns:xlink="http://www.w3.org/1999/xlink">
xlink:type="simple"
xlink:actuate="onLoad"
xlink:show="embed"
xlink:href="http://www.acme.com/foo/bar.jpg"
width="123"
height="234" />

some application may recognize a particular namespace URI :
-for example, an application might expose an hyperlink in conformance to
the XLink specification if it encounters attributes like those above
-an XSLT processor will do something special when it encounters
<xsl:template> not because the prefix is "xsl" but because this element
is in the scope of the xmlns declaration :
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-a graphic application that recognize SVG could draw a rectangle :
<svg:svg xmlns:svg "http://www.w3.org/2000/svg"
width="18cm" height="6cm" viewBox="0 0 200 120">
<svg:rect x="1" y="1" width="198" height="118"
fill="#888888" stroke="blue" />
</svg:svg>

if you have to design XML datas, I encourage you to use your own
namespace URI with your elements : thus, your application will be able
to process these elements without ambiguity ; XML namespaces have been
design for that purpose : distinguish elements that could have the same
local name, and grouping a set of names "related to the same feature"

--
Cordialement,

///
(. .)
-----ooO--(_)--Ooo-----
| Philippe Poulard |
-----------------------
Aug 4 '05 #5
"Bob Smith" <bo*******@marketweighton.com> wrote in message
news:dc**********@phys-news1.kolumbus.fi...
Steve Jorgensen wrote:
On Wed, 03 Aug 2005 19:23:37 +0200, Bob Smith
<bo*******@marketweighton.com> wrote:
hi all,
I pretty new to xml, what does xmlns mean?
like in:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://purl.org/rss/1.0/"
xmlns:perljobs="http://jobs.perl.org/rss/"
xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:syn="http://purl.org/rss/1.0/modules/syndication/"
xmlns:admin="http://webns.net/mvcb/"

tia
Each xmlns... attribute means that, for the RDF element and any elements
it contains, those are the prefixes used to qualify specific namespaces of elements (and attributes if required).

xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
means that any element prefixed with rdf: (including the rdf:RDF element
belongs to the namespace http://www.w3.org/1999/02/22-rdf-syntax-ns#.

xmlns="http://purl.org/rss/1.0/"
means that any element with no prefix at all belongs to the
http://purl.org/rss/1.0/ namespace.

right, so what is the idea on the client side?
okey so we have namespaces, but what are they good for? Does the namespace
declare data types or only names?


Namespaces are used for creating globally unique names, using URIs in much
the same way as package names are used in Java. When a URI you control is
combined with a name, that combination is guaranteed to be unique. This
mechanism makes it possible to identify names from different XML
vocabularies, and to mix different vocabularies without conflicts between
names.

// Magnus
Aug 4 '05 #6
What a namespace really gives you is composition. You're using RSS
1.0, which is a powerful syndication protocol made from lots of little
sub-components plugged together by namespaces.

RSS 1.0 itself is small and easily learned. It knows about
"syndication", but no more.
Dublin Core knows about cataloguing metadata, so it understands
"Authors" and "Rights". By adding it to RSS 1.0, you can gain
properties that can represent a much deeper description of your content
than RSS' own trivial model, but you don't need to extend RSS itself.

In contrast there is RSS 2.0. This takes the opposite approach and
ignores namespacing. So every time it's realised that there's a useful
feature missing, the RSS 2.0 autocrat inventor adds yet another random
property to it. The 2.0 protocol is an ugly rag-bag of random rubbish
tacked onto it. It's big and bloated for most purposes, but it still
isn't as simply and elegantly extensible as the much simpler RSS 1.0.

In one sense there is nothing that RSS1.0 and namespaces can give you
that a well though-out RSS 2.1 could give you without namespaces. But
this hypothetical 2.1 version would be bigger, it would be more
specific to one subset of users' requirements, and it would not offer
the huge re-use potential that a smaller namespace like DC does.

On your next project you might be cataloguing a library of video clips.
You bump into Dublin Core again and you gain the advantage of _already_
knowing this namespace and how to use it - an advantage for you. Then
you add a syndication feed to this library and you choose to do it in
RSS 1.0 with DC. Now there's a synergy effect too - the project is
simpler and better because it's using the same representation
throughout. This has advantages for the finished project, as well as
for you.

RDF is also a useful part of this. RDF doesn't have an "application
area" like syndication, it's much more general. It isn't even a
"metadata protocol", as is sometimes claimed. All it adds is a
graph-like model of obejcts and properties, so that any application
understanding RDF but not (for instance) DC can still extract a useful
data model that "knows" there are entities called "Item", "Author" etc.
and that "phoneNumber" is a _property_ of an _entity_ called "Author"
(XML alone can't do this).

Aug 4 '05 #7
Philippe Poulard wrote:
Bob Smith wrote:
hi all,
I pretty new to xml, what does xmlns mean?
like in:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://purl.org/rss/1.0/"
xmlns:perljobs="http://jobs.perl.org/rss/"
xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:syn="http://purl.org/rss/1.0/modules/syndication/"
xmlns:admin="http://webns.net/mvcb/"

tia


xmlns is used to bound prefixes to namespace URIs

it means that the *universal name* of the <rdf:RDF> element is
[ http://www.w3.org/1999/02/22-rdf-syntax-ns# , RDF ]
this notation [ URI , local-name ] denotes that the *universal name* is
in 2 parts (in most XML papers, it is displayed with another notation :
{http://www.w3.org/1999/02/22-rdf-syntax-ns#}RDF but I prefer the
former) ; notice that these notations are only for explanation and NEVER
appear in real XML documents

such names are *universal names* because URIs are unique ; notice that
an URI is not necessary an URL :
xmlns:foo="urn:guid:88d969c9-f192-11d4-a65f-0040963251e6"
xmlns:book="urn:isbn:2-84177-230-6"
xmlns:office="urn:schemas-microsoft-com:office:office"
namespace URIs are just use to qualify XML names

the prefix is just an alias for the URI, but its mean is local to the
xmlns declaration (that is to say, applies on its host element and its
descendents)
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<foo:RDF xmlns:foo="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
are the same ; the last form doesn't use a prefix, it uses the default
namespace

attributes are told "owned" by their host elements, so they don't need
additional information ; that's why the default namespace doesn't apply
to attributes ; sometimes, it is necessary to "add" to an element
special purpose attributes, that are often called "foreign attributes" :
<image xmlns:xlink="http://www.w3.org/1999/xlink">
xlink:type="simple"
xlink:actuate="onLoad"
xlink:show="embed"
xlink:href="http://www.acme.com/foo/bar.jpg"
width="123"
height="234" />

some application may recognize a particular namespace URI :
-for example, an application might expose an hyperlink in conformance to
the XLink specification if it encounters attributes like those above
-an XSLT processor will do something special when it encounters
<xsl:template> not because the prefix is "xsl" but because this element
is in the scope of the xmlns declaration :
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-a graphic application that recognize SVG could draw a rectangle :
<svg:svg xmlns:svg "http://www.w3.org/2000/svg"
width="18cm" height="6cm" viewBox="0 0 200 120">
<svg:rect x="1" y="1" width="198" height="118"
fill="#888888" stroke="blue" />
</svg:svg>

if you have to design XML datas, I encourage you to use your own
namespace URI with your elements : thus, your application will be able
to process these elements without ambiguity ; XML namespaces have been
design for that purpose : distinguish elements that could have the same
local name, and grouping a set of names "related to the same feature"

T H A N K ... Y O U !!!!!!!!!!!!!
:-)
--
http://www.kolumbus.fi/bob.smith
Aug 4 '05 #8
di*****@codesmiths.com wrote:
What a namespace really gives you is composition. You're using RSS
1.0, which is a powerful syndication protocol made from lots of little
sub-components plugged together by namespaces.

RSS 1.0 itself is small and easily learned. It knows about
"syndication", but no more.
Dublin Core knows about cataloguing metadata, so it understands
"Authors" and "Rights". By adding it to RSS 1.0, you can gain
properties that can represent a much deeper description of your content
than RSS' own trivial model, but you don't need to extend RSS itself.

In contrast there is RSS 2.0. This takes the opposite approach and
ignores namespacing. So every time it's realised that there's a useful
feature missing, the RSS 2.0 autocrat inventor adds yet another random
property to it. The 2.0 protocol is an ugly rag-bag of random rubbish
tacked onto it. It's big and bloated for most purposes, but it still
isn't as simply and elegantly extensible as the much simpler RSS 1.0.

In one sense there is nothing that RSS1.0 and namespaces can give you
that a well though-out RSS 2.1 could give you without namespaces. But
this hypothetical 2.1 version would be bigger, it would be more
specific to one subset of users' requirements, and it would not offer
the huge re-use potential that a smaller namespace like DC does.

On your next project you might be cataloguing a library of video clips.
You bump into Dublin Core again and you gain the advantage of _already_
knowing this namespace and how to use it - an advantage for you. Then
you add a syndication feed to this library and you choose to do it in
RSS 1.0 with DC. Now there's a synergy effect too - the project is
simpler and better because it's using the same representation
throughout. This has advantages for the finished project, as well as
for you.

RDF is also a useful part of this. RDF doesn't have an "application
area" like syndication, it's much more general. It isn't even a
"metadata protocol", as is sometimes claimed. All it adds is a
graph-like model of obejcts and properties, so that any application
understanding RDF but not (for instance) DC can still extract a useful
data model that "knows" there are entities called "Item", "Author" etc.
and that "phoneNumber" is a _property_ of an _entity_ called "Author"
(XML alone can't do this).

THANKS A WHOLE BUNCH...:-)

--
http://www.kolumbus.fi/bob.smith
Aug 4 '05 #9

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

3 posts views Thread by Mike Dickens | last post: by
1 post views Thread by jorgen.wahlund | last post: by
reply views Thread by chris.stromberger | last post: by
3 posts views Thread by dhurwitz | last post: by

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.