- From: Curt Arnold <carnold@houston.rr.com>
- Date: Fri, 21 Jul 2000 09:58:59 -0500
- To: <xerces-j-dev@xml.apache.org>
- Cc: <www-xml-schema-comments@w3.org>
I've crossposted this response (which includes your message originally posted on xerces-j-dev@xml.apache.org) to www-xml-schema-comments@w3.org (see http://www.w3.org/Mail/Request for subscription info). The W3C comments list is the best forum for comments on the spec itself and not just the Xerces implementation of it. I had some of the questions myself about how the <any> element deals with elements that are not in any namespace, but I hadn't looked throughly enough to formulate a comment. The use of ##local to represent an element that is not associated with a namespace is probably a poor choice of words. I would have thought ##unqualified or ##namespaceAbsent would be clearer and mimimize confusion with ##targetNamespace. I'm not sure what you mean in question 2 about "encoding". Typically that word is used to indicate how characters are represented in memory or on disk, such as an particular code page, EBCDIC, UTF-8, UTF-16, etc. You could on the element that has an <any/> particle in its content model specify an "xsi:type" that indicated a more restricted content model should be used for validation. In question 3, I don't see why that would be a problem. Maybe I misunderstand your questions. You schema from part 4 is not valid due to the a violation of the Unique Particle Attribution requirement that says that it not legal to have a schema where one element could potentially be attributed to two particles of the content model. Since a <trn:A> element could both satisfy the explicit element particle or the any particle, the schema isn't valid. > <schema ... targetNamespace="URI_TNS" xmlns:tns="URI_TNS"> > <element name="A" type="string"/> > <element name="B"> > <complexType> > <element ref="tns:A" minOccurs="0" maxOccurs="1"/> > <any namespace="##targetNamespace" minOccurs="1" maxOccurs="1" > processContents="strict"/> > </complexType> > </element> > </schema> This one could be rewritten equivalently without the <element ref="tns:A"> particle. > <schema ... targetNamespace="URI_TNS" xmlns:tns="URI_TNS"> > <element name="A" type="string"/> > <element name="B"> > <complexType> > <any namespace="##targetNamespace" minOccurs="1" maxOccurs="2" > processContents="strict"/> > </complexType> > </element> > </schema> I have suggested an <exclude> child element for any that would allow you to specifically exclude a particular name from matching an <any> particle. ------------------ Original message on xerces-j-dev@xml.apache.org Subject: Schema and ANY questions Date: Fri, 21 Jul 2000 14:30:18 +0200 From: "Jean-Louis Vila" <jlvila@cosmosbay.com> Reply-To: xerces-j-dev@xml.apache.org, <jlvila@cosmosbay.com> To: "Mailing list Xerces-J" <xerces-j-dev@xml.apache.org> Hi, I work since severals weeks on Schema structure&datatypes. Many interrogations raise when I read WD 4/7 about "any" element. 1 - I found rules about any & namespaces very vague ! 2 - When I define an ANY element in my Schema, in the instance document,how can we specify the encoding of the input fragment XML ? 3 - I guess that validating a schema instance with no targetNamespace and an any element with namespace="##local" will be impossible to realized!! I don't find any rule about this case. 4 - Case of schema defined with a targetNamespace and an "any" element defined with namespace="##targetNamespace" In an instance document, how can we detect that an element come from "any" element or an element explicitly defined in the schema ? Ex: ----Here the schema---- <schema ... targetNamespace="URI_TNS" xmlns:tns="URI_TNS"> <element name="A" type="string"/> <element name="B"> <complexType> <element ref="tns:A" minOccurs="0" maxOccurs="1"/> <any namespace="##targetNamespace" minOccurs="1" maxOccurs="1" processContents="strict"/> </complexType> </element> </schema> ----Here an instance schema---- <A> <B/> <!-- B is come from "any" or is it the first element of "A" ? --> </A> Results: . if B is the first element of "A", this instance is non-valid. . if B is the root element of "any", this instance is valid. Here is the problem ! The only way to solve this problem, is to consider the "any" XML document as self-supporting XML document. In this way, the "B" element will contain the definition of namespace in it (xmlns attribute). ----Ex1---- <A> <B/> <!-- Here B is the first element of "A" </A> ----Ex2---- <A> <B xmlns="URI_TNS"/> <!-- Here B is the root element of "any" element --> </A> So we can say: Ex1 --> non-valid Ex2 --> valid Any opinions will be appreciated, Jean-Louis Vila C o s m o s B a y L'Esprit Système Internet 84, rue du 1er mars 1943 69625 Villeurbanne Cedex - France tel +33 (0)4.72.65.21.00 fax +33 (0)4.78.85.58.24
Received on Friday, 21 July 2000 11:18:55 UTC