|
[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Another Schema Question
XML Schema is designed on the basis that you can validate sequentially, without backtracking. The means you must be able to decide whether the <deg> value is valid before you've seen the <min> or <sec> value. Therefore, I think this rule cannot be expressed in XML Schema. Michael Kay > -----Original Message----- > From: Dan White [mailto:ygor@c...] > Sent: 28 July 2004 21:03 > To: Alex Milowski > Cc: xml-dev@l... > Subject: Re: Another Schema Question > > > I need to be able to validate this: > > <Latitude> > <deg>90</deg> > <min>0</min> > <sec>00.000</min> > <dir>N</dir> > </Latitude> > > The value of "degrees" can be 90 only if "minutes" and > "seconds" are both > zero. A degee value of 90 with non-zero minutes or seconds > is invalid. > > That's the main problem. I have to allow for someone referencing the > North/South Pole or , in the case of Longitude, the > International DateLine > (180 degrees longitude) > > Both present the same problem. > > On Wed, 28 Jul 2004, Alex Milowski wrote: > > > XMLSpy is clearly wrong in this case. > > > > You could try only have one sequence (i.e. get rid of the > choice) and > > use > > defaults for 'min' and 'sec': > > > > <?xml version="1.0" encoding="UTF-8"?> > > <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> > > <xs:element name="lat" type="LatitudeType"/> > > <xs:complexType name="LatitudeType"> > > <xs:sequence> > > <xs:element name="deg"> > > <xs:simpleType> > > <xs:restriction base="xs:decimal"> > > <xs:minInclusive value="0"/> > > <xs:maxExclusive value="90"/> > > </xs:restriction> > > </xs:simpleType> > > </xs:element> > > <xs:element name="min" default="0"> > > <xs:simpleType> > > <xs:restriction base="xs:decimal"> > > <xs:minInclusive value="0"/> > > <xs:maxExclusive value="60"/> > > </xs:restriction> > > </xs:simpleType> > > </xs:element> > > <xs:element name="sec" default="0"> > > <xs:simpleType> > > <xs:restriction base="xs:decimal"> > > <xs:minInclusive value="0"/> > > <xs:maxExclusive value="60"/> > > </xs:restriction> > > </xs:simpleType> > > </xs:element> > > <xs:element name="dir"> > > <xs:simpleType> > > <xs:restriction base="xs:string"> > > <xs:enumeration value="N"/> > > <xs:enumeration value="n"/> > > <xs:enumeration value="S"/> > > <xs:enumeration value="s"/> > > </xs:restriction> > > </xs:simpleType> > > </xs:element> > > </xs:sequence> > > </xs:complexType> > > </xs:schema> > > > > The problem with this (or using fixed) is that the element > still has to > > appear: > > > > <lat xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > > xsi:noNamespaceSchemaLocation="lat.xsd"> > > <deg>50</deg> > > <min/><sec/> > > <dir>N</dir> > > </lat> > > > > This is one case where attributes have the advantage. You > can have the > > instance: > > > > <lat deg="50" dir="N"/> > > > > and have the schema processor default the 'min' and 'sec' > attributes to > > zero (and > > so your application can always assume they are there). Here's that > > schema: > > > > <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> > > <xs:element name="lat" type="LatitudeType"/> > > <xs:complexType name="LatitudeType"> > > <xs:attribute name="deg"> > > <xs:simpleType> > > <xs:restriction base="xs:decimal"> > > <xs:minInclusive value="0"/> > > <xs:maxExclusive value="90"/> > > </xs:restriction> > > </xs:simpleType> > > </xs:attribute> > > <xs:attribute name="min" default="0"> > > <xs:simpleType> > > <xs:restriction base="xs:decimal"> > > <xs:minInclusive value="0"/> > > <xs:maxExclusive value="60"/> > > </xs:restriction> > > </xs:simpleType> > > </xs:attribute> > > <xs:attribute name="sec" default="0"> > > <xs:simpleType> > > <xs:restriction base="xs:decimal"> > > <xs:minInclusive value="0"/> > > <xs:maxExclusive value="60"/> > > </xs:restriction> > > </xs:simpleType> > > </xs:attribute> > > <xs:attribute name="dir"> > > <xs:simpleType> > > <xs:restriction base="xs:string"> > > <xs:enumeration value="N"/> > > <xs:enumeration value="n"/> > > <xs:enumeration value="S"/> > > <xs:enumeration value="s"/> > > </xs:restriction> > > </xs:simpleType> > > </xs:attribute> > > </xs:complexType> > > </xs:schema> > > > > > > > > Alex Milowski FAX: (707) 598-7649 > > alex@m... > > > > "The excellence of grammar as a guide is proportional to > the paucity of > > the > > inflexions, i.e. to the degree of analysis effected by the language > > considered." > > > > Bertrand Russell in a footnote of Principles of Mathematics > > > > > > > > ----------------------------------------------------------------- > > The xml-dev list is sponsored by XML.org <http://www.xml.org>, an > > initiative of OASIS <http://www.oasis-open.org> > > > > The list archives are at http://lists.xml.org/archives/xml-dev/ > > > > To subscribe or unsubscribe from this list use the subscription > > manager: <http://www.oasis-open.org/mlmanage/index.php> > > > > > > > > ----------------------------------------------------------------- > The xml-dev list is sponsored by XML.org <http://www.xml.org>, an > initiative of OASIS <http://www.oasis-open.org> > > The list archives are at http://lists.xml.org/archives/xml-dev/ > > To subscribe or unsubscribe from this list use the subscription > manager: <http://www.oasis-open.org/mlmanage/index.php> >
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|
|||||||||

Cart








