- From: Simon Cox <Simon.Cox@dem.csiro.au>
- Date: Tue, 20 Mar 2001 09:23:16 +0800
- To: "Henry S. Thompson" <ht@cogsci.ed.ac.uk>
- CC: xmlschema-dev@w3.org
"Henry S. Thompson" wrote:
>
> Simon Cox <Simon.Cox@dem.csiro.au> writes:
>
> > Is it possible to constrain the character content of a
> > mixed complex type to be one of the built-in simple types?
> >
> > e.g. if I have declared an anyType
> >
> > <xsd:complexType name="FooType" mixed="true"/>
> >
> > can I then derive a type with simple content type="xsd:double"
> > by restriction from this? How?
>
> <xs:complexType>
> <xs:simpleContent>
> <xs:restriction base="FooType">
> <xs:simpleType>
> <xs:restriction base="xs:double"/>
> </xs:simpleType>
> </xs:restriction>
> </xs:simpleContent>
> </xs:complexType>
>
> Martin Gudgin was right when he said you can't get a _simple_ type
> definition by restricting a complex type definition. Jeff Rafter was
> on the right track in suggesting that what was wanted was a complex
> type definition with simple content.
>
> Note that _only_ <xs:restriction> within <xs:simpleContent> is allowed
> to have both a base attribute and explicit content, as above.
I tried what you suggest - see schema fragment below,
with XMLSpy error message inserted inline.
Is this a bug in XMLSpy?
<xsd:complexType name="AbstractQuantityType" mixed="true"/>
<xsd:complexType name="CompactQuantityBaseType">
<xsd:annotation>
<xsd:documentation>Restricts AQT to double content</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:restriction base="qf:AbstractQuantityType">
<!-- XMLSpy complains at previous line:
"Schema error - undefined schema component 'base' encountered -
simpleContent cannot have a base that is a complexType with complexContent" -->
<xsd:simpleType>
<xsd:restriction base="xsd:double"/>
</xsd:simpleType>
</xsd:restriction>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="CompactQuantityType">
<xsd:annotation>
<xsd:documentation>Amount + units - compact form</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:extension base="qf:CompactQuantityBaseType">
<xsd:attribute ref="qf:uom" use="optional"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="ExplicitQuantityType">
<xsd:annotation>
<xsd:documentation>Amount + Units - explicit form - though I think we gotta empty AQT
first to force amount and uom to be the only content</xsd:documentation>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension base="AbstractQuantityType">
<xsd:sequence>
<xsd:element name="amount" type="xsd:double"/>
<xsd:choice minOccurs="0">
<xsd:element name="uomRef" type="xsd:uriReference"/>
<xsd:element name="uomDefinition" type="xsd:string"/>
</xsd:choice>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
--
Simon.Cox@dem.csiro.au CSIRO Exploration & Mining
T:08 9284 8443 F:08 9389 1906 C:0403 302 672 (Intl +61)
http://www.ned.dem.csiro.au/research/visualisation/
Received on Monday, 19 March 2001 20:23:24 UTC