Re: <attribute use='prohibited'/> in complex type restrictions

can i give you my opinion...?

i think that, both of it available because phrase 3.2 below says {name} and {target namespace} needs only.

3.4.2 ComplexType definition.
{attribute uses} A union of sets of attribute uses as follows 
	1 The set of attribute uses corresponding to the <attribute> [children], if any. 
	2 The {attribute uses} of the attribute groups ,resolved, to by the ,actual value,s 
	 of the ref [attribute] of the <attributeGroup> [children], if any.  
	3 if the type definition ,resolved, to by the ,actual value, of the base [attribute] is a complex type definition, 
	 the {attribute uses} of that type definition, unless the <restriction> alternative is chosen, 
	 "in which case" some members of that type definition's {attribute uses} may not be included, 
	 namely those whose {attribute declaration}'s {name} and {target namespace} are the same as one of the following: 
	 3.1 the {name} and {target namespace} of the {attribute declaration} 
	   of an attribute use in the set per clause 1 or clause 2 above; 
	 3.2 what would have been the {name} and {target namespace} of the {attribute declaration}
	  of an attribute use in the set per clause 1 above but for the ,actual value, of the use [attribute] 
	  of the relevant <attribute> among the [children] of <restriction> being prohibited. 


and there is a good example in XMLSchema structure schema in appendix A.

<xs:complexType name="attribute">
  <xs:complexContent>
   <xs:extension base="xs:annotated">
    <xs:sequence>
     <xs:element name="simpleType" minOccurs="0" type="xs:localSimpleType"/>
    </xs:sequence>
    <xs:attributeGroup ref="xs:defRef"/>
    <xs:attribute name="type" type="xs:QName"/>
    <xs:attribute name="use" use="optional" default="optional">
     <xs:simpleType>
      <xs:restriction base="xs:NMTOKEN">
       <xs:enumeration value="prohibited"/>
       <xs:enumeration value="optional"/>
       <xs:enumeration value="required"/>
      </xs:restriction>
     </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="default" type="xs:string"/>
    <xs:attribute name="fixed" type="xs:string"/>
    <xs:attribute name="form" type="xs:formChoice"/>
   </xs:extension>
  </xs:complexContent>
 </xs:complexType>
 
 <xs:complexType name="topLevelAttribute">
  <xs:complexContent>
   <xs:restriction base="xs:attribute">
    <xs:sequence>
     <xs:element ref="xs:annotation" minOccurs="0"/>
     <xs:element name="simpleType" minOccurs="0" type="xs:localSimpleType"/>
    </xs:sequence>
    <xs:attribute name="ref" use="prohibited"/>
    <xs:attribute name="form" use="prohibited"/>
    <xs:attribute name="use" use="prohibited"/>
    <xs:attribute name="name" use="required" type="xs:NCName"/>
   </xs:restriction>
  </xs:complexContent>
 </xs:complexType>

thank you for your question.
it derives me more deep understand of attribute... ^ ^;

Received on Tuesday, 3 July 2001 22:11:08 UTC