W3C home > Mailing lists > Public > xmlschema-dev@w3.org > June 2009

[XML Schema 1.1] [Summary] Five questions about openContent when used with a type and subtype

From: Costello, Roger L. <costello@mitre.org>
Date: Fri, 5 Jun 2009 13:44:39 -0400
To: "xmlschema-dev@w3.org" <xmlschema-dev@w3.org>
Message-ID: <9E51F88D5247B648908850C35A3BBB5003FD40C1AD@IMCMBX3.MITRE.ORG>

Hi Folks,

Here are five questions I have about openContent when used with a type and subtype.


QUESTION #1

Consider this base type (with mode="interleave") and a subtype:

    <complexType name="Publication" abstract="true">
        <openContent mode="interleave">
            <any />
        </openContent>
        <sequence>
            <element name="Title" type="string" />
            <element name="Author" type="string" />
            <element name="Date" type="gYear"/>
        </sequence>
    </complexType>

    <complexType name="BookPublication">
        <complexContent>
            <extension base="pub:Publication">
                <sequence>
                    <element name="ISBN" type="string"/>
                    <element name="Publisher" type="string"/>
                </sequence>
            </extension>
        </complexContent>
    </complexType>

Now I declare the <Book> element to be of type BookPublication:

    <element name="Book" type="pub:BookPublication">

In the instance document, can I insert extension elements around the base type elements: Title, Author, Date? How about around the subtype elements: ISBN, Publisher?

    <Book>
        <Title>My Life and Times</Title> <-- around here?
        <Author>Paul McCartney</Author> <-- around here?
        <Date>1998</Date> <-- around here?
        <ISBN>1-56592-235-2</ISBN> <-- around here?
        <Publisher>McMillin Publishing</Publisher> <-- around here?
    </Book>


QUESTION #2

Consider this base type (with mode="interleave") and subtype (with mode="none"):

    <complexType name="Publication" abstract="true">
        <openContent mode="interleave">
            <any />
        </openContent>
        <sequence>
            <element name="Title" type="string" />
            <element name="Author" type="string" />
            <element name="Date" type="gYear"/>
        </sequence>
    </complexType>

    <complexType name="BookPublication">
        <complexContent>
            <extension base="pub:Publication">
                <openContent mode="none">
                    <any />
                </openContent>
                <sequence>
                    <element name="ISBN" type="string"/>
                    <element name="Publisher" type="string"/>
                </sequence>
            </extension>
        </complexContent>
    </complexType>

Now I declare the <Book> element to be of type BookPublication:

    <element name="Book" type="pub:BookPublication">

In the instance document, can I insert extension elements around the base type elements: Title, Author, Date? How about around the subtype elements: ISBN, Publisher?

    <Book>
        <Title>My Life and Times</Title> <-- around here?
        <Author>Paul McCartney</Author> <-- around here?
        <Date>1998</Date> <-- around here?
        <ISBN>1-56592-235-2</ISBN> <-- around here?
        <Publisher>McMillin Publishing</Publisher> <-- around here?
    </Book>

-- From Michael's latest message, 
-- this is an invalid schema. Yes?


QUESTION #3

Consider this base type and subtype (with mode="interleave"):

    <complexType name="Publication" abstract="true">
        <sequence>
            <element name="Title" type="string" />
            <element name="Author" type="string" />
            <element name="Date" type="gYear"/>
        </sequence>
    </complexType>

    <complexType name="BookPublication">
        <complexContent>
            <extension base="pub:Publication">
                <openContent mode="interleave">
                    <any />
                </openContent>
                <sequence>
                    <element name="ISBN" type="string"/>
                    <element name="Publisher" type="string"/>
                </sequence>
            </extension>
        </complexContent>
    </complexType>

Now I declare the <Book> element to be of type BookPublication:

    <element name="Book" type="pub:BookPublication">

In the instance document, can I insert extension elements around the base type elements: Title, Author, Date? How about around the subtype elements: ISBN, Publisher?

    <Book>
        <Title>My Life and Times</Title> <-- around here?
        <Author>Paul McCartney</Author> <-- around here?
        <Date>1998</Date> <-- around here?
        <ISBN>1-56592-235-2</ISBN> <-- around here?
        <Publisher>McMillin Publishing</Publisher> <-- around here?
    </Book>



QUESTION #4

Consider this base type (mode="suffix") and subtype (with mode="interleave"):

    <complexType name="Publication" abstract="true">
        <openContent mode="suffix">
            <any />
        </openContent>
        <sequence>
            <element name="Title" type="string" />
            <element name="Author" type="string" />
            <element name="Date" type="gYear"/>
        </sequence>
    </complexType>

    <complexType name="BookPublication">
        <complexContent>
            <extension base="pub:Publication">
                <openContent mode="interleave">
                    <any />
                </openContent>
                <sequence>
                    <element name="ISBN" type="string"/>
                    <element name="Publisher" type="string"/>
                </sequence>
            </extension>
        </complexContent>
    </complexType>

Now I declare the <Book> element to be of type BookPublication:

    <element name="Book" type="pub:BookPublication">

In the instance document, can I insert extension elements around the base type elements: Title, Author, Date? How about around the subtype elements: ISBN, Publisher?

    <Book>
        <Title>My Life and Times</Title> <-- around here?
        <Author>Paul McCartney</Author> <-- around here?
        <Date>1998</Date> <-- around here?
        <ISBN>1-56592-235-2</ISBN> <-- around here?
        <Publisher>McMillin Publishing</Publisher> <-- around here?
    </Book>



QUESTION #5

Consider this base type (mode="interleave") and subtype (with mode="suffix"):

    <complexType name="Publication" abstract="true">
        <openContent mode="interleave">
            <any />
        </openContent>
        <sequence>
            <element name="Title" type="string" />
            <element name="Author" type="string" />
            <element name="Date" type="gYear"/>
        </sequence>
    </complexType>

    <complexType name="BookPublication">
        <complexContent>
            <extension base="pub:Publication">
                <openContent mode="suffix">
                    <any />
                </openContent>
                <sequence>
                    <element name="ISBN" type="string"/>
                    <element name="Publisher" type="string"/>
                </sequence>
            </extension>
        </complexContent>
    </complexType>

Now I declare the <Book> element to be of type BookPublication:

    <element name="Book" type="pub:BookPublication">

In the instance document, can I insert extension elements around the base type elements: Title, Author, Date? How about around the subtype elements: ISBN, Publisher?

    <Book>
        <Title>My Life and Times</Title> <-- around here?
        <Author>Paul McCartney</Author> <-- around here?
        <Date>1998</Date> <-- around here?
        <ISBN>1-56592-235-2</ISBN> <-- around here?
        <Publisher>McMillin Publishing</Publisher> <-- around here?
    </Book>

/Roger
Received on Friday, 5 June 2009 17:45:14 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 11 January 2011 00:15:12 GMT