- From: George Cristian Bina <george@oxygenxml.com>
- Date: Mon, 29 Nov 2004 11:32:22 +0200
- To: Jack Lindsey <tuquenukem@hotmail.com>
- Cc: xmlschema-dev@w3.org
Hi Jack,
The error message you quote seems to refer to Schema Representation
Constraint: Complex Type Definition Representation OK 2.1.2
http://www.w3.org/TR/xmlschema-1/#cl-esc
but, your schema satisfies 2.1.1 so it should be OK:
2.1 The type definition ·resolved· to by the ·actual value· of the base
[attribute] must be *one* of the following:
2.1.1 a complex type definition whose {content type} is a simple type
definition;
2.1.2 only if the <restriction> alternative is also chosen, a complex
type definition whose {content type} is mixed and a particle which is
·emptiable·, as defined in Particle Emptiable (§3.9.6);
2.1.3 only if the <extension> alternative is also chosen, a simple type
definition.
The actual value of the base for ProductNameType is NameType whose
content type is NameBaseType which is a simple type definition:
<xs:complexType name="NameType">
<xs:simpleContent>
<xs:extension base="c:NameBaseType">
<xs:attribute ref="xml:lang" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="NameBaseType">
<xs:restriction base="xs:string">
<xs:maxLength value="255"/>
</xs:restriction>
</xs:simpleType>
The {content type} for NameType is found applying the following rule:
http://www.w3.org/TR/xmlschema-1/#declare-type
Complex Type Definition with simple content Schema Component
{content type} 4
(the type definition ·resolved· to by the ·actual value· of the base
[attribute] is a simple type definition and the <extension> alternative
is chosen), then that simple type definition.
Hope that helps,
George
---------------------------------------------------------------------
George Cristian Bina
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com
Jack Lindsey wrote:
>
> The latest version of some Austrian graphical IDE has suddenly started
> to object to my schema, while oXygen still thinks its OK. I thought
> this would be the place to get an authoritative call on the issue. The
> error says:
>
> "The Content Type of complexType 'c:ProductNameType' must not be 'empty'
> because the Content Type of complexType 'c:NameType is neither 'empty'
> nor is its 'minOccurs' value '0'."
>
> Is this valid or is it trying to tell me I can't derive a type by
> restriction just to get a new type name? I must explicitly add a
> further restriction? Or what?
>
> Here is a realistic simulation which validates in my version of said IDE:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xs:schema targetNamespace="http://space" xmlns:c="http://space"
> xmlns:xs="http://www.w3.org/2001/XMLSchema">
> <xs:import namespace="http://www.w3.org/XML/1998/namespace"
> schemaLocation="http://www.w3.org/2001/xml.xsd"/>
> <xs:element name="Product" type="c:ProductType" />
> <xs:complexType name="ProductType">
> <xs:sequence>
> <xs:element ref="c:ProductName" minOccurs="0"
> maxOccurs="unbounded"/>
> </xs:sequence>
> </xs:complexType>
> <xs:element name="ProductName" type="c:ProductNameType" />
> <xs:complexType name="ProductNameType">
> <xs:simpleContent>
> <xs:restriction base="c:NameType"/>
> </xs:simpleContent>
> </xs:complexType>
> <xs:complexType name="NameType">
> <xs:simpleContent>
> <xs:extension base="c:NameBaseType">
> <xs:attribute ref="xml:lang" use="required"/>
> </xs:extension>
> </xs:simpleContent>
> </xs:complexType>
> <xs:simpleType name="NameBaseType">
> <xs:restriction base="xs:string">
> <xs:maxLength value="255"/>
> </xs:restriction>
> </xs:simpleType>
> </xs:schema>
>
>
> You may be wondering why the 3-step type derivation?
>
> The first objective was to create a set of standard datatypes that would
> be consistently used across the whole model, e.g. a NameType of 255
> characters, a restriction of xs:string.
>
> The second was to permit the identification of the language used for
> elements containing translatable text. This meant the addition of the
> xml:lang attribute, an extension. However xsd does not permit both
> extension and restriction in a single step, hence the creation of
> BaseNameType, which in this case is an intermediate byproduct with no
> subsequent function, except to confuse those who follow. Any chance of
> a syntax change to avoid this in future releases?
>
> The third objective was to ensure an audit trail back to the original
> element, e.g. by giving ProductName a type of ProductNameType which
> vocabulary extenders could use for derivation by restriction to
> constrain its original facets, such as length or specific enumerations.
>
> However, we are seeing now how such restrictions can severely dilute the
> benefits of a using xsd for a standard xml vocabulary. As a result, we
> are investigating complementing xsd with Schematron as an alternative
> approach.
>
> I believe it was Jeni, some months ago, who mentioned that a debate on
> validation strategies was going on in a related forum? Could someone
> point me in the right direction, or other good directions, please?
>
> Cheers Jack
>
> _________________________________________________________________
> Powerful Parental Controls Let your child discover the best the Internet
> has to offer.
> http://join.msn.com/?pgmarket=en-ca&page=byoa/prem&xAPID=1994&DI=1034&SU=http://hotmail.com/enca&HL=Market_MSNIS_Taglines
> Start enjoying all the benefits of MSN. Premium right now and get the
> first two months FREE*.
>
Received on Monday, 29 November 2004 09:29:16 UTC