OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   RE: [xml-dev] Another Schema Question

[ Lists Home | Date Index | Thread Index ]

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@comcast.net] 
> Sent: 28 July 2004 21:03
> To: Alex Milowski
> Cc: xml-dev@lists.xml.org
> Subject: Re: [xml-dev] 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@milowski.com
> >
> > "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>
> 





 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS