[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]
Subject: Re: Issue: duplicate attributes (duplicateAttributes)
> I am totally confused. If more than one <attribute ...> element
> within a single content model is satsified by an attribute, are ALL of
> them consumed? Or, is only ONE of them consumed?
One, just as with elements.
> As an example, consider:
>
> <define name="common.atts">
> <optional>
> <attribute name="id">
> <data type="xsd:ID"/>
> </attribute>
> <attribute name="bar">
> <data type="xsd:short"/>
> </attribute>
> </optional>
> </define>
That's an untypical model. Usually, you would have each attribute optional
independently. Your model requires both or neither bar and id. Typically
you would have
<define name="common.atts">
<optional>
<attribute name="id">
<data type="xsd:ID"/>
</attribute>
</optional>
<optional>
<attribute name="bar">
<data type="xsd:short"/>
</attribute>
</optional>
</define>
> Here I assume that you consume ALL attribute elements that
> match id="f".
That's not correct. Is this not clear from the formal semantics?
> I might be wrong. If you consume ONE <attribute ....> element,
> you first obtain
>
> <group>
> <optional>
> <attribute name="id">
> <data type="xsd:ID"/>
> </attribute>
> <attribute name="bar">
> <data type="xsd:short"/>
> </attribute>
> </optional>
> <attribute name="bar">
> <data type="xsd:boolean"/>
> </attribute>
> </group>
Before you consume anything you would have:
<group>
<optional>
<attribute name="id">
<data type="xsd:ID"/>
</attribute>
</optional>
<optional>
<attribute name="bar">
<data type="xsd:short"/>
</attribute>
</optional>
<attribute name="id">
<data type="xsd:boolean"/>
</attribute>
<attribute name="bar">
<data type="xsd:boolean"/>
</attribute>
</group>
With an "id" attribute you have two choices: you can consume the optional
"id" attribute or the required "id" attribute. Consuming the optional "id"
attribute won't yield a match for the complete element because the required
"id" attribute will remain unmatched. However, consuming the required "id"
attribute will.
James
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]
Powered by eList eXpress LLC