W3C home > Mailing lists > Public > xmlschema-dev@w3.org > July 2003

{min,max}{Inclusive,Exclusive} derivation correct

From: Stefano Zacchiroli <zack@bononia.it>
Date: Sat, 5 Jul 2003 14:44:35 +0200
To: XML Schema Dev ML <xmlschema-dev@w3.org>
Message-ID: <20030705124435.GA22284@fistandantilus.takhisis.org>

I'm really puzzled about the Schema "valid restriction" rules about the
facets regarding limits.

This is a brief summary of the rules found on the specifications:
[ I hope the notation is clear "f" is a generic set of facets, new and
old are respectively the new set of facets you're using to restrict and
the set of facets of the type you're restricting ]

  maxInclusive paragraph
    - f.minInclusive <= f.maxInclusive
    -
      * not (new.maxExclusive >= old.maxExclusive)
     ** not (new.maxInclusive > old.maxInclusive)
      * not (new.minExclusive <= old.minExclusive)
      * not (new.minInclusive < old.minInclusive)

  maxExclusive paragraph
    - not both max{Inclusive,Exclusive}
    - f.minExclusive <= f.maxExclusive
    -
     ** not (new.maxExclusive > old.maxExclusive)
      * not (new.maxInclusive > old.maxInclusive)
      * not (new.minExclusive <= old.minExclusive)
      * not (new.minInclusive <= old.minInclusive)

  minExclusive paragraph
    - not both min{Inclusive,Exclusive}
    - f.minExclusive < f.maxInclusive
    -
      * not (new.maxExclusive >= old.maxExclusive)
      * not (new.maxInclusive > old.maxInclusive)
     ** not (new.minExclusive < old.minExclusive)
      * not (new.minInclusive < old.minInclusive)

  minInclusive paragraph
    - f.minInclusive < f.maxExclusive
    -
      * not (new.maxExclusive >= old.maxExclusive)
      * not (new.maxInclusive > old.maxInclusive)
      * not (new.minExclusive <= old.minExclusive)
     ** not (new.minInclusive < old.minInclusive)

Does this make sense?

If I have understood correctly, the limit I'm restricting (marked with
"**") has to be strictly less or greater than the previous one. Ok.

But now:
1) why I've to check also the other limits?
2) (assuming that exists an answer for the previous question)
   why this checks are not consistent?
   e.g.
    - if I'm restricting maxInclusive the recommandation specify to
      check
      
        new.minInclusive < old.minInclusive

    - if I'm restriction maxExclusive the recommandation specify to
      check

        new.minInclusive <= old.minInclusive

The errata seems not to mention this issues ...

Thanks in advance.
Cheers.

-- 
Stefano Zacchiroli  --  Master in Computer Science @ Uni. Bologna, Italy
zack@{cs.unibo.it,debian.org,bononia.it}  -  http://www.bononia.it/zack/
"  I know you believe you understood what you think I said, but I am not
sure you realize that what you heard is not what I meant!  " -- G.Romney
Received on Saturday, 5 July 2003 08:46:22 GMT

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