Help | Site Map
Connecting Tech Pros Worldwide
 
 
LinkBack Thread Tools
  #1  
Old February 24th, 2006, 01:35 PM
Nicolas
Guest
 
Posts: n/a
Default Attribute with default value not immediately replaced... !?

Hi everybody...

In Xerces 2.7.0 it is explicitly stated that, no matter how one removes
an attribute
(attList->removeNamedItem, attList->removeNamedItemNS,
domElement->removeAttributeNode, domElement->removeAttribute,
domElement->removeAttributeNS), if that attribute has a default value
it is immediately replaced.
However I cannot obtain that behaviour...

Check out the following schema and document:

SCHEMA
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schema1"
targetNamespace="http://schema1"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xsd:element name="subelement" type="subelementType"/>
<xsd:element name="rootelement">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element ref="subelement"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:attribute name="myat" type="xsd:string" default="123"/>
<xsd:complexType name="subelementType">
<xsd:attribute ref="myat"/>
</xsd:complexType>
</xsd:schema>

DOCUMENT
<?xml version="1.0" encoding="UTF-8"?>
<rootelement xmlns="http://schema1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schema1 schema.xsd">
<subelement/>
</rootelement>

I load the document to a DOM like this:

DOMParser->setDoNamespaces(true);
DOMParser->setDoSchema(true);
DOMParser->setValidationSchemaFullChecking(true);
DOMParser->parse(FileName);

In the DOM constructed, as expected, there is a "myat" attribute for
element "subelement"
having the value of "123". As the latter was declared as a global
attribute in the schema,
it is namespace-qualified (getNamespaceURI() GIVES "http://schema1")
even though
schema has attributeFormDefault="unqualified" (correct me if I'm
wrong...).

So far so good.

Now I'm trying to remove that attribute. No matter which of the above
methods I choose,
I cannot obtain the immediate replacement of this attribute, although
it has a default value.

removeNamedItem causes the creation of a "myat" element, but with no
namespace. All
other methods just remove the attribute and no replacement occurs.

What is going on? Am I missing something?...

Any help would be GREATLY appreciated...

Thanks in advance.

Nicolas

  #2  
Old February 24th, 2006, 02:55 PM
Joseph Kesselman
Guest
 
Posts: n/a
Default Re: Attribute with default value not immediately replaced... !?

Traditionally, default-attribute reinstantiation only worked for
defaults specified in DTDs, not in schemas. As of DOM Level 3, that
*may* (not must) be supported for schemas too. I'd suggest talking to
the folks who wrote your DOM implementation -- the Xerces mailing list
at Apache -- to ask whether that's supported and whether there's a
switch you have to set to enable it.

--
Joe Kesselman / Beware the fury of a patient man. -- John Dryden
  #3  
Old February 24th, 2006, 02:55 PM
Nicolas
Guest
 
Posts: n/a
Default Re: Attribute with default value not immediately replaced... !?

Ok Joseph, you' re clear....

Thanks!

Nicolas

 

Bookmarks


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are Off
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

What is Bytes?

We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights. Get the best answers to your questions from over network members.
Post your question now . . .
It's fast and it's free

Popular Articles