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

RE: schema extension question

From: Daniel Marcus <dmarcus@npg.wustl.edu>
Date: Fri, 20 Apr 2007 09:53:36 -0500
Message-ID: <D137A6563A0D774583072D87B777269E02423246@nilex01.neuroimage.wustl.edu>
To: <xmlschema-dev@w3.org>
Cc: "Chuck Herrick" <cherrick@spamcop.net>
RE: schema extension question
To clarify, below is some skeleton schema that sort of does what we
want, but it doesn't enforce the rule that StudyType1 uses only
StudyType1 parts. How do we ensure that we don't end up with this:

<StudyType1>

        <part1 xsi:type="studyType1_part1">This is good<part1>

        <part2 xsi:type="studyType2_part2">Uh Oh!<part2>

</StudyType1>

 

Thanks for you attention,

Dan Marcus

 

<?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">

            <xs:complexType name="abstract_part1" abstract="true"/>

            <xs:complexType name="studyType1_part1">

                        <xs:complexContent>

                                    <xs:extension
base="abstract_part1"/>

                        </xs:complexContent>

            </xs:complexType>

            <xs:complexType name="studyType2_part1">

                        <xs:complexContent>

                                    <xs:extension
base="abstract_part1"/>

                        </xs:complexContent>

            </xs:complexType>

            <xs:complexType name="abstract_part2" abstract="true"/>

            <xs:complexType name="studyType1_part2">

                        <xs:complexContent>

                                    <xs:extension
base="abstract_part2"/>

                        </xs:complexContent>

            </xs:complexType>

            <xs:complexType name="studyType2_part2">

                        <xs:complexContent>

                                    <xs:extension
base="abstract_part2"/>

                        </xs:complexContent>

            </xs:complexType>

            <xs:complexType name="abstract_study" abstract="true">

                        <xs:sequence>

                                    <xs:element name="part1"
type="abstract_part1"/>

                                    <xs:element name="part2"
type="abstract_part2"/>

                        </xs:sequence>

            </xs:complexType>

            <xs:complexType name="studyType1">

                        <xs:annotation>

                                    <xs:documentation>This should
require parts 1 and 2 to use studyType1 parts</xs:documentation>

                        </xs:annotation>

                        <xs:complexContent>

                                    <xs:extension
base="abstract_study"/>

                        </xs:complexContent>

            </xs:complexType>

            <xs:complexType name="studyType2">

                        <xs:annotation>

                                    <xs:documentation>This should
require parts 1 and 2 to use studyType1 parts</xs:documentation>

                        </xs:annotation>

                        <xs:complexContent>

                                    <xs:extension
base="abstract_study"/>

                        </xs:complexContent>

            </xs:complexType>

            <xs:element name="StudyType1" type="studyType1"/>

            <xs:element name="StudyType2" type="studyType2"/>

</xs:schema>

 

________________________________

From: xmlschema-dev-request@w3.org [mailto:xmlschema-dev-request@w3.org]
On Behalf Of Daniel Marcus
Sent: Thursday, April 19, 2007 5:18 PM
To: xmlschema-dev@w3.org
Subject: schema extension question

 

Hi-

 

Hi-

 

My group is designing a schema for neuroimaging.  We're having trouble
tackling what seems like a basic problem.  We'd like to create
containers that have similar content, along these lines:

 

<StudyType1>

            <StudyType1_part1>Some complex content<StudyType1_part1>

            <StudyType1_part2>Different complex
content<StudyType1_part2>

</StudyType1>

<StudyType2>

            <StudyType2_part1> Some complex content <StudyType2_part1>

            <StudyType2_part2> Different complex content
<StudyType2_part2>

</StudyType1>

 

*_part1 derive from the same base type (abstract_part1) and *_part2
derive from a different base type (abstract_part2).  Additionally, we
want to enforce that for each study type, part1 and part2 are matched by
study type (i.e. StudyType1 includes only StudyType1_part* elements).

 

Is there an appropriate XML Schema representation for this?  We've tried
substitution, extension, restriction... Nothing seems to capture this
sort of content.  Any advice would be appreciated.

 

Regards, 

Dan Marcus
Received on Friday, 20 April 2007 14:53:55 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.