Extended ARP schema to include strawman attribute constraint syntax.
[java-idp.git] / src / schemas / shibboleth-arp-1.0.xsd
1 <?xml version="1.0" encoding="UTF-8"?>
2 <xs:schema targetNamespace="urn:mace:shibboleth:arp:1.0" xmlns:arp="urn:mace:shibboleth:arp:1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
3         <xs:simpleType name="RequireType">
4                 <xs:restriction base="xs:string">
5                         <xs:enumeration value="deny"/>
6                         <xs:enumeration value="permit"/>
7                 </xs:restriction>
8         </xs:simpleType>
9         <xs:simpleType name="MatchesType">
10                 <xs:restriction base="xs:string">
11                         <xs:enumeration value="any"/>
12                         <xs:enumeration value="all"/>
13                         <xs:enumeration value="none"/>
14                 </xs:restriction>
15         </xs:simpleType>
16         <xs:complexType name="AttributeType">
17                 <xs:sequence>
18                         <xs:element name="AnyValue" minOccurs="0">
19                                 <xs:complexType>
20                                         <xs:attribute name="release" type="arp:RequireType" use="required"/>
21                                 </xs:complexType>
22                         </xs:element>
23                         <xs:element name="Value" minOccurs="0" maxOccurs="unbounded">
24                                 <xs:complexType mixed="true">
25                                         <xs:sequence minOccurs="0">
26                                                 <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
27                                         </xs:sequence>
28                                         <xs:attribute name="matchFunction" type="xs:anyURI" default="urn:mace:shibboleth:arp:matchFunction:stringMatch"/>
29                                         <xs:attribute name="release" type="arp:RequireType" use="required"/>
30                                 </xs:complexType>
31                         </xs:element>
32                 </xs:sequence>
33                 <xs:attribute name="name" type="xs:anyURI" use="required"/>
34                 <xs:attribute name="identifier" type="xs:anyURI" use="optional"/>
35         </xs:complexType>
36         <xs:element name="AttributeReleasePolicy">
37                 <xs:complexType>
38                         <xs:sequence>
39                                 <xs:element name="Description" type="xs:string" minOccurs="0"/>
40                                 <xs:sequence>
41                                         <xs:element name="Rule" minOccurs="0" maxOccurs="unbounded">
42                                                 <xs:complexType>
43                                                         <xs:sequence>
44                                                                 <xs:element name="Description" type="xs:string" minOccurs="0"/>
45                                                                 <xs:element name="Constraint" minOccurs="0" maxOccurs="unbounded">
46                                                                         <xs:complexType mixed="true">
47                                                                                 <xs:sequence minOccurs="0">
48                                                                                         <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
49                                                                                 </xs:sequence>
50                                                                                 <xs:attribute name="attributeName" type="xs:string" use="required"/>
51                                                                                 <xs:attribute name="matchFunction" type="xs:anyURI" default="urn:mace:shibboleth:arp:matchFunction:stringMatch"/>
52                                                                                 <xs:attribute name="matches" type="arp:MatchesType" default="any"/>
53                                                                         </xs:complexType>
54                                                                 </xs:element>
55                                                                 <xs:element name="Target">
56                                                                         <xs:complexType>
57                                                                                 <xs:choice>
58                                                                                         <xs:element name="AnyTarget">
59                                                                                                 <xs:complexType/>
60                                                                                         </xs:element>
61                                                                                         <xs:sequence minOccurs="1" maxOccurs="unbounded">
62                                                                                                 <xs:element name="Requester">
63                                                                                                         <xs:complexType>
64                                                                                                                 <xs:simpleContent>
65                                                                                                                         <xs:extension base="xs:string">
66                                                                                                                                 <xs:attribute name="matchFunction" type="xs:anyURI" default="urn:mace:shibboleth:arp:matchFunction:stringMatch"/>
67                                                                                                                         </xs:extension>
68                                                                                                                 </xs:simpleContent>
69                                                                                                         </xs:complexType>
70                                                                                                 </xs:element>
71                                                                                         </xs:sequence>
72                                                                                 </xs:choice>
73                                                                         </xs:complexType>
74                                                                 </xs:element>
75                                                                 <xs:sequence>
76                                                                         <xs:element name="Attribute" type="arp:AttributeType" minOccurs="0" maxOccurs="unbounded"/>
77                                                                         <xs:element name="AttributeReference" minOccurs="0" maxOccurs="unbounded">
78                                                                                 <xs:complexType>
79                                                                                         <xs:attribute name="identifier" type="xs:anyURI" use="required"/>
80                                                                                 </xs:complexType>
81                                                                         </xs:element>
82                                                                 </xs:sequence>
83                                                         </xs:sequence>
84                                                         <xs:attribute name="identifier" type="xs:anyURI" use="optional"/>
85                                                 </xs:complexType>
86                                         </xs:element>
87                                         <xs:element name="RuleReference" minOccurs="0" maxOccurs="unbounded">
88                                                 <xs:complexType>
89                                                         <xs:attribute name="identifier" type="xs:anyURI" use="required"/>
90                                                 </xs:complexType>
91                                         </xs:element>
92                                 </xs:sequence>
93                                 <xs:element name="Attribute" type="arp:AttributeType" minOccurs="0" maxOccurs="unbounded"/>
94                         </xs:sequence>
95                 </xs:complexType>
96         </xs:element>
97 </xs:schema>