- From: (unknown charset) Calvin Smith <calvins@SIMS.Berkeley.EDU>
- Date: Wed, 24 Jul 2002 15:12:18 -0700 (PDT)
- To: (unknown charset) Jeni Tennison <jeni@jenitennison.com>
- cc: (unknown charset) xmlschema-dev@w3.org
Hi Jeni, On Wed, 24 Jul 2002, Jeni Tennison wrote: > > Hi Calvin, > > > I am trying to restrict a type that consists solely of an <xsd:any> > > (inside <xsd:sequence>) element, without success. Xerces2-J says > > that the particle of the type is not a valid restriction of the > > particle of the base, because there is not a complete functional > > mapping between the particles. > > > > Base type: > > > > <xsd:complexType name="PayloadType"> > > <xsd:sequence maxOccurs="unbounded"> > > <xsd:any maxOccurs="unbounded"/> > > </xsd:sequence> > > </xsd:complexType> > > This specifies that an element of the type PayloadType must have at > least one element child, whatever that element is (the minOccurs of > both the sequence and the wildcard is 1). > This was an oversight and should have been minOccurs="0". Having changed this, it still doesn't work. I also tried setting the namespace for xsd:any to ##any, but that also doesn't make a difference. > > Derived type: > > > > <xsd:complexType name="LabelType"> > > <xsd:complexContent> > > <xsd:restriction base="PayloadType"> > > <xsd:sequence maxOccurs="unbounded"> > > <xsd:element name="LabelGraphic" type="cct:GraphicType" > > minOccurs="0" maxOccurs="unbounded"/> > > <!-- other elements omitted --> > > </xsd:sequence> > > </xsd:restriction> > > </xsd:complexContent> > > <xsd:complexType> > > Without seeing the full content model, it's hard to be sure, but if > this is the only element particle you might be running into problems > because the LabelGraphic element is optional. You can't restrict from > a type that must have an element to one that only *might* have an > element. > The full definition for the LabelType is: <xsd:complexType name="LabelType"> <xsd:complexContent> <xsd:restriction base="PayloadType"> <xsd:sequence maxOccurs="unbounded"> <xsd:element name="LabelGraphic" type="cct:GraphicType" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="LabelURI" type="xsd:anyURI" minOccurs="0" maxOccurs="unbounded"/> <xsd:element name="LabelHTML" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:restriction> </xsd:complexContent> </xsd:complexType> And PayloadType, for the sake of completeness, is: <xsd:complexType name="PayloadType" abstract="true"> <xsd:sequence minOccurs="0" maxOccurs="unbounded"> <xsd:any namespace="##any" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> > Even if you did have other elements there, this might still be the > cause of the problem. The "complete functional mapping" means that you > need to be able to restrict the xs:any wildcard to the element > particle. This comes under > [http://www.w3.org/TR/xmlschema-1/#rcase-NSCompat], which says: > > For an element declaration particle to be a ·valid restriction· of a > wildcard particle all of the following must be true: > > 1 The element declaration's {target namespace} is ·valid· with > respect to the wildcard's {namespace constraint} as defined by > Wildcard allows Namespace Name (§3.10.4). > > 2 R's occurrence range is a valid restriction of B's occurrence > range as defined by Occurrence Range OK (§3.9.6). > > and the occurrence range of the element particle (0 - unbounded) is > not a valid restriction of the occurrence range of the wildcard (1 - > unbounded). With the occurrence range of the wildcard now set to 0 - unbounded and the namespace constraint set to ##any, it seems that it satisfies all the requirements, but it still fails. thanks, calvin
Received on Wednesday, 24 July 2002 18:12:20 UTC