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

Re: Redeclaring attribute in derived type

From: Jesse McCarthy <mccarthy36@earthlink.net>
Date: Thu, 20 Dec 2001 17:53:14 -0500
To: jeni@jenitennison.com, xmlschema-dev@w3.org
Message-ID: <MWMail.ntrmkhad@host.none>
Hi Jeni

>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? 

>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?

If I were just going to address the first question, I would say why can't I 
do this: 


<xsd:complexType name="BaseType">


    <xsd:element ref="JMM:someElementABC" />


  <xsd:attribute name="id" type="xsd:ID" />


<xsd:complexType name="DerivedType">


    <xsd:extension base="JMM:BaseType">


        <xsd:element ref="JMM:someElementXYZ" />




  <xsd:attribute name="id">


      <xsd:restriction base="xsd:ID">

        <xsd:pattern value="Derived" />






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)? 

--> Jesse
Received on Thursday, 20 December 2001 20:25:46 UTC

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