473,405 Members | 2,187 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

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

Amara: Where's my attribute?

Hi,

I'm having a problem with the Amara toolkit. Try this:
from amara import binderytools
raw = '<pq:test xmlns="http://example.com/namespace" xmlns:pq="http://pq.com/ns2"/>'
rwd = binderytools.bind_string(raw)
print rwd.xml() <?xml version="1.0" encoding="UTF-8"?>
<pq:test xmlns:pq="http://pq.com/ns2"/>

What happened to the xmlns attribute? Does anyone know a solution to
this? The only workaround I found is to:
rwd.test.xml_set_attribute(u'xmlns', u'http://example.com/namespace') u'xmlns' print rwd.xml()

<?xml version="1.0" encoding="UTF-8"?>
<pq:test xmlns:pq="http://pq.com/ns2"
xmlns="http://example.com/namespace"/>

but it only helps if you know what to patch.

My setup:

Python 2.4.3
4Suite 1.0b3
Amara 1.0

I see that people have reported similar problems with other XML
toolkits, so I guess this is a general namespace ugliness.

Regards,

AdSR

Jun 29 '06 #1
5 1518
"AdSR" wrote:
I'm having a problem with the Amara toolkit. Try this:
from amara import binderytools
raw = '<pq:test xmlns="http://example.com/namespace" xmlns:pq="http://pq.com/ns2"/>'
rwd = binderytools.bind_string(raw)
print rwd.xml()
<?xml version="1.0" encoding="UTF-8"?>
<pq:test xmlns:pq="http://pq.com/ns2"/>

What happened to the xmlns attribute? Does anyone know a solution to
this?


the documents are 100% identical in XML infoset terms, so what's the problem here ?
I see that people have reported similar problems with other XML toolkits, so I guess this is a
general namespace ugliness.


lack of namespace understanding, more likely.

</F>

Jun 29 '06 #2
Fredrik Lundh wrote:
[cut]
the documents are 100% identical in XML infoset terms, so what's the problem here ?


Looks like the problem is somewere else, after all: Some software
relies on these "unused" xmlns attributes, most notably XML Schema
tools. Which is unfortunate, because xmlns attributes indeed have the
full right to receive special treatment.
I see that people have reported similar problems with other XML toolkits, so I guess this is a
general namespace ugliness.


lack of namespace understanding, more likely.


May I suggest a saying: Never attribute to lack of knowledge what you
can attribute to confusing signals :)

Yours truly,
AdSR

Jun 29 '06 #3
AdSR wrote:
Hi,

I'm having a problem with the Amara toolkit. Try this:
>from amara import binderytools
raw = '<pq:test xmlns="http://example.com/namespace" xmlns:pq="http://pq.com/ns2"/>'
rwd = binderytools.bind_string(raw)
print rwd.xml()
<?xml version="1.0" encoding="UTF-8"?>
<pq:test xmlns:pq="http://pq.com/ns2"/>

What happened to the xmlns attribute? Does anyone know a solution to
this? The only workaround I found is to:
>rwd.test.xml_set_attribute(u'xmlns', u'http://example.com/namespace')
u'xmlns'
>print rwd.xml()
<?xml version="1.0" encoding="UTF-8"?>
<pq:test xmlns:pq="http://pq.com/ns2"
xmlns="http://example.com/namespace"/>

but it only helps if you know what to patch.

My setup:

Python 2.4.3
4Suite 1.0b3
Amara 1.0

I see that people have reported similar problems with other XML
toolkits, so I guess this is a general namespace ugliness.
What is the actual problem you're trying to solve? If you just want to
force a namespace declaration in output (this is sually to support
QNames in content) the most well-known XML hack is to create a dummy
attribute with the needed prefix and namespace. But this does not work
when you're trying to force a default namespace declaration. Then
again, you generally can't use QNames in content with a default
namespace declaration. So my guess is that you somehow got way off the
rails in your problem-solving, and you'll need to provide mre
background if you want help.

BTW, I recommend upgrading to Amara 1.1.7. That branch will soon be
1.2, and I consider it more mature than 1.0 at this point. The API's
also easier:
>>import amara
rwd = amara.parse('<pq:test xmlns="http://example.com/namespace" xmlns:pq="http://pq.com/ns2"/>')

--
Uche Ogbuji Fourthought, Inc.
http://uche.ogbuji.net http://fourthought.com
http://copia.ogbuji.net http://4Suite.org
Articles: http://uche.ogbuji.net/tech/publications/

Jul 3 '06 #4
uc*********@gmail.com wrote:
What is the actual problem you're trying to solve? If you just want to
force a namespace declaration in output (this is sually to support
QNames in content) the most well-known XML hack is to create a dummy
attribute with the needed prefix and namespace. But this does not work
when you're trying to force a default namespace declaration. Then
again, you generally can't use QNames in content with a default
namespace declaration. So my guess is that you somehow got way off the
rails in your problem-solving, and you'll need to provide mre
background if you want help.
I wanted to remove documentation elements from some XML Schema files.
The problem showed when I tried to use the stripped schemas, because
the namespace declaration for user-defined types was missing. Of
course, since these types are named and referred to in attribute
*values*, Amara had no way to know that the namespace declaration was
still needed (didn't matter if default or non-default). This is more a
problem of how XML Schema is defined against XML namespace rules, since
XML Schena uses namespaces in a context of which XML parsers aren't
normally aware.
BTW, I recommend upgrading to Amara 1.1.7. That branch will soon be
1.2, and I consider it more mature than 1.0 at this point. The API's
also easier:
I know, especially the insert-before/after feature :) But I ran into a
problem that I describe below and you advertised 1.0 as "stable
version", so I switched immediately.

The problem can be reproduced like this:
>>import amara
amara.parse('http://www.w3.org/2001/XMLSchema.xsd')
START DTD xs:schema -//W3C//DTD XMLSCHEMA 200102//EN XMLSchema.dtd
http://www.w3.org/2001/datatypes.dtd:99:23: Attribute 'id' already
declared
http://www.w3.org/2001/datatypes.dtd:122:23: Attribute 'id' already
declared
http://www.w3.org/2001/datatypes.dtd:130:27: Attribute 'id' already
declared
....some 40 more lines like this and then Python crashes (Windows shows
the bug-reporting dialog)

Thanks for your interest,

AdSR

Jul 4 '06 #5
AdSR wrote:
uc*********@gmail.com wrote:
What is the actual problem you're trying to solve? If you just want to
force a namespace declaration in output (this is sually to support
QNames in content) the most well-known XML hack is to create a dummy
attribute with the needed prefix and namespace. But this does not work
when you're trying to force a default namespace declaration. Then
again, you generally can't use QNames in content with a default
namespace declaration. So my guess is that you somehow got way off the
rails in your problem-solving, and you'll need to provide mre
background if you want help.

I wanted to remove documentation elements from some XML Schema files.
The problem showed when I tried to use the stripped schemas, because
the namespace declaration for user-defined types was missing. Of
course, since these types are named and referred to in attribute
*values*, Amara had no way to know that the namespace declaration was
still needed (didn't matter if default or non-default). This is more a
problem of how XML Schema is defined against XML namespace rules, since
XML Schena uses namespaces in a context of which XML parsers aren't
normally aware.
Yeah. Just so you know. This is one of those things about XML that
make sane people want to dye their eyeballs red.

Unfortunately there isn't much recourse but to switch to namespace
qualified form for your QNames and adding dummy attributes so the
namespace is recognized. Let me know if you need an example.

BTW, I recommend upgrading to Amara 1.1.7. That branch will soon be
1.2, and I consider it more mature than 1.0 at this point. The API's
also easier:

I know, especially the insert-before/after feature :) But I ran into a
problem that I describe below and you advertised 1.0 as "stable
version", so I switched immediately.

The problem can be reproduced like this:
>import amara
amara.parse('http://www.w3.org/2001/XMLSchema.xsd')
START DTD xs:schema -//W3C//DTD XMLSCHEMA 200102//EN XMLSchema.dtd
http://www.w3.org/2001/datatypes.dtd:99:23: Attribute 'id' already
declared
http://www.w3.org/2001/datatypes.dtd:122:23: Attribute 'id' already
declared
http://www.w3.org/2001/datatypes.dtd:130:27: Attribute 'id' already
declared
...some 40 more lines like this and then Python crashes (Windows shows
the bug-reporting dialog)

I don't get a crash on my system (Ubuntu), but I do get a legitimate
error message because that DTD is broken. The W3C seems to like
disseminating broken DTDs. Just yesterday I was helping someone around
the infamous broken XHTML 1.1 DTDs.

I do want to know why you're gettign a crash rather than just the error
message. What version of Python is that? Any chance you can try with
current CVS Amara (you can use easy_install)? This part of the
discussion should perhaps move to the 4Suite mailing list. I only
check this NG once a week.

--
Uche Ogbuji Fourthought, Inc.
http://uche.ogbuji.net http://fourthought.com
http://copia.ogbuji.net http://4Suite.org
Articles: http://uche.ogbuji.net/tech/publications/

Jul 7 '06 #6

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

5
by: Ralf Wahner | last post by:
Dear Masters of XML As I'm new to XML Schema I dare to ask a possibly recurring question: Given an element <elem> with two attributes @a and @b. The attributes are bound by the condition, that...
3
by: Tony Johansson | last post by:
Hello!! Assume we have one base class called Vehicle and two derived classes called Car and Bus. I would be able to call method getName on an object of class Car or Bus and return back the name...
0
by: Jay | last post by:
Ok, i had this posted on the other thread "XML w/ Python" but it kinda got off topic from the title to ill start a new thread. My question is this... the import of amara works in ActivePython......
3
by: Doru-Catalin Togea | last post by:
Hi! I have ActiveState Python 2.4.1 on Win XP Pro, with Amara 1.1.6. I have a script which works fine. I am trying to run the same script on a Solaris machine, with Python 2.4.2 and Amara...
0
by: Doru-Catalin Togea | last post by:
Hi! I am using Amara 1.1.6 in a project. I made an executable with py2exe but when I try to run it I am referred to the log file, which states: Traceback (most recent call last): File...
2
by: mirandacascade | last post by:
O/S WinXP Home Vsn of Python: 2.4 Wish to install Amara. Using amara-allinone-1.0.win32-py2.4.exe (2965KB) Forder structure before installation: c: python24
0
by: Rustom Mody | last post by:
I tried to install amara according to the recommendations on this list. There were evidently compilation errors. The results are below Also the quick reference gives 404 not found errors ...
2
by: ismailc | last post by:
Hi, I would like to do the following. I have an href where onclick the focus is on the href: I got it to change focus to another object but i don't really want that. It must be as if the...
0
by: Enbe | last post by:
I am currently trying to output the results in Amara. Her is an example count = 0 for root, dir, files in os.walk(path): for s in files: count += 1 print s this will only...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...

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.