469,920 Members | 2,261 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,920 developers. It's quick & easy.

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

Feb 24 '06 #1
2 1405
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
Feb 24 '06 #2
Ok Joseph, you' re clear....

Thanks!

Nicolas

Feb 24 '06 #3

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

2 posts views Thread by Gabriel Genellina | last post: by
4 posts views Thread by Lénaïc Huard | last post: by
2 posts views Thread by Keith Chadwick | last post: by
5 posts views Thread by AdSR | last post: by
5 posts views Thread by Oleg.Ogurok | last post: by
reply views Thread by Salome Sato | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.