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

not a complete functional mapping - help

From: Lars Geldner <geldner.list.reg@gmx.net>
Date: Mon, 27 Dec 2004 23:53:34 +0100 (MET)
To: xmlschema-dev@w3.org
Message-ID: <4634.1104188014@www68.gmx.net>

Hello list,

I'm working for a few days on this problem:
I'm searching for a possibility to define a complex type that can only be
derived by restriction. The sub-complex type should have a content model
that only contains elements which have types that are a derivation of the
element types in the super-complex type.
For example here are two types that should be derived:

<xsd:element name="CurrKomp" abstract="true" type="CurrType"/>
<xsd:element name="DidaktKomp" abstract="true" type="DidaktType"/>
<xsd:complexType name="CurrType">
   <xsd:choice minOccurs="1" maxOccurs="unbounded">
      <xsd:element ref="CurrKomp" minOccurs="0" maxOccurs="1"/>
      <xsd:element ref="DidaktKomp" minOccurs="0" maxOccurs="1"/>	          
   </xsd:choice>
</xsd:complexType>
<xsd:complexType name="DidaktType">
   <xsd:choice minOccurs="1" maxOccurs="unbounded">
      <xsd:element ref="DidaktKomp" minOccurs="0" maxOccurs="1"/>
   </xsd:choice>
</xsd:complexType>

In type "CurrType" the model is only one possibility. The goal is that
"CurrKomp" and "DidaktKomp" can appear in any order.
Now I want to restrict the two types:

<xsd:element name="KURS" substitutionGroup="CurrKomp" type="KURSType"/>
<xsd:element name="MODUL" substitutionGroup="CurrKomp" type="MODULType"/>
<xsd:element name="LERNZIEL" substitutionGroup="DidaktKomp" type="LZType"/>
<xsd:complexType name="KURSType">
   <xsd:complexContent>
      <xsd:restriction base="CurrType">
         <xsd:sequence>
            <xsd:element ref="LERNZIEL"/>
            <xsd:choice maxOccurs="unbounded">                            
               <xsd:element ref="MODUL"/>
            </xsd:choice>
         </xsd:sequence>
      </xsd:restriction>
   </xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="MODULType">
<!--no error-->
</xsd:complexType>
<xsd:complexType name="LZType">
   <xsd:complexContent>
       <xsd:restriction base="DidaktType"/>
   </xsd:complexContent>
</xsd:complexType>

Xerces says:
rcase-MapAndSum.1: There is not a complete functional mapping between the
particles. [30] 
derivation-ok-restriction.5.4.2: Error for type 'KURSType'. The particle of
the type is not a valid restriction of the particle of the base. [30] 

Why is KURSType not a valid restriction of CurrType?
If I remove the line
<xsd:element ref="LERNZIEL"/>
there are no errors.
I can't face it.
Can anybody help me defining a type that behaves like a meta-type pretending
all types in the content model?

Thanks in advance!!!

Lars Geldner 


-- 
Psssst! Mit GMX Handyrechnung senken: http://www.gmx.net/de/go/mail
100 FreeSMS/Monat (GMX TopMail), 50 (GMX ProMail), 10 (GMX FreeMail)
Received on Tuesday, 28 December 2004 01:25:22 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 11 January 2011 00:14:48 GMT