[
Lists Home |
Date Index |
Thread Index
]
- From: Martin Gudgin <marting@develop.com>
- To: Martin Gudgin <marting@develop.com>, ramesh@eNode.com, xml-dev@xml.org
- Date: Sun, 01 Oct 2000 22:26:20 +0100
After further study and converse with other WG members I must retract my
earlier assertion about the example in the XML Schema Part 0 - Primer[1]
The example in the Primer ( shown below ) is correct. An explanation of why
seems to be in order...
<xsd:element name="internationalPrice">
<xsd:complexType>
<xsd:complexContent>
<xsd:restriction base="xsd:anyType">
<xsd:attribute name="currency" type="xsd:string"/>
<xsd:attribute name="value" type="xsd:decimal"/>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
It might seem strange to add attributes during a restriction but really it's
no different from the element case.
e.g.
<complexType name='foo'>
<element name='bar' type='string' />
<element name='baz' type='string' />
</complexType>
is implicitly a restriction or the ur-type ( xsd:anyType is implicitly the
base ). What is being restricted is the <xsd:any> that appears in the
ur-type. We're saying it's no longer the case the any element can appear but
rather that it must be a bar element followed by a baz element.
The ur-type also contains an <xsd:anyAttribute> so the similar attribute
case would be;
<complexType name='foo'>
<attribute name='bar' type='string' />
<attribute name='baz' type='string' />
</complexType>
Here we are restricting the valid attributes from any attributes to a bar
attribute and a baz attribute.
The primer example uses this latter approach and hence is a valid type
description.
I have confirmed that the ur-type cannot be extended.
Sorry for misinformation in my previous post ( although the stuff about
mixed content still stands )
Regards
Martin Gudgin
DevelopMentor
[1] http://www.w3.org/TR/xmlschema-0
----- Original Message -----
From: "Martin Gudgin" <marting@develop.com>
To: <ramesh@eNode.com>; <xml-dev@xml.org>
Sent: Sunday, October 01, 2000 7:43 PM
Subject: Re: Empty Complex Type; Mixed Content Type
> I believe that this is an error and have mailed the editor of the primer
> suggesting the following modification
>
> <xsd:element name="internationalPrice">
> <xsd:complexType>
> <xsd:complexContent>
> <xsd:restriction>
> <xsd:sequence/>
> </xsd:restriction>
> </xsd:complexContent>
> </xsd:complexType>
> </xsd:element>
>
> Which provides an empty element with no attributes. Because of the use of
an
> anonymous type adding attributes is in fact impossible in this case, a
named
> type should probably be used instead.
>
> I don't *think* extension would actually be allowed as I believe it is
> impossible to extend the urType ( anyType ). However, I am checking this
and
> will confirm later.
>
> With respect to mixed content the 'mixed' attribute was chosen over a
> mixedContent element to allow construction of types like the following
>
> <complexType name='paragraph' mixed='true'>
> <choice minOccurs='0' maxOccurs='1' >
> <element name='b' type='string' />
> <element name='i' type='string' />
> </choice>
> </complexType>
>
> We didn't want people who just wanted to restrict the urType ( anyType )
to
> have to go to the full blown content model for complexType just to get
mixed
> content.
>
> Hope this helps,
>
> Martin Gudgin
>
> ----- Original Message -----
> From: <ramesh@eNode.com>
> To: <xml-dev@xml.org>
> Sent: Saturday, September 30, 2000 12:30 AM
> Subject: Empty Complex Type; Mixed Content Type
>
>
> > Section 2.5.3 in the XML Schema Part 0: Primer describes how to define
an
> > empty complex type.
> >
> > The example uses restriction while adding a couple attributes to the
type.
> > Is that a typo? I expected to use extension in this case.
> >
> > I also found <xsd:complexType mixed="true"> a little jarring in the
> example
> > in section 2.5.2, because I was expecting <xsd:mixedContent> for
> consistency
> > with <xsd:simpleContent> and <xsd:complexContent>, but this may already
> have
> > been covered in earlier debates. If that's the case, please disregard
this
> > comment.
> >
> > Thanks for clarifying.
|