Oxygen XML Editor
 
[XML-DEV Mailing List Archive Home] [By Thread] [By Date]

RE: [xml-dev] Elements declaration with same name in same complexType and name qualification


  • From: "Michael Kay" <mike@...>
  • To: "'Shlomo Yona'" <S.Yona@...>,<xml-dev@...>
  • Date: Tue, 29 May 2007 14:55:23 +0100

Yes, it's valid. It would be valid even if you changed the third particle to
 
<xsd:element name="b" form="unqualified" type="xsd:int"/>
 
because although the two "b" elements now have different types, they also have different names - one is qualified and the other isn't.
 
The clause that I think you are worried about is:
 
Schema Component Constraint: Element Declarations Consistent
If the {particles} contains, either directly, indirectly (that is, within the {particles} of a contained model group, recursively) or ·implicitly· two or more element declaration particles with the same {name} and {target namespace}, then all their type definitions must be the same top-level definition,
 
and in this case, your two element declaration particles have a different {target namespace}, so the rule doesn't apply.
 
If you change the content model to
 
                     <xsd:sequence>

                                <xsd:element name="b"/>

                                <xsd:element name="c"/>

                                <xsd:element name="b"/>

                        </xsd:sequence>

 
Then it's still valid because the two "b" elements both have the same type. (It's not 100% clear that xs:anyType is a "top-level" type definition - the term "top-level" doesn't seem to be defined anywhere - but the rule as quoted above is followed by further explanation which makes it clear). 
 
Michael Kay
http://www.saxonica.com/


From: Shlomo Yona [mailto:S.Yona@...]
Sent: 29 May 2007 14:13
To: xml-dev@...
Subject: [xml-dev] Elements declaration with same name in same complexType and name qualification

Hello,

 

Is the following considered valid or not?

 

Schema:

 

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

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="foo" xmlns="foo">

        <xsd:element name="a">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element name="b"/>

                                <xsd:element name="c"/>

                                <xsd:element name="b" form="unqualified"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>

</xsd:schema>

 

 

Instance:

 

<bar:a xmlns:bar="foo">

      <bar:b/>

      <bar:c/>

      <b/>

</bar:a>

 

I think it should be valid because the two local declarations of the element b have the same data type, anyType, in this case. I could not feel confident with my understanding, though, as I did not read that this is OK in the standard.

 

Thanks.

 

Shlomo.



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]
 
© 2002-2008 SyncRO Soft Ltd. All rights reserved. | Sitemap | Privacy Policy
This website was created & generated with <oXygen/> XML Editor