- From: Andrew Welch <andrew.j.welch@gmail.com>
- Date: Thu, 17 May 2007 20:24:46 +0100
- To: "Todd Moon" <tmrfcm@gmail.com>
- Cc: xmlschema-dev@w3.org
On 5/17/07, Todd Moon <tmrfcm@gmail.com> 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.
Received on Thursday, 17 May 2007 19:24:52 UTC