1<?xml version="1.0" encoding="ISO-8859-1"?>
2<xsd:schema xmlns:foo="http://FOO" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:import="http://IMPORT"
3	targetNamespace="http://FOO" elementFormDefault="qualified">
4	<xsd:import namespace="http://IMPORT" schemaLocation="anyAttr.importA.1_0.xsd"/>	
5	<xsd:import schemaLocation="anyAttr.importB.1_0.xsd"/>
6	<xsd:element name="foo">
7		<xsd:complexType>
8		    <xsd:sequence>
9				<!-- Import -->
10				<xsd:element ref="import:imp.element"/>							
11				<xsd:element name="imp.attribute">
12					<xsd:complexType>
13						<xsd:attribute ref="import:imp.attribute"/>
14					</xsd:complexType>
15				</xsd:element>	
16				<xsd:element name="imp.group">
17					<xsd:complexType>
18						<xsd:group ref="import:imp.group"/>
19					</xsd:complexType>
20				</xsd:element>	
21				<!-- Basic -->
22				<xsd:element name="basic.A" type="foo:type.basic.A"/>
23				<xsd:element name="basic.B" type="foo:type.basic.B"/>
24				<xsd:element name="basic.C" type="foo:type.basic.C"/>
25				<xsd:element name="basic.D" type="foo:type.basic.D"/>
26				<xsd:element name="basic.E" type="foo:type.basic.E"/>
27				<!-- Attribute Wildcard Intersection -->
28				<xsd:element name="inters.1_1" type="foo:type.inters.1_1"/>
29				<xsd:element name="inters.1_2" type="foo:type.inters.1_2"/>
30				<xsd:element name="inters.1_3" type="foo:type.inters.1_3"/>
31				<xsd:element name="inters.1_4" type="foo:type.inters.1_4"/>
32
33				<xsd:element name="inters.2_1" type="foo:type.inters.2_1"/>
34
35				<xsd:element name="inters.3_1" type="foo:type.inters.3_1"/>
36
37				<xsd:element name="inters.4_1" type="foo:type.inters.4_1"/>
38
39				<!--xsd:element name="inters.5_1" type="type.inters.5_1"/-->
40				<xsd:element name="inters.6_1" type="foo:type.inters.6_1"/>
41			</xsd:sequence>
42		</xsd:complexType>
43	</xsd:element>
44	
45	<!-- Basic -->
46	<xsd:complexType name="type.basic.A">				
47		<xsd:anyAttribute namespace="##any" processContents="lax"/>	
48	</xsd:complexType>
49	<xsd:complexType name="type.basic.B">				
50		<xsd:anyAttribute namespace="##other" processContents="lax"/>	
51	</xsd:complexType>
52	<xsd:complexType name="type.basic.C">				
53		<xsd:anyAttribute namespace="##local" processContents="lax"/>	
54	</xsd:complexType>
55	<xsd:complexType name="type.basic.D">				
56		<xsd:anyAttribute namespace="##targetNamespace" processContents="lax"/>	
57	</xsd:complexType>
58	<xsd:complexType name="type.basic.E">				
59		<xsd:anyAttribute namespace="##targetNamespace ##local http://BAR" processContents="lax"/>	
60	</xsd:complexType>
61	<!-- Attribute Wildcard Intersection -->
62
63	<!-- 1. If O1 and O2 are the same value, then that value must be the value. -->
64	<xsd:complexType name="type.inters.1_1">	
65		<xsd:attributeGroup ref="foo:attrGr.inters.1_1"/>			
66		<xsd:anyAttribute namespace="##any" processContents="lax"/>	
67	</xsd:complexType>
68	<xsd:attributeGroup name="attrGr.inters.1_1">
69		<xsd:anyAttribute namespace="##any"/>
70	</xsd:attributeGroup>
71	<xsd:complexType name="type.inters.1_2">	
72		<xsd:attributeGroup ref="foo:attrGr.inters.1_2"/>			
73		<xsd:anyAttribute namespace="##other" processContents="lax"/>	
74	</xsd:complexType>
75	<xsd:attributeGroup name="attrGr.inters.1_2">
76		<xsd:anyAttribute namespace="##other"/>
77	</xsd:attributeGroup>
78	<xsd:complexType name="type.inters.1_3">	
79		<xsd:attributeGroup ref="foo:attrGr.inters.1_3"/>			
80		<xsd:anyAttribute namespace="##local ##targetNamespace" processContents="lax"/>	
81	</xsd:complexType>
82	<xsd:attributeGroup name="attrGr.inters.1_3">
83		<xsd:anyAttribute namespace="##local  ##targetNamespace"/>
84	</xsd:attributeGroup>
85	<xsd:complexType name="type.inters.1_4">	
86		<xsd:attributeGroup ref="foo:attrGr.inters.1_4"/>			
87		<xsd:anyAttribute namespace="##local http://BAR   ##targetNamespace " processContents="lax"/>	
88	</xsd:complexType>
89	<xsd:attributeGroup name="attrGr.inters.1_4">
90		<xsd:anyAttribute namespace="  ##targetNamespace  http://BAR ##local"/>
91	</xsd:attributeGroup>
92
93	<!-- 2. If either O1 or O2 is any, then the other must be the value. -->
94	<xsd:complexType name="type.inters.2_1">	
95		<xsd:attributeGroup ref="foo:attrGr.inters.2_1"/>			
96		<xsd:anyAttribute namespace="##any" processContents="lax"/>	
97	</xsd:complexType>
98	<xsd:attributeGroup name="attrGr.inters.2_1">
99		<xsd:anyAttribute namespace="##local ##targetNamespace"/>
100	</xsd:attributeGroup>
101	<!-- 3. If either O1 or O2 is a pair of not and a value (a namespace name or �absent�) 
102	  and the other is a set of (namespace names or �absent�), then that set, minus the 
103	  negated value if it was in the set, minus �absent� if it was in the set, must be the value. -->
104	<xsd:complexType name="type.inters.3_1">	
105		<xsd:attributeGroup ref="foo:attrGr.inters.3_1"/>			
106		<xsd:anyAttribute namespace="##other" processContents="lax"/>	
107	</xsd:complexType>
108	<xsd:attributeGroup name="attrGr.inters.3_1">
109		<xsd:anyAttribute namespace="##local ##targetNamespace http://BAR"/>
110	</xsd:attributeGroup>
111	<!-- 4. If both O1 and O2 are sets of (namespace names or �absent�), then the 
112	  intersection of those sets must be the value. -->
113	<xsd:complexType name="type.inters.4_1">	
114		<xsd:attributeGroup ref="foo:attrGr.inters.4_1"/>			
115		<xsd:anyAttribute namespace="##local ##targetNamespace http://BAR" processContents="lax"/>	
116	</xsd:complexType>
117	<xsd:attributeGroup name="attrGr.inters.4_1">
118		<xsd:anyAttribute namespace="##local ##targetNamespace"/>
119	</xsd:attributeGroup>
120	<!-- 5. If the two are negations of different namespace names, 
121	  then the intersection is not expressible. -->
122	  <!--
123	<xsd:complexType name="type.inters.5_1">	
124		<xsd:attributeGroup ref="import:attrGr.inters.5_1"/>			
125		<xsd:anyAttribute namespace="##other" processContents="lax"/>	
126	</xsd:complexType>
127	-->
128	<!--6. If the one is a negation of a namespace name and the other is a negation of �absent�, 
129	  then the one which is the negation of a namespace name must be the value. 
130
131	  This one uses an attribute group from an imported schema with no targetNamespace.
132	-->
133	<xsd:complexType name="type.inters.6_1">	
134		<xsd:attributeGroup ref="attrGr.inters.6_1"/>			
135		<xsd:anyAttribute namespace="##other" processContents="lax"/>	
136	</xsd:complexType>
137
138	<xsd:attributeGroup name="attrGrA">
139		<xsd:anyAttribute namespace="##targetNamespace"/>
140	</xsd:attributeGroup> 
141
142</xsd:schema>
143
144
145