Re: Duplicate attribute uses (Xerces bug?)

Hi,

On Mon, 2005-09-12 at 16:29 +0300, George Cristian Bina wrote:
> Hmm, I think you are right... According with the spec the {attribute 
> uses} will be
> 
> ***
> {attribute uses}	A union of sets of attribute uses as follows:
> 1 The set of attribute uses corresponding to the <attribute> [children], 
> if any.
> 2 The {attribute uses} of the attribute groups ·resolved· to by the 
> ·actual value·s of the ref [attribute] of the <attributeGroup> 
> [children], if any.
> 3 The {attribute uses} of the type definition ·resolved· to by the 
> ·actual value· of the base [attribute], unless the <restriction> 
> alternative is chosen, in which case some members of that type 
> definition's {attribute uses} may not be included, namely those whose 
> {attribute declaration}'s {name} and {target namespace} are the same as 
> one of the following:
> 3.1 The {name} and {target namespace} of the {attribute declaration} of 
> an attribute use in the set per clause 1 or clause 2 above;
> 3.2 what would have been the {name} and {target namespace} of the 
> {attribute declaration} of an attribute use in the set per clause 1 
> above but for the ·actual value· of the use [attribute] of the relevant 
> <attribute> among the [children] of <restriction> being prohibited.
> ***
> 
> a set consisting of one attribute use corresponding to
> 
> <xsd:attribute name="boo"/>
> 
> from the "type" complex type.
> 
> Now, the error reported by Xerces is wrong but do you see a benefit of 
> allowing this? IMO a duplicate attribute element should be an error.

Yes, you are right; I see no benefit, although I would tend to generate
a warning instead of an error.

I reported XSV output incorrectly. Stylus Studio gave
me a: "Success - no validation error or warning conditions found."
But this was related to the validation of the instance. The exact
XSV output reads:

<schemaError char="5" line="14" phase="instance"             
   resource="file:///p:/libxml2-lab/tests/2005-09-12/attr.xsd">
   attempt to redeclare attribute {None}:boo, ignored</schemaError>

I see no rule for this as well, since we have:

"Note: The only substantive function of the value prohibited for the use
attribute of an <attribute> is in establishing the correspondence
between a complex type defined by restriction and its XML
representation. It serves to prevent inheritance of an identically named
attribute use from the {base type definition}. Such an <attribute> does
not correspond to any component, and hence there is no interaction with
either explicit or inherited wildcards in the operation of Complex Type
Definition Validation Rules (§3.4.4) or Constraints on Complex Type
Definition Schema Components (§3.4.6)."
 
It talks about inheritance if using the XML representation, not about
prohibitions interfering with an attribute declaration in the same
type component.

At the component level, we still have the derivation-ok-restriction 2
[1] constraint to check if both declarations are OK for the restriction.

So is a prohibition meant to say: "don't inherit it from the base type
and don't allow it on the current type"?

Hmm, after trying the following with XSV:

<xsd:complexType name="type-2">
	<xsd:attribute name="boo" use="prohibited"/>
	<xsd:attribute name="boo" use="prohibited"/>
</xsd:complexType>

for which I get the same schema error:

"attempt to redeclare attribute {None}:boo, ignored"

... it feels like XSV does not even check if this is a prohibition
or not. So I cannot use XSV as a reference here.

[1] http://www.w3.org/TR/xmlschema-1/#derivation-ok-restriction

Regards,

Kasimier

Received on Monday, 12 September 2005 14:06:59 UTC