Merge branch 'backport' into work
[dana/openbox.git] / data / menu.xsd
1 <?xml version="1.0" encoding="UTF-8"?>
2
3 <!-- XML Schema for the Openbox window manager menu file -->
4
5 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
6     targetNamespace="http://openbox.org/3.4/menu"
7     xmlns:ob="http://openbox.org/3.4/menu"
8     elementFormDefault="qualified">
9     <!--
10          root node
11       -->
12     <xs:element name="openbox_menu">
13         <xs:complexType mixed="false">
14             <xs:sequence maxOccurs="unbounded" minOccurs="1">
15                 <xs:element name="menu" type="ob:menu"/>
16             </xs:sequence>
17         </xs:complexType>
18     </xs:element>
19     <!--
20          complex types
21       -->
22     <xs:complexType name="menu">
23         <xs:choice maxOccurs="unbounded" minOccurs="0">
24             <xs:element maxOccurs="unbounded" minOccurs="0" name="menu" type="ob:menu"/>
25             <xs:element maxOccurs="unbounded" minOccurs="0" name="item" type="ob:item"/>
26             <xs:element maxOccurs="unbounded" minOccurs="0" name="separator" type="ob:empty"/>
27         </xs:choice>
28         <xs:attribute name="label" type="xs:string" use="optional"/>
29         <xs:attribute name="execute" type="xs:string" use="optional"/>
30         <xs:attribute name="id" type="xs:string" use="required"/>
31     </xs:complexType>
32     <xs:complexType name="empty">
33         <xs:complexContent>
34             <xs:restriction base="xs:anyType"/>
35         </xs:complexContent>
36     </xs:complexType>
37     <xs:complexType name="item">
38         <xs:sequence>
39             <xs:element minOccurs="0" name="action">
40                 <xs:complexType>
41                     <xs:sequence>
42                         <xs:element minOccurs="0" name="execute" type="xs:string"/>
43                     </xs:sequence>
44                     <xs:attribute name="name" type="ob:actionname" use="required"/>
45                 </xs:complexType>
46             </xs:element>
47         </xs:sequence>
48         <xs:attribute name="label" type="xs:string" use="required"/>
49     </xs:complexType>
50     <!--
51          simple types / restrictions
52       -->
53     <xs:simpleType name="actionname">
54         <xs:restriction base="xs:string">
55             <xs:enumeration value="Execute"/>
56             <xs:enumeration value="Restart"/>
57             <xs:enumeration value="Reconfigure"/>
58             <xs:enumeration value="Exit"/>
59         </xs:restriction>
60     </xs:simpleType>
61 </xs:schema>