<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=iso-8859-1" http-equiv=Content-Type>
<META content="MSHTML 5.00.3211.1700" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>I had a few problems with 
Element.addAttribute()&nbsp;in that it didn't update/replace old attributes, I 
looked at the latest source from the CVS snapshot and the problem was still 
there.&nbsp; I took a few minutes and poked around and here is what I came up 
with (I just tested for my simple case, but it seemed to work).&nbsp; I simply 
call removeAttribute() if the attribute already exists.&nbsp; Maybe someone will 
verify this, and if it works check it in.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Robert r. Sanders</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;/**<BR>&nbsp; * &lt;p&gt;<BR>&nbsp; * This 
adds an attribute to this element.&nbsp; Any existing attribute with<BR>&nbsp; * 
the same name and namespace URI is removed.<BR>&nbsp; * &lt;/p&gt;<BR>&nbsp; 
*<BR>&nbsp; * @param attribute &lt;code&gt;Attribute&lt;/code&gt; to 
add<BR>&nbsp; * @return this element modified<BR>&nbsp; */<BR>&nbsp;public 
Element addAttribute(Attribute attribute) {<BR>&nbsp;&nbsp;if 
(getAttribute(attribute.getName(), attribute.getNamespace()) != null) 
{<BR>&nbsp;&nbsp;&nbsp;if (! removeAttribute(attribute.getName(), 
attribute.getNamespace() ) ) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;throw new 
IllegalAddException(this, attribute, "Duplicate attributes are not allowed, 
unable to remove old 
Attribute.");<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;}</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;&nbsp;if (attribute.getParent() != null) 
{<BR>&nbsp;&nbsp;&nbsp;throw new IllegalAddException(this, 
attribute,<BR>&nbsp;&nbsp;&nbsp;&nbsp;"The attribute already has an existing 
parent \"" +<BR>&nbsp;&nbsp;&nbsp;&nbsp;attribute.getParent().getQualifiedName() 
+ "\"");<BR>&nbsp;&nbsp;}</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;&nbsp;// XXX Should verify attribute ns 
prefix doesn't collide with<BR>&nbsp;&nbsp;// another attribute prefix or this 
element's prefix</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>&nbsp;&nbsp;if (attributes == null) 
{<BR>&nbsp;&nbsp;&nbsp;attributes = new 
LinkedList();<BR>&nbsp;&nbsp;}</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial 
size=2>&nbsp;&nbsp;attributes.add(attribute);<BR>&nbsp;&nbsp;attribute.setParent(this);<BR>&nbsp;&nbsp;return 
this;<BR>&nbsp;}</FONT></DIV></BODY></HTML>