- From: Michael Anderson <michael@research.canon.com.au>
- Date: Wed, 31 Jan 2001 09:10:13 +1100
- To: Ayalew Kassahun <A.Kassahun@InfoRay.NL>
- Cc: xmlschema-dev@w3.org
Ayalew Kassahun wrote:
> Hi List:
>
> I have (what seams to me) a simple question but I difficulty expressing it
> in my schema. I want to constraint users of my schema to use only a subset
> of the simpleTypes: xsd:int, xsd:double and xsd:string. How can I specify
> that in my schema?
>
> For example in the following document I want the element <age
> type="xsd:short">23</age> be reported as 'invalid' because its content is of
> type short.
>
> <?xml version="1.0"?>
> <purchaseOrder orderDate="1999-10-20">
> <shipTo country="US">
> <name>Alice Smith</name>
> <age type="xsd:short">23</age>
> <city>Mill Valley</city>
> <state>CA</state>
> <zip>90952</zip>
> </shipTo>
> <billTo country="US">
> <name>Robert Smith</name>
> <street>8 Oak Avenue</street>
> <city>Old Town</city>
> <state>PA</state>
> <zip>95819</zip>
> </billTo>
> </purchaseOrder>
>
> any suggestion is welcome.
>
> regards
> Ayalew
I'm not exactly sure what you want to do, so here are three solutions.
1. If you want age to _only_ be a short and you want to specify this in the
instance, then you can use the following for the instance:
<purchaceOrder orderDate = "1999-10-20"
xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"
<snip/>
<age xsi:type="xsd:short">23</age>
<snip/>
2. If you want age to _only_be a short and you want to specify this in the
schema, then you can use the following in the schema:
<xsd:element name="age" type="xsd:short"/>
where xsd is defined as in case 1.
Now your instance will be valid with <age>23</age> but invalid with <age>hello
world</age>
3. If you want age to be a short OR integer OR double, then in your schema you
use a union
<xsd:element name="age">
<xsd:simpleType>
<xsd:union memberTypes="xsd:short xsd:integer xsd:double"/>
</xsd:simpleType>
</xsd:element>
Now your instance will be valid with <age>23</age> AND <age>23.4</age> but
invalid with <age>hello world</age>
For a better explanation than mine, see the primer [1]
mick.
[1] http://www.w3.org/TR/xmlschema-0/#CreatDt
Received on Tuesday, 30 January 2001 17:10:18 UTC