- From: Henry S. Thompson <ht@cogsci.ed.ac.uk>
- Date: 20 Jun 2001 14:00:56 +0100
- To: sandygao@ca.ibm.com
- Cc: xmlschema-dev@w3.org
sandygao@ca.ibm.com writes: > Hi all. I'm trying to understand how to process attributes with prefix in > schema. > > The following segment is from "schema for schemas": > > <xs:complexType name="openAttrs"> > <xs:annotation> > <xs:documentation> > This type is extended by almost all schema types > to allow attributes from other namespaces to be > added to user schemas. > </xs:documentation> > </xs:annotation> > <xs:complexContent> > <xs:restriction base="xs:anyType"> > <xs:anyAttribute namespace="##other" processContents="lax"/> > </xs:restriction> > </xs:complexContent> > </xs:complexType> > > I have three questions: > > 1. "This type is extended by almost all schema types to allow attributes > from other namespaces to be added to user schemas." How about attributes > from the schema namespace? Not allowed -- definition of ##other means 'qualified, but not with targetNamespace' For example: > <xsd:element name="ele" type="xsd:string" xsd:use="invalid"/> > Is "xsd:use" considered to be the same as "use", or is it not allowed to > appear? No, so yes, it's not allowed. > 2. Does anyone know what are the exceptions of "almost all schema types"? I > went through all XML Representations of schema elements. It seems to me > that "{any attributes with non-schema namespace . . .}" doesn't appear in > "group", "appInfo", and "document", so I suspect that these 3 doesn't allow > attributes from other namespaces. Then I checked the schema for schemas, > but "group" seems to have two different types: groupRef and namedGroup, > where the first one extends "openAttrs" and the second one doesn't. Is this > an errata? I would think that "group" should also allow attributes from > other namespaces. (Otherwise, what makes it so different from others?) Good catch -- I think you're right and namedGroup should be derived from annotated (and thence from openAttrs). > 3. Notice that processContents="lax", so it means we should validate those > attributes if we can find the declarations. Then where are we supposed to > find such declarations? Consider an example: > > <xsd:schema xmlns:xsd="..." xmlns:test="test" targetNamespace="test"> > <xsd:attribute name="att" type="xsd:decimal"/> > <xsd:element name="ele" test:att="invalid"/> > </xsd:schema> > > Then are we supposed to validate "test:att" against the type "xsd:decimal"? It would be odd to do it that way, but I guess it might work. The normal way to do it would be to define the annotation namespace in a separate schema document, and make that available at validation time (either via 'schemaLocation' or by direct provision to the schema processor, e.g. on the command line). ht -- Henry S. Thompson, HCRC Language Technology Group, University of Edinburgh W3C Fellow 1999--2001, part-time member of W3C Team 2 Buccleuch Place, Edinburgh EH8 9LW, SCOTLAND -- (44) 131 650-4440 Fax: (44) 131 650-4587, e-mail: ht@cogsci.ed.ac.uk URL: http://www.ltg.ed.ac.uk/~ht/
Received on Wednesday, 20 June 2001 09:00:55 UTC