Altova Mailing List Archives>Archive Index >xml-dev Archive Home >Recent entries >Thread Prev - Elements declaration with same name in same complexType and name qualification [Thread Next] RE: [xml-dev] Elements declaration with same name in same complexType and name qualificationTo: "'Shlomo Yona'" <S.Yona@--.--->,<xml-dev@-----.---.---> Date: 5/29/2007 1:56:00 PM 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><o:p></o:p>
<xsd:element name="b"/><o:p></o:p>
<xsd:element name="c"/><o:p></o:p>
<xsd:element name="b"/><o:p></o:p>
</xsd:sequence><o:p></o:p>
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@F...]
Sent: 29 May 2007 14:13
To:
xml-dev@l...
Subject: [xml-dev] Elements declaration with
same name in same complexType and name qualification
Hello,<o:p></o:p>
<o:p> </o:p>
Is the following
considered valid or not?<o:p></o:p>
<o:p> </o:p>
Schema:<o:p></o:p>
<o:p> </o:p>
<?xml version="1.0"
encoding="UTF-8"?><o:p></o:p>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
targetNamespace="foo" xmlns="foo"><o:p></o:p>
<xsd:element name="a"><o:p></o:p>
<xsd:complexType><o:p></o:p>
<xsd:sequence><o:p></o:p>
<xsd:element name="b"/><o:p></o:p>
<xsd:element name="c"/><o:p></o:p>
<xsd:element name="b" form="unqualified"/><o:p></o:p>
</xsd:sequence><o:p></o:p>
</xsd:complexType><o:p></o:p>
</xsd:element><o:p></o:p>
</xsd:schema><o:p></o:p>
<o:p> </o:p>
<o:p> </o:p>
Instance:<o:p></o:p>
<o:p> </o:p>
<bar:a
xmlns:bar="foo"><o:p></o:p>
<bar:b/><o:p></o:p>
<bar:c/><o:p></o:p>
<b/><o:p></o:p>
</bar:a><o:p></o:p>
<o:p> </o:p>
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.<o:p></o:p>
<o:p> </o:p>
Thanks.<o:p></o:p>
<o:p> </o:p>
Shlomo.<o:p></o:p> | ||||||
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | Mobile | Full Site | |||
|
