[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Best Practice for this problem?
- From: ht@cogsci.ed.ac.uk (Henry S. Thompson)
- To: Paul Spencer <paul.spencer@boynings.co.uk>
- Date: Mon, 19 Mar 2001 12:52:46 +0000
Paul Spencer <paul.spencer@boynings.co.uk> writes:
> I have recently been asked to look at a schema, of which this is a part:
<snip/>
> The intention is clear - at least one of the three elements <Town>,
> <Locality>, <County>, but each must not appear more than once.
There are several problems here -- first of all, you are breaking the
unique attribution rule. Second of all, you haven't got all the bases
covered.
The DTD equivalent of what you want is
((t,((c,d?)|(d,c?))?)|(c,((t,d?)|(d,t?))?)|(d,((c,t?)|(t,c?))?))
Just transcribe this into XML Schema.
> I believe the format to be non-compliant with XML Schema since each of the
> three elements has multiple definitions within the same scope. XML Authority
> 2.1 agrees with me, XML Spy 3.5 does not.
Nope, they all have the same type, so that's OK.
> If I am right, there are two choices:
>
> 1. Define the three elements globally, then reference them as required. This
> loses the benefit of a local definition within the complex data type.
You could certainly do that.
> 2. Define the elements as at the start of the example:
>
> <xsd:choice>
> <xsd:element name="Town" type="bs7666:TownType"/>
> <xsd:element name="Locality" type="bs7666:LocalityType"/>
> <xsd:element name="County" type="bs7666:CountyType"/>
> </xsd:choice>
>
> Then access by reference from there. For example:
>
> <xsd:sequence>
> <xsd:element ref="Town"/>
> <xsd:element ref="Locality"/>
> </xsd:sequence>
>
> I have never seen an example that uses "ref=" pointing to a locally scoped
> definition. Is this allowed?
Not allowed, although we considered it and may come back to it.
ht
--
Henry S. Thompson, HCRC Language Technology Group, University of Edinburgh
W3C Fellow 1999--2001, part-time member of W3C Team
2 Buccleuch Place, Edinburgh EH8 9LW, SCOTLAND -- (44) 131 650-4440
Fax: (44) 131 650-4587, e-mail: ht@cogsci.ed.ac.uk
URL: http://www.ltg.ed.ac.uk/~ht/