Basic XMLSchema questions

Henry S. Thompson ht at cogsci.ed.ac.uk
Wed Jan 5 23:41:05 GMT 2000


Brett McLaughlin <bmclaugh at algx.net> writes:

> Alan Santos wrote:
> > 
> > > Dah!  I'm asleep today... the reason you need <type> is because you can
> > > specify explicit named types:
> > >
> > > <type name="myType">
> > >   <element name="nestedElement" type="string" />
> > >   <element name="anotherNestedElement" type="integer" />
> > > </type>
> > >
> > > <element name="myElement" type="myType" />
> > >
> > > There is no way without the <type> element construct to specify a name
> > > for a non-primitive data type without really blowing away any idea of
> > > congruity across the element space.  So we have the "type" element.
> > >
> > > Make sense?
> > >
> > 
> > Yes it does now.
> > 
> > Syntactically it appears to be legal to simply have <type> on it's own,
> > outside of any elements.  Is it simply a stylistic difference to define it
> > inside another element?
> 
> Nope.  This:
> 
> <element name="element1">
>   <type>
>     <element name="element2" type="string" />
>   </type>
> </element>
> 
> is an implicit element type.  It is used right there and not
> referenceable by any other element.

Right.  I'd call it an anonymous complex type.

> This:
> 
> <type name="type1">
>   <element name="element2" type="string" />
> </type>
> 
> is an explicit element type and is referenceable by other elements:
> 
> <element name="element1" type="type1" />

Right.  I'd call it a top-level or named complex type.

> This:
> 
> <type>
>   <element name="element2" type="String" />
> </type>
> 
> is absolutely useless, as it is not referenceable by any other element,
> and is not implicitly assigned to any other element.

Furthermore, it's not allowed:  top-level types MUST have a name
attribute.  The schema for schemas expresses this constraint.

> Finally, the last permutation:
> 
> <element name="element1">
>   <type name="type1">
>     <element name="element2" type="string" />
>   </type>
> </element>
> 
> is legal, and the type is referenceable by other elements, but is bad
> form (IMHO).  If you have a type that will be used multiple times, put
> it on its own (explicit type).  If it is only used once, use an implicit
> type within the element definition.  Things like this are very
> confusing.

First real misunderstanding:  this is NOT allowed:  only top-level
types can have names.  Again, the schema for schemas expresses this
constraint.

ht
-- 
  Henry S. Thompson, HCRC Language Technology Group, University of Edinburgh
     2 Buccleuch Place, Edinburgh EH8 9LW, SCOTLAND -- (44) 131 650-4440
	    Fax: (44) 131 650-4587, e-mail: ht at cogsci.ed.ac.uk
		     URL: http://www.ltg.ed.ac.uk/~ht/

xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at ic.ac.uk
Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/ and on CD-ROM/ISBN 981-02-3594-1
To unsubscribe, mailto:majordomo at ic.ac.uk the following message;
unsubscribe xml-dev
To subscribe to the digests, mailto:majordomo at ic.ac.uk the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa at ic.ac.uk)





More information about the Xml-dev mailing list