Re: attributes with prefix in schema

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