OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   Re: [xml-dev] Enumerated Lists

[ Lists Home | Date Index | Thread Index ]

On Fri, 2004-03-05 at 12:11, Max Chappell wrote:
> Hi,
> 
> I'm trying to use a list type that contains only enumerated 
> values....I've tried validating with XMLSpy and XercesJ2.6.2 and get 
> errors when I use the list.
> I've used two different approaches that don't validate correctly - can 
> anybody tell me if this is a schema problem or a Xerces problem please ?
> 
> OK. First approach was:
> 
> <xs:simpleType name="ePartitionKeys_">
>         <xs:restriction base="xs:NMTOKEN">
>             <xs:enumeration value="PartVersion"/>
>             <xs:enumeration value="Separation"/>
>             <xs:enumeration value="SheetName"/>
>             <xs:enumeration value="Side"/>          
>         </xs:restriction>
>     </xs:simpleType>
> 
> <xs:simpleType name="ePartitionKeysList_">
>         <xs:list itemType="jdftyp:ePartitionKeys_"/>           
> </xs:simpleType>

Assuming "jdftyp" is a namespace prefix for your target namespace, this
should do what you say (define a list that contains only enumerated
values). What's wrong with this first version?

> Second approach makes use of an interim definition (which I think is the 
> correct way to do this..?):
> 
> <xs:simpleType name="ePartKeysList_">
>         <xs:list itemType="jdftyp:NMTOKEN"/>           
>  </xs:simpleType>

Have you defined a "NMTOKEN" type in your target namespace, or shouldn't
it be :

<xs:simpleType name="ePartKeysList_">
        <xs:list itemType="xs:NMTOKEN"/>           
</xs:simpleType>

???

> <xs:simpleType name="ePartKeysList_">
>         <xs:list itemType="jdftyp:NMTOKEN"/>           
>  </xs:simpleType>

>  <xs:simpleType name="ePartitionKeysList_">
>         <xs:restriction base="jdftyp:ePartKeysList_">
>             <xs:enumeration value="PartVersion"/>
>             <xs:enumeration value="Separation"/>
>             <xs:enumeration value="SheetName"/>
>             <xs:enumeration value="Side"/>          
>         </xs:restriction>
>  </xs:simpleType>   

Here, you're defining a list type and restrict the result to be one of
the values in the enumeration. That's fine, but your resulting type is
not really a list any longer.

> The error message from Xerces is:
> [Error] MISPrepress122.jdf:73:226: cvc-enumeration-valid: Value 
> 'SheetName Side Separation PartVersion' is not facet-valid with respect 
> to enumeration '[PartVersion, Separation, SheetName, Side]'. It must be 
> a value from the enumeration.
> [Error] MISPrepress122.jdf:73:226: cvc-attribute.3: The value 'SheetName 
> Side Separation PartVersion' of attribute 'PartIDKeys' on element 
> 'ExposedMedia' is not valid with respect to its type, 'ePartitionKeysList_'.

That just says that the values must be either PartVersion, Separation,
SheetName or Side which is what I mean by "your resulting type is not
really a list any longer" :) ...

Eric
-- 
Freelance consulting and training.
                                            http://dyomedea.com/english/
Upcoming XML schema languages tutorial:
 - Santa Clara  -half day- (15/03/2004)        http://masl.to/?J24916E96
------------------------------------------------------------------------
Eric van der Vlist       http://xmlfr.org            http://dyomedea.com
(ISO) RELAX NG   ISBN:0-596-00421-4 http://oreilly.com/catalog/relax
(W3C) XML Schema ISBN:0-596-00252-1 http://oreilly.com/catalog/xmlschema
------------------------------------------------------------------------





 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS