Daniel Veillard | 50355f0 | 2004-06-08 17:52:16 +0000 | [diff] [blame] | 1 | <?xml version="1.0" encoding="ISO-8859-1" ?> |
| 2 | <!-- |
| 3 | Schema Component Constraint: Derivation Valid (Restriction, Complex) |
| 4 | |
| 5 | 4 If there is an {attribute wildcard}, all of the following must be true: |
| 6 | |
| 7 | 4.1 The {base type definition} must also have one. |
| 8 | |
| 9 | 4.2 The complex type definition's {attribute wildcard}'s {namespace constraint} |
| 10 | must be a subset of the {base type definition}'s {attribute wildcard}'s {namespace |
| 11 | constraint}, as defined by Wildcard Subset (§3.10.6). |
| 12 | |
| 13 | 4.3 Unless the {base type definition} is the ·ur-type definition·, the complex type |
| 14 | definition's {attribute wildcard}'s {process contents} must be identical to or stronger |
| 15 | than the {base type definition}'s {attribute wildcard}'s {process contents}, |
| 16 | where strict is stronger than lax is stronger than skip. |
| 17 | --> |
| 18 | <schema xmlns="http://www.w3.org/2001/XMLSchema" |
| 19 | targetNamespace="http://FOO" |
| 20 | xmlns:foo="http://FOO" |
| 21 | > |
| 22 | |
| 23 | <element name="foo"> |
| 24 | <complexType> |
| 25 | <sequence> |
| 26 | <element name="bar.A" type="foo:type.A" /> |
| 27 | <element name="bar.B" type="foo:type.B" /> |
| 28 | <element name="bar.C" type="foo:type.C" /> |
| 29 | </sequence> |
| 30 | </complexType> |
| 31 | </element> |
| 32 | |
| 33 | <complexType name="type.A"> |
| 34 | <complexContent> |
| 35 | <restriction base="foo:base.type.A"> |
| 36 | <anyAttribute namespace="##any" processContents="skip" /> |
| 37 | </restriction> |
| 38 | </complexContent> |
| 39 | </complexType> |
| 40 | |
| 41 | <complexType name="base.type.A"> |
| 42 | <attribute name="bar" type="string"/> |
| 43 | </complexType> |
| 44 | |
| 45 | <complexType name="type.B"> |
| 46 | <complexContent> |
| 47 | <restriction base="foo:base.type.B"> |
| 48 | <anyAttribute namespace="##any" processContents="skip" /> |
| 49 | </restriction> |
| 50 | </complexContent> |
| 51 | </complexType> |
| 52 | |
| 53 | <complexType name="base.type.B"> |
| 54 | <anyAttribute namespace="http://FOO" processContents="skip" /> |
| 55 | </complexType> |
| 56 | |
| 57 | <complexType name="type.C"> |
| 58 | <complexContent> |
| 59 | <restriction base="foo:base.type.C"> |
| 60 | <anyAttribute namespace="##any" processContents="skip" /> |
| 61 | </restriction> |
| 62 | </complexContent> |
| 63 | </complexType> |
| 64 | |
| 65 | <complexType name="base.type.C"> |
| 66 | <anyAttribute namespace="##any" processContents="lax" /> |
| 67 | </complexType> |
| 68 | |
| 69 | </schema> |