Altova Mailing List Archives>Archive Index >xmlschema-dev Archive Home >Recent entries >Thread Prev - Re: Defining recursive elements? >Thread Next - Re: Defining recursive elements? Re: Defining recursive elements?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 | ||||||
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | Mobile | Full Site | |||
|
