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 |
|
---|