1<?xml version="1.0" encoding="UTF-8"?>
2<!--
3 Copyright 2006 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
67     group.
68
69     Its attributes are
70
71	name	The name of this property.
72
73	type	The data type for this property.
74
75	value	The value for this property.  Must match type
76		restriction of type attribute.
77
78	immutable This value remains unchanged for the lifetime of a snapshot.
79-->
80
81<!ELEMENT propval EMPTY >
82
83<!ATTLIST propval
84	name		CDATA #REQUIRED
85	type		( int32 | uint32 | int64 | uint64 |
86			  string | fmri ) #REQUIRED
87	value		CDATA #REQUIRED
88	immutable	( true | false ) "true" >
89
90<!--
91  propgroup
92
93    This element is for a set of related properties on a topo node
94    It contains an optional stability element, as well as
95    zero or more property-containing elements.
96
97    Its attributes are
98
99	name		The name of this property group.
100	name-stability	Stability level of the property group name
101	data-stability	Stability level of the property names and content
102	version		Version of the propery group definition
103
104-->
105
106<!ELEMENT propgroup
107	( propval* ) >
108
109<!ATTLIST propgroup
110	name		CDATA #REQUIRED
111	version		CDATA #REQUIRED
112	name-stability	( Private | Standard | Stable | Evolving | Unstable |
113                        External | Obsolete ) #REQUIRED
114	data-stability	( Private | Standard | Stable | Evolving | Unstable |
115                        External | Obsolete ) #REQUIRED >
116
117<!-- Methods -->
118
119<!--
120  enum-method
121
122    This element describes the enumeration method used to
123    populate a composition of topo nodes.  Its interpretation is
124    left to the enumerator to which a particular topo node is
125    assigned.  It contains a set of attributes, context, and an optional
126    stability element for the optional args that can be included.
127
128    Its attributes are
129
130	name	Name of this method.  The method names are
131		usually a defined interface of the enumerator to which a
132		topo instance assigned.
133
134	version Version of the enumeration API
135
136-->
137
138<!ELEMENT enum-method EMPTY >
139
140<!ATTLIST enum-method
141	name		CDATA #REQUIRED
142	version		CDATA #REQUIRED >
143
144<!--
145  node
146
147    This element identifies a known topology node.
148
149    Its attributes are
150
151	instance The instance number of the known node
152
153	static	Boolean to determine if node is statically created
154		by the XML parser or an enumerator
155
156-->
157
158<!ELEMENT node
159	( propgroup*, dependents* ) >
160
161<!ATTLIST node
162	instance	CDATA #REQUIRED
163	static          ( true | false ) "false" >
164
165<!--
166  dependents
167
168	Ranges may have a number of "dependent" ranges, linked to
169	the original range hierarchically as children or siblings.
170
171	Its attribute is:
172		grouping	"children", "siblings"
173-->
174
175<!ELEMENT dependents
176	( range | xi:include )+ >
177
178<!ATTLIST dependents
179	grouping ( children | siblings ) #REQUIRED >
180
181<!--
182  range
183
184    This element identifies a range of possible topology nodes.
185
186    Its attributes are
187
188	name	The common name of all the possible topo nodes
189
190	min	The smallest allowed instance number for an
191		actual topo node.
192
193	max	The largest allowed instance number for an
194		actual topo node.
195
196-->
197
198<!ELEMENT range
199	( enum-method?, node*, propgroup*, dependents* ) >
200
201<!ATTLIST range
202	name		CDATA #REQUIRED
203	min		CDATA #REQUIRED
204	max		CDATA #REQUIRED >
205
206<!--
207  topology
208
209	This is the root-level for the scheme-specific topology
210
211	Its attributes are:
212		name	topology name
213		scheme  "hc", "dev"
214-->
215
216<!ELEMENT topology
217	(range* | xi:include*)>
218
219<!ATTLIST topology
220	name	CDATA #REQUIRED
221	scheme (hc | dev) #REQUIRED >
222