W3C home > Mailing lists > Public > xmlschema-dev@w3.org > December 2001

Re: Redeclaring attribute in derived type

From: Stanley Guan <Stanley.Guan@oracle.com>
Date: Fri, 21 Dec 2001 14:16:04 -0800
Message-ID: <3C23B4A4.D1DE2B8C@oracle.com>
To: Jeni Tennison <jeni@jenitennison.com>
CC: Jesse McCarthy <mccarthy36@earthlink.net>, xmlschema-dev@w3.org

Jeni Tennison wrote:

> Hi Jesse,
> >>By the way, this schema isn't valid because you can't specify a
> >>fixed or default value on an attribute whose type is or is derived
> >>from xs:ID (from Schema Component Constraint: Attribute Declaration
> >>Properties Correct, clause 3). I kept it like that simply because
> >>that was how you had it in your example.
> >
> > Thanks, I was not aware of that (and XSV didn't mention it). I could
> > achieve the desired effect using an enumeration with a single value
> > or a pattern consisting of the literal string, right?
> I don't see anything stopping you from doing that - it would have the
> same effect as a fixed value constraint, in terms of validation,
> though it wouldn't report the same PSVI.

From performance point of view, I would avoid using pattern which is
the slowest of all three approaches!

> I think the reason that ID attributes aren't permitted value
> constraints is that it would easily lead to two elements having the
> same ID, which is of course illegal in XML. But I can see that there
> might be uses for it - if you wanted to make sure that you only ever
> had one element of that particular type in the document, for example.
> >>If you want to both *extend* a type (adding to the content model)
> >>and *restrict* a type (limiting attribute values), then you need to
> >>do it in two steps - one a restriction and one an extension. You can
> >>do it either way round, but since restrictions require you to
> >>specify the full content model, it's easiest to do it first (on the
> >>shorter content model):
> >
> > Why do I have to do it in two steps / can I do it at all?
> When you ask "Why?", what kind of response are you after? Do you want
> to have the constraints from the Rec quoted so that you can see why I
> say you have to use two steps, or do you want to know the reasons
> behind the way XML Schema is designed?
> > But doesn't clause 4 -- "4 Two distinct attribute declarations in
> > the {attribute uses} must not have identical {name}s and {target
> > namespace}s." -- of 3.4.6 Constraints on Complex Type Definition
> > Schema Components preclude doing that (even on the second of the two
> > steps you suggest)?
> When you restrict, the {attribute uses} of the derived type contains
> all the {attribute uses} from the definition of the derived type, plus
> any of the {attribute uses} from the definition of the base type that
> have not been overridden by {attribute uses} from the derived type. So
> you don't end up with duplicate attribute declarations because the
> attribute declaration of the id attribute in the base type is not
> added to the {attribute uses} of the derived type.
> Look at the way that the {attribute uses} property is defined in the
> XML Schema Rec, in Section 3.4.2
> http://www.w3.org/TR/xmlschema-1/#declare-type.
> Cheers,
> Jeni
> ---
> Jeni Tennison
> http://www.jenitennison.com/
Received on Friday, 21 December 2001 17:16:14 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 23:14:56 UTC