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 ]

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






 

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

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