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 ]


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>
>
>
>




 

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

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