cpl.xml 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <xs:schema xmlns="urn:ietf:params:xml:ns:cpl" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:ietf:params:xml:ns:cpl" elementFormDefault="qualified" attributeFormDefault="unqualified">
  3. <xs:complexType name="TopLevelActionType" abstract="true">
  4. <xs:group ref="Node"/>
  5. </xs:complexType>
  6. <xs:element name="toplevelaction" type="TopLevelActionType"/>
  7. <xs:complexType name="ActionType" abstract="true"/>
  8. <xs:element name="action" type="ActionType"/>
  9. <xs:complexType name="SwitchType" abstract="true"/>
  10. <xs:element name="switch" type="SwitchType"/>
  11. <xs:complexType name="ModifierType" abstract="true"/>
  12. <xs:element name="modifier" type="ModifierType"/>
  13. <xs:element name="location" type="LocationType" substitutionGroup="modifier"/>
  14. <xs:element name="lookup" type="LookupType" substitutionGroup="modifier"/>
  15. <xs:element name="remove-location" type="RemoveLocationType" substitutionGroup="modifier"/>
  16. <xs:element name="sub" type="SubAction"/>
  17. <xs:group name="Node">
  18. <xs:choice>
  19. <xs:element ref="switch" minOccurs="0" maxOccurs="1"/>
  20. <xs:element ref="modifier" minOccurs="0" maxOccurs="1"/>
  21. <xs:element ref="sub" minOccurs="0" maxOccurs="1"/>
  22. <xs:element ref="action" minOccurs="0" maxOccurs="1"/>
  23. </xs:choice>
  24. </xs:group>
  25. <xs:complexType name="OtherwiseAction">
  26. <xs:group ref="Node"/>
  27. </xs:complexType>
  28. <xs:complexType name="NotPresentAction">
  29. <xs:group ref="Node"/>
  30. </xs:complexType>
  31. <xs:simpleType name="YesNoType">
  32. <xs:restriction base="xs:NMTOKEN">
  33. <xs:enumeration value="yes"/>
  34. <xs:enumeration value="no"/>
  35. </xs:restriction>
  36. </xs:simpleType>
  37. <xs:simpleType name="StatusType">
  38. <xs:union>
  39. <xs:simpleType>
  40. <xs:restriction base="xs:NMTOKEN">
  41. <xs:enumeration value="busy"/>
  42. <xs:enumeration value="notfound"/>
  43. <xs:enumeration value="reject"/>
  44. <xs:enumeration value="error"/>
  45. </xs:restriction>
  46. </xs:simpleType>
  47. <xs:simpleType>
  48. <xs:restriction base="xs:string"/>
  49. </xs:simpleType>
  50. </xs:union>
  51. </xs:simpleType>
  52. <xs:simpleType name="OrderingType">
  53. <xs:restriction base="xs:NMTOKEN">
  54. <xs:enumeration value="parallel"/>
  55. <xs:enumeration value="sequential"/>
  56. <xs:enumeration value="first-only"/>
  57. </xs:restriction>
  58. </xs:simpleType>
  59. <xs:simpleType name="AddressFieldType">
  60. <xs:union>
  61. <xs:simpleType>
  62. <xs:restriction base="xs:NMTOKEN">
  63. <xs:enumeration value="origin"/>
  64. <xs:enumeration value="destination"/>
  65. <xs:enumeration value="original-destination"/>
  66. </xs:restriction>
  67. </xs:simpleType>
  68. <xs:simpleType>
  69. <xs:restriction base="xs:string"/>
  70. </xs:simpleType>
  71. </xs:union>
  72. </xs:simpleType>
  73. <xs:simpleType name="AddressSubfieldType">
  74. <xs:union>
  75. <xs:simpleType>
  76. <xs:restriction base="xs:NMTOKEN">
  77. <xs:enumeration value="address-type"/>
  78. <xs:enumeration value="user"/>
  79. <xs:enumeration value="host"/>
  80. <xs:enumeration value="port"/>
  81. <xs:enumeration value="tel"/>
  82. <xs:enumeration value="display"/>
  83. <xs:enumeration value="password"/>
  84. <xs:enumeration value="alias-type"/>
  85. </xs:restriction>
  86. </xs:simpleType>
  87. <xs:simpleType>
  88. <xs:restriction base="xs:string"/>
  89. </xs:simpleType>
  90. </xs:union>
  91. </xs:simpleType>
  92. <xs:complexType name="AddressType">
  93. <xs:annotation>
  94. <xs:documentation>Exactly one of the three attributes must
  95. appear</xs:documentation>
  96. </xs:annotation>
  97. <xs:group ref="Node"/>
  98. <xs:attribute name="is" type="xs:string" use="optional"/>
  99. <xs:attribute name="contains" type="xs:string" use="optional">
  100. <xs:annotation>
  101. <xs:documentation>for "display" only</xs:documentation>
  102. </xs:annotation>
  103. </xs:attribute>
  104. <xs:attribute name="subdomain-of" type="xs:string" use="optional">
  105. <xs:annotation>
  106. <xs:documentation>for "host", "tel" only</xs:documentation>
  107. </xs:annotation>
  108. </xs:attribute>
  109. <xs:anyAttribute namespace="##any" processContents="lax"/>
  110. </xs:complexType>
  111. <xs:complexType name="AddressSwitchType">
  112. <xs:complexContent>
  113. <xs:extension base="SwitchType">
  114. <xs:sequence>
  115. <xs:element name="address" type="AddressType" minOccurs="0" maxOccurs="unbounded"/>
  116. <xs:sequence minOccurs="0">
  117. <xs:element name="not-present" type="NotPresentAction"/>
  118. <xs:element name="address" type="AddressType" minOccurs="0" maxOccurs="unbounded"/>
  119. </xs:sequence>
  120. <xs:element name="otherwise" type="OtherwiseAction" minOccurs="0"/>
  121. </xs:sequence>
  122. <xs:attribute name="field" type="AddressFieldType" use="required"/>
  123. <xs:attribute name="subfield" type="AddressSubfieldType" use="optional"/>
  124. </xs:extension>
  125. </xs:complexContent>
  126. </xs:complexType>
  127. <xs:element name="address-switch" type="AddressSwitchType" substitutionGroup="switch"/>
  128. <xs:simpleType name="StringFieldType">
  129. <xs:restriction base="xs:NMTOKEN">
  130. <xs:enumeration value="subject"/>
  131. <xs:enumeration value="organization"/>
  132. <xs:enumeration value="user-agent"/>
  133. <xs:enumeration value="display"/>
  134. </xs:restriction>
  135. </xs:simpleType>
  136. <xs:complexType name="StringType">
  137. <xs:group ref="Node"/>
  138. <xs:attribute name="is" type="xs:string" use="optional"/>
  139. <xs:attribute name="contains" type="xs:string" use="optional"/>
  140. <xs:anyAttribute namespace="##any" processContents="lax"/>
  141. </xs:complexType>
  142. <xs:complexType name="StringSwitchType">
  143. <xs:complexContent>
  144. <xs:extension base="SwitchType">
  145. <xs:sequence>
  146. <xs:element name="string" type="StringType" minOccurs="0" maxOccurs="unbounded"/>
  147. <xs:sequence minOccurs="0">
  148. <xs:element name="not-present" type="NotPresentAction"/>
  149. <xs:element name="string" type="StringType" minOccurs="0" maxOccurs="unbounded"/>
  150. </xs:sequence>
  151. <xs:element name="otherwise" type="OtherwiseAction" minOccurs="0"/>
  152. </xs:sequence>
  153. <xs:attribute name="field" type="StringFieldType" use="required">
  154. <xs:annotation>
  155. <xs:documentation>Strings are matched as case-insensitive
  156. Unicode strings.</xs:documentation>
  157. </xs:annotation>
  158. </xs:attribute>
  159. </xs:extension>
  160. </xs:complexContent>
  161. </xs:complexType>
  162. <xs:element name="string-switch" type="StringSwitchType" substitutionGroup="switch"/>
  163. <xs:complexType name="LanguageType">
  164. <xs:group ref="Node"/>
  165. <xs:attribute name="matches" type="xs:string" use="required">
  166. <xs:annotation>
  167. <xs:documentation>The value of one of these parameters is a
  168. language-tag, as defined in RFC
  169. 3066.</xs:documentation>
  170. </xs:annotation>
  171. </xs:attribute>
  172. <xs:anyAttribute namespace="##any" processContents="lax"/>
  173. </xs:complexType>
  174. <xs:complexType name="LanguageSwitchType">
  175. <xs:complexContent>
  176. <xs:extension base="SwitchType">
  177. <xs:sequence>
  178. <xs:element name="language" type="LanguageType" minOccurs="0" maxOccurs="unbounded"/>
  179. <xs:sequence minOccurs="0">
  180. <xs:element name="not-present" type="NotPresentAction"/>
  181. <xs:element name="language" type="LanguageType" minOccurs="0" maxOccurs="unbounded"/>
  182. </xs:sequence>
  183. <xs:element name="otherwise" type="OtherwiseAction" minOccurs="0"/>
  184. </xs:sequence>
  185. </xs:extension>
  186. </xs:complexContent>
  187. </xs:complexType>
  188. <xs:element name="language-switch" type="LanguageSwitchType" substitutionGroup="switch"/>
  189. <xs:simpleType name="FreqType">
  190. <xs:restriction base="xs:NMTOKEN">
  191. <xs:pattern value="[s|S][e|E][c|C][o|O][n|N][d|D][l|L][y|Y]"/>
  192. <xs:pattern value="[m|M][i|I][n|N][u|U][t|T][e|E][l|L][y|Y]"/>
  193. <xs:pattern value="[h|H][o|O][u|U][r|R][l|L][y|Y]"/>
  194. <xs:pattern value="[d|D][a|A][i|I][l|L][y|Y]"/>
  195. <xs:pattern value="[w|W][e|E][e|E][k|K][l|L][y|Y]"/>
  196. <xs:pattern value="[m|M][o|N][n|N][t|T][h|H][l|L][y|Y]"/>
  197. <xs:pattern value="[y|Y][e|E][a|A][r|R][l|L][y|Y]"/>
  198. </xs:restriction>
  199. </xs:simpleType>
  200. <xs:simpleType name="YearDayType">
  201. <xs:union>
  202. <xs:simpleType>
  203. <xs:restriction base="xs:integer">
  204. <xs:minInclusive value="-366"/>
  205. <xs:maxInclusive value="-1"/>
  206. </xs:restriction>
  207. </xs:simpleType>
  208. <xs:simpleType>
  209. <xs:restriction base="xs:integer">
  210. <xs:minInclusive value="1"/>
  211. <xs:maxExclusive value="366"/>
  212. </xs:restriction>
  213. </xs:simpleType>
  214. </xs:union>
  215. </xs:simpleType>
  216. <xs:simpleType name="DayType">
  217. <xs:restriction base="xs:NMTOKEN">
  218. <xs:pattern value="[m|M][o|O]"/>
  219. <xs:pattern value="[t|T][u|U]"/>
  220. <xs:pattern value="[w|W][e|E]"/>
  221. <xs:pattern value="[t|T][h|H]"/>
  222. <xs:pattern value="[f|F][r|R]"/>
  223. <xs:pattern value="[s|S][a|A]"/>
  224. <xs:pattern value="[s|S][u|U]"/>
  225. </xs:restriction>
  226. </xs:simpleType>
  227. <xs:complexType name="TimeType">
  228. <xs:annotation>
  229. <xs:documentation>Exactly one of the two attributes "dtend" and
  230. "duration" must occur. None of the attributes following
  231. freq are meaningful unless freq appears.
  232. </xs:documentation>
  233. </xs:annotation>
  234. <xs:group ref="Node"/>
  235. <xs:attribute name="dtstart" type="xs:string" use="required">
  236. <xs:annotation>
  237. <xs:documentation>RFC 2445 DATE-TIME</xs:documentation>
  238. </xs:annotation>
  239. </xs:attribute>
  240. <xs:attribute name="dtend" type="xs:string" use="optional">
  241. <xs:annotation>
  242. <xs:documentation>RFC 2445 DATE-TIME</xs:documentation>
  243. </xs:annotation>
  244. </xs:attribute>
  245. <xs:attribute name="duration" type="xs:string" use="optional">
  246. <xs:annotation>
  247. <xs:documentation>RFC 2445 DURATION</xs:documentation>
  248. </xs:annotation>
  249. </xs:attribute>
  250. <xs:attribute name="freq" type="FreqType" use="optional"/>
  251. <xs:attribute name="interval" type="xs:positiveInteger" default="1"/>
  252. <xs:attribute name="until" type="xs:string" use="optional">
  253. <xs:annotation>
  254. <xs:documentation>RFC 2445 DATE-TIME</xs:documentation>
  255. </xs:annotation>
  256. </xs:attribute>
  257. <xs:attribute name="count" type="xs:positiveInteger" use="optional"/>
  258. <xs:attribute name="bysecond" type="xs:string" use="optional">
  259. <xs:annotation>
  260. <xs:documentation>Comma-separated list of seconds within a
  261. minute. Valid values are 0 to 59.</xs:documentation>
  262. </xs:annotation>
  263. </xs:attribute>
  264. <xs:attribute name="byminute" type="xs:string" use="optional">
  265. <xs:annotation>
  266. <xs:documentation>Comma-separated list of minutes within an
  267. hour. Valid values are 0 to 59.</xs:documentation>
  268. </xs:annotation>
  269. </xs:attribute>
  270. <xs:attribute name="byhour" type="xs:string" use="optional">
  271. <xs:annotation>
  272. <xs:documentation>Comma-separated list of hours of the day.
  273. Valid values are 0 to 23.</xs:documentation>
  274. </xs:annotation>
  275. </xs:attribute>
  276. <xs:attribute name="byday" type="xs:string" use="optional">
  277. <xs:annotation>
  278. <xs:documentation>Comma-separated list of days of the week.
  279. Valid values are "MO", "TU", "WE", "TH", "FR", "SA" and
  280. "SU". These values are not case-sensitive. Each can be
  281. preceded by a positive (+n) or negative (-n)
  282. integer.</xs:documentation>
  283. </xs:annotation>
  284. </xs:attribute>
  285. <xs:attribute name="bymonthday" type="xs:string" use="optional">
  286. <xs:annotation>
  287. <xs:documentation>Comma-separated list of days of the month.
  288. Valid values are 1 to 31 or -31 to
  289. -1.</xs:documentation>
  290. </xs:annotation>
  291. </xs:attribute>
  292. <xs:attribute name="byyearday" type="xs:string" use="optional">
  293. <xs:annotation>
  294. <xs:documentation>Comma-separated list of days of the year.
  295. Valid values are 1 to 366 or -366 to
  296. -1.</xs:documentation>
  297. </xs:annotation>
  298. </xs:attribute>
  299. <xs:attribute name="byweekno" type="xs:string" use="optional">
  300. <xs:annotation>
  301. <xs:documentation>Comma-separated list of ordinals specifying
  302. weeks of the year. Valid values are 1 to 53 or -53 to
  303. -1.</xs:documentation>
  304. </xs:annotation>
  305. </xs:attribute>
  306. <xs:attribute name="bymonth" type="xs:string" use="optional">
  307. <xs:annotation>
  308. <xs:documentation>Comma-separated list of months of the year.
  309. Valid values are 1 to 12.</xs:documentation>
  310. </xs:annotation>
  311. </xs:attribute>
  312. <xs:attribute name="wkst" type="DayType" default="MO"/>
  313. <xs:attribute name="bysetpos" type="YearDayType"/>
  314. <xs:anyAttribute namespace="##any" processContents="lax"/>
  315. </xs:complexType>
  316. <xs:simpleType name="TZIDType">
  317. <xs:restriction base="xs:string"/>
  318. </xs:simpleType>
  319. <xs:simpleType name="TZURLType">
  320. <xs:restriction base="xs:anyURI"/>
  321. </xs:simpleType>
  322. <xs:complexType name="TimeSwitchType">
  323. <xs:complexContent>
  324. <xs:extension base="SwitchType">
  325. <xs:sequence>
  326. <xs:element name="time" type="TimeType" minOccurs="0" maxOccurs="unbounded"/>
  327. <xs:sequence minOccurs="0">
  328. <xs:element name="not-present" type="NotPresentAction"/>
  329. <xs:element name="time" type="TimeType" minOccurs="0" maxOccurs="unbounded"/>
  330. </xs:sequence>
  331. <xs:element name="otherwise" type="OtherwiseAction" minOccurs="0"/>
  332. </xs:sequence>
  333. <xs:attribute name="tzid" type="TZIDType"/>
  334. <xs:attribute name="tzurl" type="TZURLType"/>
  335. </xs:extension>
  336. </xs:complexContent>
  337. </xs:complexType>
  338. <xs:element name="time-switch" type="TimeSwitchType" substitutionGroup="switch"/>
  339. <xs:simpleType name="PriorityValues">
  340. <xs:restriction base="xs:NMTOKEN">
  341. <xs:pattern value="[e|E][m|M][e|E][r|R][g|G][e|E][n|N][c|C][y|Y]"/>
  342. <xs:pattern value="[u|U][r|R][g|G][e|E][n|N][t|T]"/>
  343. <xs:pattern value="[n|N][o|O][r|R][m|M][a|A][l|L]"/>
  344. <xs:pattern value="[n|N][o|O][n|N]-[u|U][r|R][g|G][e|E][n|N][t|T]"/>
  345. </xs:restriction>
  346. </xs:simpleType>
  347. <xs:complexType name="PriorityType">
  348. <xs:annotation>
  349. <xs:documentation>Exactly one of the three attributes must
  350. appear </xs:documentation>
  351. </xs:annotation>
  352. <xs:group ref="Node"/>
  353. <xs:attribute name="less" type="PriorityValues"/>
  354. <xs:attribute name="greater" type="PriorityValues"/>
  355. <xs:attribute name="equal" type="xs:string">
  356. <xs:annotation>
  357. <xs:documentation>case-insensitive</xs:documentation>
  358. </xs:annotation>
  359. </xs:attribute>
  360. <xs:anyAttribute namespace="##any" processContents="lax"/>
  361. </xs:complexType>
  362. <xs:complexType name="PrioritySwitchType">
  363. <xs:complexContent>
  364. <xs:extension base="SwitchType">
  365. <xs:sequence>
  366. <xs:element name="priority" type="PriorityType" minOccurs="0" maxOccurs="unbounded"/>
  367. <xs:sequence minOccurs="0">
  368. <xs:element name="not-present" type="NotPresentAction"/>
  369. <xs:element name="priority" type="PriorityType" minOccurs="0" maxOccurs="unbounded"/>
  370. </xs:sequence>
  371. <xs:element name="otherwise" type="OtherwiseAction" minOccurs="0"/>
  372. </xs:sequence>
  373. </xs:extension>
  374. </xs:complexContent>
  375. </xs:complexType>
  376. <xs:element name="priority-switch" type="PrioritySwitchType" substitutionGroup="switch"/>
  377. <xs:simpleType name="LocationPriorityType">
  378. <xs:restriction base="xs:float">
  379. <xs:minInclusive value="0.0"/>
  380. <xs:maxInclusive value="1.0"/>
  381. </xs:restriction>
  382. </xs:simpleType>
  383. <xs:complexType name="LocationType">
  384. <xs:complexContent>
  385. <xs:extension base="ModifierType">
  386. <xs:group ref="Node"/>
  387. <xs:attribute name="url" type="xs:anyURI" use="required"/>
  388. <xs:attribute name="priority" type="LocationPriorityType" use="optional" default="1.0"/>
  389. <xs:attribute name="clear" type="YesNoType" default="no"/>
  390. </xs:extension>
  391. </xs:complexContent>
  392. </xs:complexType>
  393. <xs:complexType name="LookupType">
  394. <xs:complexContent>
  395. <xs:extension base="ModifierType">
  396. <xs:all>
  397. <xs:element name="success" minOccurs="0">
  398. <xs:complexType>
  399. <xs:group ref="Node"/>
  400. </xs:complexType>
  401. </xs:element>
  402. <xs:element name="notfound" minOccurs="0">
  403. <xs:complexType>
  404. <xs:group ref="Node"/>
  405. </xs:complexType>
  406. </xs:element>
  407. <xs:element name="failure" minOccurs="0">
  408. <xs:complexType>
  409. <xs:group ref="Node"/>
  410. </xs:complexType>
  411. </xs:element>
  412. </xs:all>
  413. <xs:attribute name="source" type="xs:string" use="required"/>
  414. <xs:attribute name="timeout" type="xs:positiveInteger" default="30"/>
  415. <xs:attribute name="clear" type="YesNoType" default="no"/>
  416. </xs:extension>
  417. </xs:complexContent>
  418. </xs:complexType>
  419. <xs:complexType name="RemoveLocationType">
  420. <xs:complexContent>
  421. <xs:extension base="ModifierType">
  422. <xs:group ref="Node"/>
  423. <xs:attribute name="location" type="xs:string" use="optional"/>
  424. </xs:extension>
  425. </xs:complexContent>
  426. </xs:complexType>
  427. <xs:complexType name="LogAction">
  428. <xs:complexContent>
  429. <xs:extension base="ActionType">
  430. <xs:group ref="Node"/>
  431. <xs:attribute name="name" type="xs:string" use="optional"/>
  432. <xs:attribute name="comment" type="xs:string" use="optional"/>
  433. </xs:extension>
  434. </xs:complexContent>
  435. </xs:complexType>
  436. <xs:element name="log" type="LogAction" substitutionGroup="action"/>
  437. <xs:complexType name="IncomingType">
  438. <xs:complexContent>
  439. <xs:extension base="TopLevelActionType"/>
  440. </xs:complexContent>
  441. </xs:complexType>
  442. <xs:element name="incoming" type="IncomingType" substitutionGroup="toplevelaction"/>
  443. <xs:complexType name="OutgoingType">
  444. <xs:complexContent>
  445. <xs:extension base="TopLevelActionType"/>
  446. </xs:complexContent>
  447. </xs:complexType>
  448. <xs:element name="outgoing" type="OutgoingType" substitutionGroup="toplevelaction"/>
  449. <xs:complexType name="ProxyAction">
  450. <xs:complexContent>
  451. <xs:extension base="ActionType">
  452. <xs:all>
  453. <xs:element name="busy" minOccurs="0">
  454. <xs:complexType>
  455. <xs:group ref="Node"/>
  456. </xs:complexType>
  457. </xs:element>
  458. <xs:element name="noanswer" minOccurs="0">
  459. <xs:complexType>
  460. <xs:group ref="Node"/>
  461. </xs:complexType>
  462. </xs:element>
  463. <xs:element name="failure" minOccurs="0">
  464. <xs:complexType>
  465. <xs:group ref="Node"/>
  466. </xs:complexType>
  467. </xs:element>
  468. <xs:element name="redirection" minOccurs="0">
  469. <xs:complexType>
  470. <xs:group ref="Node"/>
  471. </xs:complexType>
  472. </xs:element>
  473. <xs:element name="default" minOccurs="0">
  474. <xs:complexType>
  475. <xs:group ref="Node"/>
  476. </xs:complexType>
  477. </xs:element>
  478. </xs:all>
  479. <xs:attribute name="timeout" type="xs:positiveInteger" use="optional" default="20"/>
  480. <xs:attribute name="recursive" type="YesNoType" use="optional" default="yes"/>
  481. <xs:attribute name="ordering" type="OrderingType" use="optional" default="parallel"/>
  482. </xs:extension>
  483. </xs:complexContent>
  484. </xs:complexType>
  485. <xs:element name="proxy" type="ProxyAction" substitutionGroup="action"/>
  486. <xs:complexType name="RedirectAction">
  487. <xs:complexContent>
  488. <xs:extension base="ActionType">
  489. <xs:attribute name="permanent" type="YesNoType" default="no"/>
  490. </xs:extension>
  491. </xs:complexContent>
  492. </xs:complexType>
  493. <xs:element name="redirect" type="RedirectAction" substitutionGroup="action"/>
  494. <xs:complexType name="RejectAction">
  495. <xs:complexContent>
  496. <xs:extension base="ActionType">
  497. <xs:attribute name="status" type="StatusType" use="required"/>
  498. <xs:attribute name="reason" type="xs:string" use="optional"/>
  499. </xs:extension>
  500. </xs:complexContent>
  501. </xs:complexType>
  502. <xs:element name="reject" type="RejectAction" substitutionGroup="action"/>
  503. <xs:complexType name="MailAction">
  504. <xs:complexContent>
  505. <xs:extension base="ActionType">
  506. <xs:group ref="Node"/>
  507. <xs:attribute name="url" type="xs:anyURI" use="required"/>
  508. </xs:extension>
  509. </xs:complexContent>
  510. </xs:complexType>
  511. <xs:element name="mail" type="MailAction" substitutionGroup="action"/>
  512. <xs:complexType name="SubAction">
  513. <xs:attribute name="ref" type="xs:string" use="required"/>
  514. </xs:complexType>
  515. <xs:complexType name="AncillaryType"/>
  516. <xs:complexType name="SubactionType">
  517. <xs:group ref="Node"/>
  518. <xs:attribute name="id" use="required"/>
  519. </xs:complexType>
  520. <xs:complexType name="CPLType">
  521. <xs:sequence>
  522. <xs:element name="ancillary" type="AncillaryType" minOccurs="0" maxOccurs="1"/>
  523. <xs:element name="subaction" type="SubactionType" minOccurs="0" maxOccurs="unbounded"/>
  524. <xs:element ref="toplevelaction" minOccurs="0" maxOccurs="unbounded">
  525. <xs:annotation>
  526. <xs:documentation>Any toplevel action MUST NOT appear more
  527. than once.</xs:documentation>
  528. </xs:annotation>
  529. </xs:element>
  530. </xs:sequence>
  531. </xs:complexType>
  532. <xs:element name="cpl" type="CPLType"/>
  533. </xs:schema>