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

RE: [XML Schema 1.1] Does mode="none" on a subtype nullify the openness of its parent type?

From: Costello, Roger L. <costello@mitre.org>
Date: Fri, 5 Jun 2009 12:17:34 -0400
To: "xmlschema-dev@w3.org" <xmlschema-dev@w3.org>
Message-ID: <9E51F88D5247B648908850C35A3BBB5003FD40C1A7@IMCMBX3.MITRE.ORG>

Hi Michael,

I don't understand.

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

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

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

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?

        <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?

Thanks again Michael.


> -----Original Message-----
> From: Michael Kay [mailto:mike@saxonica.com] 
> Sent: Friday, June 05, 2009 12:05 PM
> To: Costello, Roger L.; xmlschema-dev@w3.org
> Subject: RE: [XML Schema 1.1] Does mode="none" on a subtype 
> nullify the openness of its parent type?
> >  
> > Thanks Michael. So, by putting mode="none" on a subtype it is 
> > only prohibiting extension elements from being inserted 
> > around the subtypes' elements; extension elements can still 
> > be inserted around the parent type's elements. Is that correct?
> No!
> The content of an element is validated either against the 
> parent type P or
> against the subtype S. If it's validated against P then 
> "extension" elements
> are allowed; it it's validated against S then they aren't. 
> Which type is
> used for validation depends on the type defined in the 
> element declaration
> and/or the value of xsi:type on the instance.
> Regards,
> Michael Kay
> http://www.saxonica.com/
> http://twitter.com/michaelhkay 
Received on Friday, 5 June 2009 16:18:06 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 23:15:51 UTC