Martin,

Xerces is doing what the schema 1.0 spec requires. It's the "remove
pointless particles" that's causing the problem. See clause 2.2 of [1].

So after the removal process, (ii) to (iv) all become (A,C,D). Now the base
has a sequence of 2 items but the restriction has 3 items.

This does look strange, which is why in schema 1.1 [2], the 5x5 table is
replaced by a rule similar to "as long as the restriction doesn't allow
more than the base".

XSV accepts the schema docs because it's been updated to use the 1.1 rules
for particle restriction. In Xerces we are working on implementing schema
1.1, on a branch. The new particle restriction rules are not available yet.

[1]
http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#cos-particle-restrict
[2] http://www.w3.org/TR/xmlschema11-1/

Thanks,
Sandy Gao
XML Technologies, IBM Canada
Editor, W3C XML Schema WG.
(1-905) 413-3255 T/L 313-3255


|------------>
| From:      |
|------------>
  
>--------------------------------------------------------------------------------------------------------------------------------------------------|
  |"Thomson, Martin" <[email protected]>                                
                                                                     |
  
>--------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| To:        |
|------------>
  
>--------------------------------------------------------------------------------------------------------------------------------------------------|
  |"[email protected]" <[email protected]>                  
                                                                     |
  
>--------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| Date:      |
|------------>
  
>--------------------------------------------------------------------------------------------------------------------------------------------------|
  |2010-09-23 12:19 AM                                                          
                                                                     |
  
>--------------------------------------------------------------------------------------------------------------------------------------------------|
|------------>
| Subject:   |
|------------>
  
>--------------------------------------------------------------------------------------------------------------------------------------------------|
  |Simple nested restriction                                                    
                                                                     |
  
>--------------------------------------------------------------------------------------------------------------------------------------------------|





I'm trying to understand why Xerces is rejecting what appears to be a
simple restriction.

The base type permits either of A,B or A,C,D; the restricting types simply
remove the choice:

Base = (A,(B|(C,D)))
i.   Restriction = (A,B)        -- OK
ii.  Restriction = (A,C,D)      -- Not OK
iii. Restriction = (A,(C,D))    -- Not OK
iv.  Restriction = (A,((C,D)|)) -- Not OK

As the last two examples show, mimicking the structure of the base type
with choices and sequences is too easily collapsed this to bluff it.

I get the impression that this is related to MapAndSum [1].  From my
uneducated reading, it seems like MapAndSum never considered the simple
case where the sequence mapped entirely to one of the particles of the
choice.

XSV [2] accepts all four forms.

I can see how this might be viewed as a valid interpretation of the
specification, but it's a real nuisance.  Should I raise a bug report on
this?

Cheers,
Martin

[1] http://www.w3.org/TR/xmlschema-1/#rcase-MapAndSum
[2] http://www.w3.org/2001/03/webdata/xsv


<<inline: graycol.gif>>

<<inline: ecblank.gif>>

Reply via email to