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