RelaxNG file for VINI RSpec
[sfa.git] / sfa / managers / vini / vini.rng
1 <?xml version="1.0" encoding="UTF-8"?>
2 <grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3   <start>
4     <ref name="RSpec"/>
5   </start>
6   <define name="RSpec">
7     <element name="RSpec">
8       <attribute name="type">
9         <data type="NMTOKEN"/>
10       </attribute>
11       <choice>
12         <ref name="network"/>
13         <ref name="request"/>
14       </choice>
15     </element>
16   </define>
17   <define name="network">
18     <element name="network">
19       <attribute name="name">
20         <data type="NMTOKEN"/>
21       </attribute>
22       <optional>
23         <attribute name="slice">
24           <data type="NMTOKEN"/>
25         </attribute>
26       </optional>
27       <oneOrMore>
28         <choice>
29           <ref name="site"/>
30           <ref name="link"/>
31         </choice>
32       </oneOrMore>
33     </element>
34   </define>
35   <define name="site">
36     <element name="site">
37       <attribute name="id">
38         <data type="ID"/>
39       </attribute>
40       <element name="name">
41         <text/>
42       </element>
43       <oneOrMore>
44         <ref name="node"/>
45       </oneOrMore>
46     </element>
47   </define>
48   <define name="node">
49     <element name="node">
50       <attribute name="id">
51         <data type="ID"/>
52       </attribute>
53       <ref name="hostname"/>
54       <ref name="kbps"/>
55       <zeroOrMore>
56         <ref name="sliver"/>
57       </zeroOrMore>
58     </element>
59   </define>
60   <define name="link">
61     <element name="link">
62       <attribute name="endpoints">
63         <data type="IDREFS"/>
64       </attribute>
65       <optional>
66         <element name="description">
67           <text/>
68         </element>
69       </optional>
70       <optional>
71         <ref name="kbps"/>
72       </optional>
73       <zeroOrMore>
74         <ref name="vlink"/>
75       </zeroOrMore>
76     </element>
77   </define>
78   <define name="request">
79     <element name="request">
80       <oneOrMore>
81         <choice>
82           <ref name="sliver"/>
83           <ref name="vlink"/>
84         </choice>
85       </oneOrMore>
86     </element>
87   </define>
88   <define name="sliver">
89     <element name="sliver">
90       <optional>
91         <attribute name="nodeid">
92           <data type="ID"/>
93         </attribute>
94       </optional>
95       <empty/>
96     </element>
97   </define>
98   <define name="vlink">
99     <element name="vlink">
100       <optional>
101         <attribute name="endpoints">
102           <data type="IDREFS"/>
103         </attribute>
104       </optional>
105       <optional>
106         <element name="description">
107           <text/>
108         </element>
109       </optional>
110       <optional>
111         <ref name="kbps"/>
112       </optional>
113     </element>
114   </define>
115   <define name="hostname">
116     <element name="hostname">
117       <text/>
118     </element>
119   </define>
120   <define name="kbps">
121     <element name="kbps">
122       <text/>
123     </element>
124   </define>
125 </grammar>