Daniel Veillard | 3646d64 | 2004-06-02 19:19:14 +0000 | [diff] [blame] | 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 | |