From: Adam Tauno Williams on
Say I have an XML document that begins with:

<?xml version="1.0" encoding="utf-8"?>
<dsml:dsml xmlns:dsml="http://www.dsml.org/DSML">
....

How can one access the namespaces define in this node? I've done a fair
amount of XML in Python, but haven't been able to uncover the call to
enumerate the namespaces.

Primarily I am using etree from lxml.
--
Adam Tauno Williams <awilliam(a)whitemice.org> LPIC-1, Novell CLA
<http://www.whitemiceconsulting.com>
OpenGroupware, Cyrus IMAPd, Postfix, OpenLDAP, Samba

From: Stefan Behnel on
Adam Tauno Williams, 15.05.2010 20:37:
> Say I have an XML document that begins with:
>
> <?xml version="1.0" encoding="utf-8"?>
> <dsml:dsml xmlns:dsml="http://www.dsml.org/DSML">
> ...
>
> How can one access the namespaces define in this node? I've done a fair
> amount of XML in Python, but haven't been able to uncover the call to
> enumerate the namespaces.
>
> Primarily I am using etree from lxml.

What do you need the namespaces for?

Stefan

From: Adam Tauno Williams on
On Sat, 2010-05-15 at 22:29 +0200, Stefan Behnel wrote:
> Adam Tauno Williams, 15.05.2010 20:37:
> > Say I have an XML document that begins with:
> > <?xml version="1.0" encoding="utf-8"?>
> > <dsml:dsml xmlns:dsml="http://www.dsml.org/DSML">
> > How can one access the namespaces define in this node? I've done a fair
> > amount of XML in Python, but haven't been able to uncover the call to
> > enumerate the namespaces.
> > Primarily I am using etree from lxml.
> What do you need the namespaces for?

One needs to know the defined namespace in order to perform xpath
operations.

From: Stefan Behnel on
Adam Tauno Williams, 15.05.2010 22:40:
> On Sat, 2010-05-15 at 22:29 +0200, Stefan Behnel wrote:
>> Adam Tauno Williams, 15.05.2010 20:37:
>>> Say I have an XML document that begins with:
>>> <?xml version="1.0" encoding="utf-8"?>
>>> <dsml:dsml xmlns:dsml="http://www.dsml.org/DSML">
>>> How can one access the namespaces define in this node? I've done a fair
>>> amount of XML in Python, but haven't been able to uncover the call to
>>> enumerate the namespaces.
>>> Primarily I am using etree from lxml.
>> What do you need the namespaces for?
>
> One needs to know the defined namespace in order to perform xpath
> operations.

Well, yes, but unless you already know the namespace (URI), you can't know
what the tag you find signifies in the first place.

Unless, obviously, you are confusing namespaces with namespace prefixes.
But you don't need to know the prefixes for XPath.

Does this help?

http://codespeak.net/lxml/xpathxslt.html#namespaces-and-prefixes

Stefan

From: Adam Tauno Williams on
On Sat, 2010-05-15 at 22:58 +0200, Stefan Behnel wrote:
> Adam Tauno Williams, 15.05.2010 22:40:
> > On Sat, 2010-05-15 at 22:29 +0200, Stefan Behnel wrote:
> >> Adam Tauno Williams, 15.05.2010 20:37:
> >>> Say I have an XML document that begins with:
> >>> <?xml version="1.0" encoding="utf-8"?>
> >>> <dsml:dsml xmlns:dsml="http://www.dsml.org/DSML">
> >>> How can one access the namespaces define in this node? I've done a fair
> >>> amount of XML in Python, but haven't been able to uncover the call to
> >>> enumerate the namespaces.
> >>> Primarily I am using etree from lxml.
> >> What do you need the namespaces for?
> > One needs to know the defined namespace in order to perform xpath
> > operations.
> Well, yes, but unless you already know the namespace (URI), you can't know
> what the tag you find signifies in the first place.
> Unless, obviously, you are confusing namespaces with namespace prefixes.
> But you don't need to know the prefixes for XPath.
> Does this help?
> http://codespeak.net/lxml/xpathxslt.html#namespaces-and-prefixes

I know that. I'm getting an XML document and an xpath and need to
execute it. But i have to tell xpath via namespaces= the prefixes &
namespaces; so I need to get that data out of the document.

"If your XPath expression uses namespace prefixes, you must define them
in a prefix mapping"
--
Adam Tauno Williams <awilliam(a)whitemice.org> LPIC-1, Novell CLA
<http://www.whitemiceconsulting.com>
OpenGroupware, Cyrus IMAPd, Postfix, OpenLDAP, Samba