Home. 
.

transparent

transparent

transparent

Altova Mailing List Archives


Re: Defining recursive elements?

From: "Andrew Welch" <andrew.j.welch@-----.--->
To: "Todd Moon" <tmrfcm@-----.--->
Date: 5/17/2007 9:25:00 PM
On 5/17/07, Todd Moon <tmrfcm@g...> wrote:
>
> (Forgive me if this is a duplicate, Gmail hiccuped for 5 minutes after
> I hit send. I don't see my message in the Sent folder though)
>
> I've been fleshing out my schema. I renamed "part" to "component", and
> added some unique and pattern validation. ("type" and "serial"
> together must be unique across all components.)
>
> I would appreciate some criticism of my schema's overall construction.
> Here it is:
>
> <?xml version="1.0" encoding="utf-8"?>
> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
>   <xsd:element name="header"/>
>   <xsd:element name="components">
>     <xsd:complexType>
>       <xsd:sequence>
>         <xsd:element ref="component" minOccurs="0" maxOccurs="unbounded"/>
>       </xsd:sequence>
>     </xsd:complexType>
>     <xsd:unique name="componentTypeAndSerial">
>       <xsd:selector xpath=".//component"/>
>       <xsd:field xpath="@type"/>
>       <xsd:field xpath="@serial"/>
>     </xsd:unique>
>   </xsd:element>
>   <xsd:element name="component">
>     <xsd:complexType>
>       <xsd:sequence>
>         <xsd:element ref="component" minOccurs="0" maxOccurs="unbounded"/>
>       </xsd:sequence>
>       <xsd:attribute ref="type"/>
>       <xsd:attribute ref="serial"/>
>     </xsd:complexType>
>   </xsd:element>
>   <xsd:attribute name="serial">
>     <xsd:simpleType>
>       <xsd:restriction base="xsd:string">
>         <xsd:pattern value="\d{10}"/>
>       </xsd:restriction>
>     </xsd:simpleType>
>   </xsd:attribute>
>   <xsd:attribute name="type">
>     <xsd:simpleType>
>       <xsd:restriction base="xsd:string">
>         <xsd:pattern value="\d{3}"/>
>       </xsd:restriction>
>     </xsd:simpleType>
>   </xsd:attribute>
>   <xsd:element name="adapter">
>     <xsd:complexType>
>       <xsd:sequence>
>         <xsd:element ref="header"/>
>         <xsd:element ref="components"/>
>       </xsd:sequence>
>     </xsd:complexType>
>   </xsd:element>
> </xsd:schema>
>
> Here is an example of a valid document:
>
> <adapter>
>   <header>
>   </header>
>   <components>
>     <component type="735" serial="0000000001">
>       <component type="736" serial="0000000001"/>
>       <component type="736" serial="0000000002"/>
>       <component type="740" serial="0000000003"/>
>     </component>
>     <component type="735" serial="0000000002">
>     </component>
>     <component type="735" serial="0000000003"/>
>   </components>
> </adapter>

With global definitions some documents will be valid that you might
not want, for example an XML document of just <header/> would validate
using that schema.

From tmrfcm@g... Thu May 17 19:51:18 2007
Received: from lisa.w3.org ([128.30.52.41])
	by frink.w3.org with esmtp (Exim 4.5


transparent
Print
Mail
Like It
Disclaimer
.

These Archives are provided for informational purposes only and have been generated directly from the Altova mailing list archive system and are comprised of the lists set forth on www.altova.com/list/index.html. Therefore, Altova does not warrant or guarantee the accuracy, reliability, completeness, usefulness, non-infringement of intellectual property rights, or quality of any content on the Altova Mailing List Archive(s), regardless of who originates that content. You expressly understand and agree that you bear all risks associated with using or relying on that content. Altova will not be liable or responsible in any way for any content posted including, but not limited to, any errors or omissions in content, or for any losses or damage of any kind incurred as a result of the use of or reliance on any content. This disclaimer and limitation on liability is in addition to the disclaimers and limitations contained in the Website Terms of Use and elsewhere on the site.

.
.

transparent

transparent