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

RE: Schema question


xsd element url
Melvin Chin provided a correct solution: it relies on the fact that XML
Schema allows elements to be defined globally or locally, and different
local definitions don't clash with each other.

Joe Chiusano provided an impossible solution: your XML document is
predefined, and none of the elements is in a namespace, so you can't use
namespaces to distinguish the two product elements.

My own design would look something like this:

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema version="1.0"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema">

   <xsd:element name="root">
     <xsd:complexType name="rootType">
       <xsd:sequence>
         <xsd:element ref="product" maxOccurs="unbounded"/>
       </xsd:sequence>
     </xsd:complexType>
   </xsd:element>

   <xsd:element name="product">
     <xsd:complexType>
       <xsd:sequence>
          <xsd:element name="name" type="xsd:string"/>
          <xsd:element name="url" type="urlType"/>
       </xsd:sequence>
     </xsd:complexType>
   </xsd:element>

   <xsd:complexType name="urlType">
     <xsd:sequence>
        <xsd:element name="product" type="xsd:anyURI"/>
        <xsd:element name="image" type="xsd:anyURI"/>
     </xsd:sequence>
   </xsd:complexType>
                 
</xsd:schema>

I think this kind of design (a) gives more scope for reuse of components
(you can only reuse components if they are named components at the top
level), and (b) gives more scope for writing schema-aware queries and
stylesheets (these too can only refer to top-level named components in your
schema). One design guideline I try to use is "an element should either have
a top-level element declaration or a global type definition, or both". In
this example I could have achieved this by making the element url a global
element, rather than promoting urlType to the top level. That's a fairly
arbitrary choice, and of course you could always declare both the element
and its type globally.

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



> -----Original Message-----
> From: Alex Stankovic [mailto:alex.stankovic@g...] 
> Sent: 26 July 2006 03:25
> To: xml-dev@l...
> Subject:  Schema question
> 
> Hello everybody,
> 
> I have to process a XML document that's looks like this (I 
> don't have a choice in the layout since I'm receiving the 
> document from a third
> party):
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <root>
>   <product>
>     <name>Product name</name>
>     <url>
>       <product>http://product.url.com</product>
>       <image>http://product.image.com</image>
>     </url>
>   </product>
>   <product>
>     <name>Product name 2</name>
>     <url>
>       <product>http://product.url.com</product>
>       <image>http://product.image.com</image>
>     </url>
>   </product>
> </root>
> 
> As you can see element name "product" is used as a product 
> container and as the child of url element. I'm not XML expert 
> but I think that's not very smart. How can I write a XSD 
> schema to validate this type of document when an element name 
> can mean two different things? Is it even possible?
> 
> Thanks,
> Alex
> 
> -----------------------------------------------------------------
> The xml-dev list is sponsored by XML.org 
> <http://www.xml.org>, an initiative of OASIS 
> <http://www.oasis-open.org>
> 
> The list archives are at http://lists.xml.org/archives/xml-dev/
> 
> To subscribe or unsubscribe from this list use the subscription
> manager: <http://www.oasis-open.org/mlmanage/index.php>
> 


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.