[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: complexTypes and attributes

  • From: "Michael Kay" <mike@s...>
  • To: "'Umut Emin'" <j.s.bach@o...>,<xml-dev@l...>
  • Date: Sun, 13 May 2007 22:30:15 +0100

RE:  complexTypes and attributes
In writing a schema for this, one of the questions is "do start and end have
the same type"? You can view that syntactically - is there any difference
between the validation rules for start and end? - or semantically - do these
represent objects in the real world that are two examples of the same kind
of thing?

(Looking at the semantics, I find your example somewhat mysterious. I think
I know what the height and width of a door are, but I have no idea what the
start and end of a door might be. Writing a schema without understanding the
semantics of the data model is usually best avoided.)

If we assume that start and end have the same type, that gives us:

<xs:element name="start" type="startOrEndType"/>
<xs:element name="end" type="startOrEndType"/>

<xs:complexType name="startOrEndType">
  <xs:sequence/>
  <xs:attribute name="x" type="xs:integer"/>
  <xs:attribute name="y" type="xs:integer"/>
  <xs:attribute name="z" type="xs:integer"/>
</xs:complexType>

There are many oddities in the syntax of XML Schema (I find it impossible to
write a schema without looking up the rules in a book, and that's after a
couple of years' practice). One of the odd rules is that you have to declare
the child elements of an element before you declare the attributes.

So door has two child elements and two attributes which makes it:

<xs:complexType name="doorType">
  <xs:sequence>
    <xs:element ref="start"/>
    <xs:element ref="end"/>
  </xs:sequence>
  <xs:attribute name="width" type="xs:integer"/>
  <xs:attribute name="height" type="xs:integer"/>
</xs:complexType>

<xs:element name="door" type="doorType"/>

Of course there are many variations: you can use anonymous types rather than
named types, and you can use locally-declared elements instead of
globally-declared. When you declare elements or types globally, their
definitions become reusable, which is why I tend to prefer this style.

Michael Kay
http://www.saxonica.com/


> -----Original Message-----
> From: Umut Emin [mailto:j.s.bach@o...] 
> Sent: 13 May 2007 03:02
> To: xml-dev@l...
> Subject:  complexTypes and attributes
> 
> Hei *,
> 
> I started reading about xml after having found out that it 
> could work as a db. 
> 
> Now i am writing a scheme to understand the tree structure. I 
> got stuck with complexTypes and attributes. My xml file would 
> look like this:
> 
> <door width="150" height="300">
> <start x="50" y="50" z="0" />
> <end x="50" y="-50" z="100" />
> </door>
> 
> which would be like below as a scheme (except width & height
> attributes):
> 
> <xs:element name="door">
>                     <xs:complexType>
>                         <xs:sequence>
>                             <xs element name="start">
>                             <xs:attribute name="x" type="xs:integer"/>
>                             <xs:attribute name="y" type="xs:integer"/>
>                             <xs:attribute name="z" type="xs:integer"/>
>                         </xs:element>
> 
>                             <xs:element name="end">
>                             <xs:attribute name="x" type="xs:integer"/>
>                             <xs:attribute name="y" type="xs:integer"/>
>                             <xs:attribute name="z" type="xs:integer"/>
>                         </xs:element>
> 
>                         </xs:sequence>
>                     </xs:complexType>
>   </xs:element>
> 
> As I have the attributes width and height- in a complexType 
> element "door", i'd like to  know how i should put them in 
> the element block at scheme? I couldn't see any examples in 
> web related to this point. Is it a common design way not to 
> put attributes in the complex elements?
> 
> Greetz,
> Umut
> 
> 
> 
> ______________________________________________________________
> _________
> 
> XML-DEV is a publicly archived, unmoderated list hosted by 
> OASIS to support XML implementation and development. To 
> minimize spam in the archives, you must subscribe before posting.
> 
> [Un]Subscribe/change address: http://www.oasis-open.org/mlmanage/
> Or unsubscribe: xml-dev-unsubscribe@l...
> subscribe: xml-dev-subscribe@l... List archive: 
> http://lists.xml.org/archives/xml-dev/
> List Guidelines: http://www.oasis-open.org/maillists/guidelines.php
> 



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]


PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
 

Stylus Studio has published XML-DEV in RSS and ATOM formats, enabling users to easily subcribe to the list from their preferred news reader application.


Stylus Studio Sponsored Links are added links designed to provide related and additional information to the visitors of this website. they were not included by the author in the initial post. To view the content without the Sponsor Links please click here.

Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.