xref: /illumos-gate/usr/src/lib/fm/topo/maps/common/topology.dtd.1 (revision 374ae87f60894937d3c6e53ec4a739188e702ea5)
1<?xml version="1.0" encoding="UTF-8"?>
2<!--
3 Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
4 Use is subject to license terms.
5
6 CDDL HEADER START
7
8 The contents of this file are subject to the terms of the
9 Common Development and Distribution License (the "License").
10 You may not use this file except in compliance with the License.
11
12 You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
13 or http://www.opensolaris.org/os/licensing.
14 See the License for the specific language governing permissions
15 and limitations under the License.
16
17 When distributing Covered Code, include this CDDL HEADER in each
18 file and include the License file at usr/src/OPENSOLARIS.LICENSE.
19 If applicable, add the following below this CDDL HEADER, with the
20 fields enclosed by brackets "[]" replaced with your own identifying
21 information: Portions Copyright [yyyy] [name of copyright owner]
22
23 CDDL HEADER END
24
25    ident	"%Z%%M%	%I%	%E% SMI"
26-->
27
28<!--
29  Topology description DTD
30
31    Most attributes are string values (or an individual string from a
32    restricted set), but attributes with a specific type requirement are
33    noted in the comment describing the element.
34-->
35
36<!--
37  XInclude support
38
39    Topologies may be composed via the xi:include tag.
40    libtopo(3LIB) interfaces enforce that all composed topologies be of the
41    same scheme.
42-->
43
44<!ELEMENT xi:include
45	(xi:fallback) >
46
47<!ATTLIST xi:include
48  href CDATA #REQUIRED
49  parse (xml|text) "xml"
50  encoding CDATA #IMPLIED
51  xmlns:xi CDATA #FIXED "http://www.w3.org/2001/XInclude"
52  >
53
54<!ELEMENT xi:fallback
55  ANY
56  >
57<!ATTLIST xi:fallback
58  xmlns:xi CDATA #FIXED "http://www.w3.org/2001/XInclude"
59  >
60
61<!-- Properties and property groups -->
62
63<!--
64  propval
65
66 	This element is for a singly valued property within a property group.
67
68	Its attributes are
69
70		name	The name of this property.
71
72		type	The data type for this property.
73
74		value	The value for this property.  Must match type
75			restriction of type attribute.
76-->
77
78<!ELEMENT propval EMPTY >
79
80<!ATTLIST propval
81	name		CDATA #REQUIRED
82	type		( int32 | uint32 | int64 | uint64 |
83			  string | fmri ) #REQUIRED
84	value		CDATA #REQUIRED
85
86<!--
87  propgroup
88
89	This element is for a set of related properties on a topo node
90	It contains an optional stability element, as well as
91	zero or more property-containing elements.
92
93	Its attributes are
94
95		name		The name of this property group.
96		name-stability	Stability level of the property group name
97		data-stability	Stability level of the property names and
98				content
99		version		Version of the propery group definition
100
101-->
102
103<!ELEMENT propgroup
104	( propval*, propmethod* ) >
105
106<!ATTLIST propgroup
107	name		CDATA #REQUIRED
108	version		CDATA #REQUIRED
109	name-stability	( Private | Standard | Stable | Evolving | Unstable |
110                        External | Obsolete ) #REQUIRED
111	data-stability	( Private | Standard | Stable | Evolving | Unstable |
112                        External | Obsolete ) #REQUIRED >
113
114<!--
115  set
116	This element is for associating ranges, nodes or property groups
117	according to a set type.
118
119	Its attributes are
120
121		type	The type of this property group set.  'product' is the
122			only set type currently supported.
123		setlist	The list of set types.
124
125-->
126
127<!ELEMENT set
128	 ( range*, propgroup* ) >
129
130<!ATTLIST set
131	type	( product ) #REQUIRED
132	setlist	CDATA #REQUIRED >
133
134<!--
135  propmap
136	This element is for specifying an additional topo map file for
137	properties assigned to a given range.
138
139	Its attributes are
140
141		name		Name of map file
142-->
143
144<!ELEMENT propmap EMPTY >
145
146<!ATTLIST propmap
147	name		CDATA #REQUIRED >
148
149<!-- Methods -->
150
151<!--
152  argval
153
154	A propmethod argument. It has two attributes:
155
156		name    The name of the argument.
157		type    The data type of the argument.
158		value	The value of the arg
159-->
160
161<!ELEMENT argval EMPTY>
162
163<!ATTLIST argval
164        name            CDATA #REQUIRED
165        type            CDATA #REQUIRED
166        value           CDATA #REQUIRED >
167
168<!--
169   propmethod
170
171	This element is for properties that can only be determined dynamically
172	from a plugin.
173
174	Its attributes are
175
176      		name		Name of the method
177      		version		Version of the method API
178      		propname	Name of the property to create
179		proptype	Type of the property to create
180
181<!ELEMENT propmethod
182	( argval* ) >
183
184<!ATTLIST propmethod
185	name		CDATA #REQUIRED
186	version		CDATA #REQUIRED
187	propname	CDATA #REQUIRED
188	proptype	CDATA #REQUIRED>
189<!--
190  enum-method
191
192	This element describes the enumeration method used to
193	populate a composition of topo nodes for a given range of topology
194	nodes.
195
196	Its attributes are
197
198		name	Name of the module exporting an enumeration method.
199
200		version Version of the libtopo API
201
202-->
203
204<!ELEMENT enum-method EMPTY >
205
206<!ATTLIST enum-method
207	name		CDATA #REQUIRED
208	version		CDATA #REQUIRED >
209
210<!--
211  node
212
213	This element identifies a topology node instance.
214
215	Its attributes are
216
217		instance The instance number of the node
218
219-->
220
221<!ELEMENT node
222	( propgroup*, dependents*, set*, enum-method* ) >
223
224<!ATTLIST node
225	instance	CDATA #REQUIRED >
226
227<!--
228  dependents
229
230	Ranges may have a number of "dependent" ranges, linked to
231	the original range hierarchically as children or as a list, siblings.
232
233	Its attribute is:
234		grouping	children | siblings
235-->
236
237<!ELEMENT dependents
238	(( range | xi:include )+, set) >
239
240<!ATTLIST dependents
241	grouping ( children | siblings ) "children" #REQUIRED >
242
243<!--
244  range
245
246    This element identifies a range of possible topology nodes.
247
248    Its attributes are
249
250	name	The common name of all the possible topo nodes
251
252	min	The smallest allowed instance number for an
253		actual topo node.
254
255	max	The largest allowed instance number for an
256		actual topo node.
257-->
258
259<!ELEMENT range
260	( enum-method?, propmap?, node*, propgroup*, dependents*,
261	    set? ) >
262
263<!ATTLIST range
264	name		CDATA #REQUIRED
265	min		CDATA #REQUIRED
266	max		CDATA #REQUIRED >
267
268<!--
269  topology
270
271	This is the root-level for the scheme-specific topology
272
273	Its attributes are:
274		name	topology name
275		scheme 	( hc | dev  )
276-->
277
278<!ELEMENT topology
279	((range* | xi:include*), set)>
280
281<!ATTLIST topology
282	name	CDATA #REQUIRED
283	scheme (hc | dev) #REQUIRED >
284