W3C home > Mailing lists > Public > www-xml-schema-comments@w3.org > July to September 2000

Re: XML Schema Question

From: <Noah_Mendelsohn@lotus.com>
Date: Fri, 29 Sep 2000 17:18:14 -0400
To: Helena Cavanagh <helena.cavanagh@usa.net>
Cc: www-xml-schema-comments@w3.org
Message-ID: <OFD5F85315.AE89BFC0-ON85256969.0072AB4F@lotus.com>
I think I understand Helen's confusion, as at least one other reader of 
the schemas draft has asked me about the same point.

Declaring a global element does NOT directly allow that element to appear 
in arbitrary points in the validated XML instance document.  Except when 
used as the root element (see Henry's note), global elements are available 
for reference when building content models.  Only the global elements you 
actually reference from a content model (or allow through use of 
wildcards) can appear in valid content. 

        <xsd:element name="a" .... />
        <xsd:element name="b" .... />
        <xsd:element name="c" .... />

        <xsd:element name="x">
                <xsd:complexType> 
                        <xsd:sequence>
                                <xsd:element ref="b"/>
                                <xsd:element ref="c"/>
                        </xsd:sequence>
                </xsd:complexType> 
        </xsd:element name="x">

The global elements named "b" and "c" must occur as children of "x" in the 
instance document; global element "a" is not legal within "x".  Depending 
how the processor is invoked, any of "a", "b", "c" or "x" might be usable 
as the root of the validation (which might mean as the root of the whole 
document, or it might mean that you are validating only part of the 
document.)

I think the confusion probably arises because readers see the term 
"global" and presume it to mean "anywhere in the instance document".  In 
fact, it means "available for use in any content model in the schema".  By 
contrast, "local" elements can only be used in the content model of the 
corresponding (scoping) complex type. Another way to think about this is 
that global element declarations in schemas give you the same capabilities 
as the element type declarations in XML 1.0 DTDs.  Local declarations are 
an enhancement in schemas, allowing  the same name to be used for 
different purposes according to context.  If you were doing a straight 
conversion from a DTD to a schema, most likely all the resulting element 
declarations would be global. 

I hope this clarifies the use and significance of global elements.   Thank 
you.

------------------------------------------------------------------------
Noah Mendelsohn                                    Voice: 1-617-693-4036
Lotus Development Corp.                            Fax: 1-617-693-8676
One Rogers Street
Cambridge, MA 02142
------------------------------------------------------------------------
Received on Friday, 29 September 2000 17:22:33 UTC

This archive was generated by hypermail 2.3.1 : Wednesday, 7 January 2015 14:49:53 UTC