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

RE: Unique Particle Attribution

From: Priscilla Walmsley <priscilla@walmsley.com>
Date: Wed, 5 May 2004 11:28:29 -0400
To: "'Veerappan Saravanan-ESV007'" <esv007@motorola.com>
Cc: <xmlschema-dev@w3.org>
Message-Id: <20040505153026.5646AA128D@frink.w3.org>

How about this?

<sequence>
    <element ref="a"/>
    <choice>
        <sequence>
           <element ref="a" maxOccurs="4"/>
           <element ref="b"/>
        </sequence>
        <element ref="b" maxOccurs="5"/>                
    </choice>               
</sequence>


Hope that helps,
Priscilla

-----------------------------------------------------
Priscilla Walmsley             priscilla@walmsley.com
Author, Definitive XML Schema     (Prentice Hall PTR)
-----------------------------------------------------  

> -----Original Message-----
> From: xmlschema-dev-request@w3.org 
> [mailto:xmlschema-dev-request@w3.org] On Behalf Of Veerappan 
> Saravanan-ESV007
> Sent: Wednesday, May 05, 2004 9:44 AM
> To: 'noah_mendelsohn@us.ibm.com'; Veerappan Saravanan-ESV007
> Cc: xmlschema-dev@w3.org
> Subject: RE: Unique Particle Attribution
> 
> 
> Thanks for the explanation.
> 
> I am trying to figure out alternates for the following due to 
> UPA violation as per spec. I need to perform this validation 
> in schema 
> itself rather during parsing.
> 
> <choice>
> 	 <sequence>
>                 <element ref="a" maxOccurs="1"/>
>                 <element ref="b" maxOccurs="5"/>                
>         </sequence>
> 	  <sequence>
>                 <element ref="a" maxOccurs="1"/>
>                 <element ref="b" maxOccurs="1"/>                
>         </sequence>
> 	  <sequence>
>                 <element ref="a" maxOccurs="5"/>
>                 <element ref="b" maxOccurs="1"/>                
>         </sequence>
> </choice>
> 
> Thanks,
> -Saravanan
> 
> 
> -----Original Message-----
> From: xmlschema-dev-request@w3.org 
> [mailto:xmlschema-dev-request@w3.org] On Behalf Of 
> noah_mendelsohn@us.ibm.com
> Sent: Tuesday, May 04, 2004 10:50 PM
> To: Veerappan Saravanan-ESV007
> Cc: xmlschema-dev@w3.org
> Subject: Re: Unique Particle Attribution
> 
> 
> 
> Veerappan Sravanan writes:
> 
> >> Is there a better tutorial with examples where can I learn 
> more about 
> >> UPA
> and how to get around? 
> 
> I must ask:  "better than what"?  Here's a quick intro:
> 
> First, what's a particle.  Consider:
> 
>         <sequence>
>                 <element ref="a"/>
>                 <element ref="b" maxOccurs="5"/>
>                 <element ref="c">
>         </sequence>
> 
> In the above, there are 4 particles[1].  One is the outer 
> sequence, the 
> others are the three element references.  The maxOccurs is 
> considered part 
> of the particle.   Particles have recursive structure:
> 
>         <sequence>
>                 <element ref="a"/>
>                 <element ref="b" maxOccurs="5"/>
>                 <choice>
>                         <element ref="x"/>
>                         <element ref="y"/>
>                 </choice>
>                 <element ref="c">
>         </sequence>
> 
> Anyway, UPA says that for a given content model to be legal, 
> there can be 
> no instance that would have an element matching more than one 
> particle. 
> The above are OK per UPA.  The following is not:
> 
>         <sequence>
>                 <element ref="a" minOccurs="0"/>
>                 <element ref="a" minOccurs="0"/>
>         </sequence>
> 
> Why illegal?  Well, if I asked you to validate the instance:
> 
>         <a/>
> 
> you could match it against either of the element references, 
> since both 
> are optional and both match <a/>.  So, you cannot "uniquely 
> attribute" the 
> element to a particle.  UPA is violated. 
> 
> Note:  it's the original <sequence> that is not legal.  We 
> can't really 
> ask whether the instance is valid, because there is no legal schema 
> against which to try (though clearly, if the schema were allowed, the 
> instance would validate...for two reasons!)
> 
> UPA is an interesting tradeoff.  It makes validators simpler, 
> because you 
> don't have to go down two or more branches of the content 
> model to try and 
> see whether your instance matches.  At least as important, it 
> makes things 
> easier for tools that do things like binding schemas to Java, 
> relational 
> databases, etc.  In the first schema above you can map any 
> valid instance 
> to: a variable a, an array of up to 5 b's, and a c.  The 
> sequence that 
> violates UPA is somewhat harder to map;  done in the obvious way, the 
> element <a/> could map to either of two variables, and crucially, 
> different processors might reasonably make different decisions.
> 
> I hope this helps.
> 
> Noah
> 
> [1] 
> http://www.w3.org/TR/2004/PER-xmlschema-1-20040318/#Particle_details
> 
> --------------------------------------
> Noah Mendelsohn 
> IBM Corporation
> One Rogers Street
> Cambridge, MA 02142
> 1-617-693-4036
> --------------------------------------
> 
> 
> 
> 
> 
> 
> 
> 
> Veerappan Saravanan-ESV007 <esv007@motorola.com>
> Sent by: xmlschema-dev-request@w3.org
> 05/03/04 05:00 PM
> 
>  
>         To:     "'xmlschema-dev@w3.org'" <xmlschema-dev@w3.org>
>         cc:     (bcc: Noah Mendelsohn/Cambridge/IBM)
>         Subject:        Unique Particle Attribution
> 
> 
> Hello, 
> Is there a better tutorial with examples where can I learn 
> more about UPA 
> and how to get around? 
> I have problem in validating my schema due to UPA constraint. 
> Thanks 
> -Saravanan 
> 
> 
Received on Wednesday, 5 May 2004 11:30:30 GMT

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