RE: <length> = a real number plus a unit qualification

You are trying to encode two pieces of imformation - amount and scale.  
The underlying principle of XML is that all items belong in separate nodes.


So better to use a complex type - either a complex type 
with several elements in its content model e.g.

<length>
  <amount>2.54</amount>
  <scale>cm</scale>
</length>

or a complex type with simpleContent and using an XML 
attribute for the scale

<length uom="in">1.0</length>

The type of scale or uom (units of measure) should be a string restricted by
an enumeration

  <xs:simpleType name="lengthUnits">
    <xs:restriction base="xs:string">
      <xs:enumeration value="px"/>
      <xs:enumeration value="pt"/>
      <xs:enumeration value="mm"/>
      <xs:enumeration value="cm"/>
      <xs:enumeration value="in"/>
      <xs:enumeration value="em"/>
    </xs:restriction>
  </xs:simpleType>

_____
[This mail represents part of a discussion of work in progress 
and should not be used for any purpose without my permission.] 
_____
Simon.Cox@csiro.au  CSIRO Exploration & Mining
26 Dick Perry Avenue, Kensington WA 6151
PO Box 1130, Bentley WA 6102  AUSTRALIA
T: +61 (8) 6436 8639  F: +61 (8) 6436 8555  C: +61 (4) 0330 2672
http://www.csiro.au/page.asp?type=resume&id=CoxSimon

> -----Original Message-----
> From: Jeni Tennison [mailto:jeni@jenitennison.com]
> Sent: Tuesday, 14 May 2002 4:25 AM
> To: Chuck Paussa
> Cc: xmlschema-dev@w3.org
> Subject: Re: <length> = a real number plus a unit qualification
> 
> 
> Hi Chuck,
> 
> > I'm trying to create a simpleType definition for length, which is
> > defined as a real number plus a unit qualification. I've come up
> > with this, which I know is wrong.
> >
> >    <simpleType name = "length_Type">
> >        <restriction base = "NMTOKEN">
> >            <pattern value = "[+-]?\d+\.?\d*[p|m|i|c|e][x|t|m|n]"/>
> >        </restriction>
> >    </simpleType>
> >
> > The unit qualification is one of px, pt, mm, in, cm, em so I
> > constructed the above 2 part choice. The problem being it allows
> > illegal values such as ix. How do I create a list of atoms greater
> > than one character? [px|pt|mm|cm|in|em] is not right.
> 
> You need to use ()s rather than []s. The []s are used when you want to
> say "one of this set of characters", so:
> 
>   [pmice]
> 
> means one of p, m, i, c or e.
> 
> So you need:
> 
> <simpleType name="length_Type">
>   <restriction base="NMTOKEN">
>     <pattern value = "[+-]?\d+\.?\d*(px|pt|mm|cm|in|em)"/>
>   </restriction>
> </simpleType>
> 
> Cheers,
> 
> Jeni
> 
> ---
> Jeni Tennison
> http://www.jenitennison.com/
> 

Received on Monday, 13 May 2002 22:05:05 UTC