- From: Priscilla Walmsley <pwalmsley@vitria.com>
- Date: Wed, 2 Jan 2002 11:46:23 -0800
- To: "Slein, Judith A" <JSlein@crt.xerox.com>, "Jeni Tennison" <jeni@jenitennison.com>, <xmlschema-dev@w3.org>
- Cc: "Priscilla Walmsley" <priscilla@walmsley.com>, "Kurian, Binil" <BKurian@crt.xerox.com>, "Sembower, Neil R" <NSembower@crt.xerox.com>, "Graham Mann" <gmann@adobe.com>
Hi Judy, As far as a definitive answer about ##other, it definitely does not allow elements in no namespace. The working group is currently writing up an erratum description to correct the contradiction in the specification. As for you new example, I don't see an ambiguity because as Jeni said, the JDFChildElements_ are qualified with the other namespace, and ResourceLinkPool is unqualified. However, if the form of the ResourceLinkPool element _were_ qualified, it would be ambiguous because it would conform to the ##other wildcard. The wildcard, like the element declarations, takes on the namespace of the schema document in which it is declared. So, in your case, ##other means "any element that is in a namespace other than "http://www.CIP4.org/JDFSchema_1". Since all the elements in the type are optional, if the processor encountered an em:ResourceLinkPool element it would not know if it matched the wildcard or the element declaration. Hope that helps, Priscilla ------------------------------------------------------------------ Priscilla Walmsley priscilla@walmsley.com Vitria Technology http://www.vitria.com Author, Definitive XML Schema (Prentice Hall PTR) ------------------------------------------------------------------ > -----Original Message----- > From: xmlschema-dev-request@w3.org > [mailto:xmlschema-dev-request@w3.org]On Behalf Of Slein, Judith A > Sent: Wednesday, January 02, 2002 11:29 AM > To: 'Jeni Tennison'; xmlschema-dev@w3.org > Cc: Priscilla Walmsley; Slein, Judith A; Kurian, Binil; Sembower, Neil > R; 'Graham Mann' > Subject: RE: Semantics of elementFormDefault / Form > > > Thanks to Jeni and Priscilla for their comments on these > questions about > namespaces. It's disappointing that there seems to be no > definitive answer > to whether an element that is in no namespace should be treated as in > ##other or not. > > Here is another confusing case (for which Xerces and IBM > Schema Quality > Checker give different results): From my namespace I > reference a group that > was defined in another namespace. The namespace where the > group is defined > has elementFormDefault="qualified". To which namespace do > the elements > contained in the group belong when used in their new context? > To complicate > the situation further, the group being referenced contains a wildcard > declaration with ##other. > > Here is a definition in my namespace: > > <schema > targetNamespace="http://www.xerox.com/XMLSchemas/Services/Emai > lDistMsgLayer" > xmlns:em="http://www.xerox.com/XMLSchemas/Services/EmailDistMsgLayer" > xmlns:jdf="http://www.CIP4.org/JDFSchema_1" > xmlns="http://www.w3.org/2001/XMLSchema"> > <import namespace="http://www.CIP4.org/JDFSchema_1" > schemaLocation="JDF.xsd"/> > . . . > <complexType name="EmailDistribution"> > <complexContent> > <extension base="jdf:JDFBaseType_"> > <sequence minOccurs="0" maxOccurs="unbounded"> > <group ref="jdf:JDFChildElements_"/> > <element name="ResourceLinkPool" > type="em:EmailDistResLinkPool_" > minOccurs="0"/> > </sequence> > <attribute name="Type" type="NMTOKEN" use="required"/> > </extension> > </complexContent> > </complexType> > </schema> > > The group JDFChildElements_ is defined in another namespace: > > <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" > xmlns:jdf="http://www.CIP4.org/JDFSchema_1" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > targetNamespace="http://www.CIP4.org/JDFSchema_1" > elementFormDefault="qualified" attributeFormDefault="unqualified"> > > <xsd:group name="GenericElements"> > <xsd:sequence> > <xsd:element ref="jdf:Comment" minOccurs="0"/> > <xsd:any namespace="##other" processContents="lax" > minOccurs="0"/> > </xsd:sequence> > </xsd:group> > > <xsd:group name="JDFChildElements_"> > <xsd:sequence> > <xsd:group ref="jdf:GenericElements" minOccurs="0"/> > <xsd:element name="AncestorPool" > type="jdf:AncestorPool_" > minOccurs="0"/> > <xsd:element name="AuditPool" type="jdf:AuditPool_" > minOccurs="0"/> > <xsd:element name="CustomerInfo" > type="jdf:CustomerInfo_" > minOccurs="0"/> > <xsd:element name="NodeInfo" type="jdf:NodeInfo_" > minOccurs="0"/> > <xsd:element name="ResourcePool" > type="jdf:ResourcePool_" > minOccurs="0"/> > <xsd:element name="StatusPool" type="jdf:StatusPool_" > minOccurs="0"/> > <xsd:element ref="jdf:JDF" minOccurs="0"/> > </xsd:sequence> > </xsd:group> > > </xsd:schema> > > Now whether there should be ambiguous content model errors > here depends > partly on the resolution of the earlier issue about > no-namespace elements > and ##other, and partly on which namespace the elements in > jdf:JDFChildElements_ belong to when they occur inside an > element of type > em:EmailDistribution (and where the wildcard in > jdf:JDFChildElements_ is > understood as having been declared). > > Thanks for any help you can provide in clarifying this case. > > --Judy > > -----Original Message----- > From: Jeni Tennison [mailto:jeni@jenitennison.com] > Sent: Wednesday, December 19, 2001 6:41 AM > To: xmlschema-dev@w3.org > Cc: Priscilla Walmsley; 'Slein, Judith A'; 'Kurian, Binil'; 'Sembower, > Neil R'; 'Graham Mann' > Subject: Re: Semantics of elementFormDefault / Form > > > Priscilla Walmsley wrote: > > With namespace="##other", you should _never_ get an ambiguous > > content model error, because ##other means that the elements > > matching the wildcard _must_ be in a namespace. Since unqualified > > local elements must _not_ be in a namespace, there is no ambiguity. > > Hmm... I think that there's a contradiction in the Rec. > > In the Rec it says that when namespace="##other", the {namespace > constraint} of the wildcard schema component is: > > "a pair of not and the actual value of the targetNamespace attribute > of the schema ancestor element information item if present, > otherwise absent." > > In the description of the {namespace constraint} of the wildcard > schema component, it says that the {namespace constraint} provides for > validation of element items that: > > "(not and a namespace name) have any namespace other than the > specified namespace name, or are not namespace qualified;" > ============================== > > Which I think implies that wildcards with namespace=##other do match > unqualified elements. > > But later on in "Validation Rule: Wildcard allows Namespace Name" it > says: > > For a value which is either a namespace name or ·absent· to be > ·valid· with respect to a wildcard constraint (the value of a > {namespace constraint}) one of the following must be true: > > 2 All of the following must be true: > 2.1 The constraint is a pair of not and a namespace name or > ·absent· ([Definition:] call this the namespace test). > 2.2 The value must not be identical to the ·namespace test·. > 2.3 The value must not be ·absent·. > > Which I think implies that wildcards with namespace=##other do not > match unqualified elements (since their namespace name is absent). > > If the description of {namespace constraint} summarises the intention, > the validation rule should be changed, so that it does not include > clause 2.3. If the validation rule defines the intention, then the > description of the {namespace constraint} should be changed, to remove > the ", or are not namespace qualified". > > Cheers, > > Jeni > > --- > Jeni Tennison > http://www.jenitennison.com/ > >
Received on Wednesday, 2 January 2002 14:47:36 UTC