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

Conditional Schema Processing

From: Zac Harvey <zachary.harvey@gmail.com>
Date: Fri, 5 Dec 2008 12:11:10 -0500
Message-ID: <72032db40812050911y661f3807n5f788194f7ec337a@mail.gmail.com>
To: xmlschema-dev@w3.org
Conditional Schema Processing
This may be bad design, so if it is, then I guess what I'm looking for is an
elegant alternative solution. However I don't believe the following to be a
product of poor design, and so the following question should apply:

I want a particular element, <*widget*> to force the user to define a
*foo*attribute, which will be an enum type of three potential values:
*me*, *you* or *us*. For example:

<widget foo="me" />
<widget foo="you" />
<widget foo="us" />

Would all be legal <widget> instantiations. And so I have the following so
far in my XSD:

*<xs:element name="widget" minOccurs="1" maxOccurs="unbounded">
    <xs:complexType>
        <xs:attribute name="foo" type="xs:string" use="required">
            <xs:simpleType>
                <xs:restriction base="xs:string">
**                    **<xs:enumeration value="me" />
**                    **<xs:enumeration value="you" />
**                    **<xs:enumeration value="us" />
**                **</xs:restriction>
**            **</xs:simpleType>
        </xs:attribute>

**        **<xs:sequence>
            <!-- No definition yet ... -->
**        **</xs:sequence>
    </xs:complexType>
</xs:element>
*
What I am looking for is the ability to define <widget>'s sequence based on
the value of foo.  If foo="me" I want it to contain, say, an <apple>
element. Else if it is "you" or "us" I want it to contain an <orange> child
element.  So for example:

<widget foo="me">
    <apple>Hello!</apple>
</widget>

<widget foo="us">
    <orange>XSD!</orange>
</widget>

I have been pouring through the tutorials and cannot find a way to include
this conditional functionality...
Received on Friday, 5 December 2008 17:31:50 GMT

Subscribe to the Stylus Scoop newsletter for helpful XML tips and tutorials.
Email
First Name
Last Name
Company

Download Stylus Studio 6 XML Enterprise Edition

Subscribe in XML format
RSS 2.0
Atom 0.3
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-2007 All Rights Reserved.