RE: open schema

Logically it would seem that you cannot do what you request: a random order
of required elements mixed with unspecified (i.e., <any>) optional elements.
This is because neither <choice> nor <sequence> may contain <all> and <all>
may only contain an <element> or an <annotation>.

Thomas D. Wason, Ph.D.
Consultant
e-Learning Architectures, Content & Meta-Data
+1 919.839.8187
wason@mindspring.com
http://www.twason.com
1421 Park Drive
Raleigh, North Carolina 27605 USA

< -----Original Message-----
< From: xmlschema-dev-request@w3.org
< [mailto:xmlschema-dev-request@w3.org]On Behalf Of estee
< Sent: Monday, August 27, 2001 4:01 PM
< To: Eddie Robertsson
< Cc: xmlschema-dev@w3.org
< Subject: RE: open schema
<
<
< I hava some problems with the  model you suggest :
< 	- It requires different namespaces for elements i require
< and elementss i
< do not (ie all elements required must be in a different namespace)
< 	- It does not work perfectly unless in a sequence (ie
< ordered) it does not
< work inside <all/>
< 	- It only works for models in which all required elements
< come first, after
< which all "garbage" (non mandatory) elements apprear.
< 	- It seems (by trial only) that the xml+schema model I have
< tryed (written
< below)  passed validation (but should not have, since a <d> element is not
< present
<
< I have tryed changing the parents minOccures to 2
< then, it requires mandatory elements before "garbage" elements (first o,
< then d, and then any other)
<
< I hope you get the way i am thinking (I know it night be a bit bizaar)
< However, what i want is simple:
< 	I want to validate that a certain parent element contains
< some mandatory
< fields. I do not however care what else it might contain.
< 	Additionally, I do not care what is the order of all the
< elements in the
< parent. (some "garbage" elements can occur mixed between
< mandatory elements)
< 	I do not even know the quantity of child elements I expect to occur
<
< Thank you very much for your replys
< Glad to hear from you
< 	Oded (estee@isdn.net.il)
<
< <?xml version="1.0" encoding="UTF-8"?>
< <a 	xmlns:hey = "hey"
< 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
< xsi:noNamespaceSchemaLocation="C:\Program Files\Altova\XML Spy
< Suite\Template\choice.xsd">
< 	<o/>
< 	<o/>
< 	<hey:x/>
< 	<hey:z/>
< 	<hey:z/>
< </a>
< <?xml version="1.0" encoding="UTF-8"?>
< <!--W3C Schema generated by XML Spy v4.0 beta 2 build Jul 26 2001
< (http://www.xmlspy.com)-->
< <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
< elementFormDefault="qualified">
< 	<xs:element name="a">
< 		<xs:complexType>
< 			<xs:choice maxOccurs="unbounded">
< 				<xs:element name="o"
< type='xs:string' minOccurs='1'/>
< 				<xs:element name="d"
< type='xs:string' minOccurs='1'/>
< 				<xs:any namespace = "hey"/>
< 			</xs:choice>
< 		</xs:complexType>
< 	</xs:element>
< </xs:schema>
<
<
< -----Original Message-----
< From: Eddie Robertsson [mailto:eddie@allette.com.au]
< Sent: Monday, August 27, 2001 3:37 AM
< To: estee
< Cc: xmlschema-dev@w3.org
< Subject: Re: open schema
<
<
< Hi estee,
<
<
< > Is there any possibility to define (in an xml schema) a type,
< > containing only simple types, of which some are required, and all the
< > others unknown.In other words: define a type in which i know what
< > elements are supposed to be present, but do not know which "might" be
< > present. eg:the following type must contain 'a', 'b', and 'c', but
< > might also contain some other elements. It is also important to state
< > that the order af appearance is of no siginificance.
< > <letters>        <a/>        <hollat/>        <c/>
< > <club/>        <b/>        <smit/>        <pliq/>    </letters> I am
< > searching for a solution in which all elements are of same namespaces.
<
< What you need is to include the xs:any [1] declaration in your content
< model. The xs:any declaration is used when you want to include arbitrary
< elements in your content model. It lets you control in which namespace
< the elements should be defined (using the namespace attribute) and how
< the validation should be performed (using the processContents
< attribute).
< In your example the declaration of letter would probably be something
< like:
<
< <xs:complexType name="letterType">
<    <xs:choice minOccurs="0" maxOccurs="unbounded">
<       <xs:element name="a" type="xs:string"/>
<       <xs:element name="b" type="xs:string"/>
<       <xs:element name="c" type="xs:string"/>
<       <xs:any namespace="##targetNamespace" processContents="strict"/>
<    </xs:choice>
< </xs:complexType>
<
< By setting namespace="##targetNamespace" you specify that all the
< elements must come from the targetNamespace of your schema.
<
<  Cheers,
< /Eddie
<
< [1] http://www.w3.org/TR/xmlschema-0/#any
<
<

Received on Monday, 27 August 2001 18:56:53 UTC