Home | History | Annotate | Download | only in common
      1 <?xml version="1.0" encoding="UTF-8"?>
      2 <!--
      3  Copyright 2009 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 -->
     26 
     27 <!--
     28   Topology description DTD
     29 
     30     Most attributes are string values (or an individual string from a
     31     restricted set), but attributes with a specific type requirement are
     32     noted in the comment describing the element.
     33 -->
     34 
     35 <!--
     36   XInclude support
     37 
     38     Topologies may be composed via the xi:include tag.
     39     libtopo interfaces enforce that all composed topologies be of the
     40     same scheme.
     41 -->
     42 
     43 <!ELEMENT xi:include
     44 	(xi:fallback) >
     45 
     46 <!ATTLIST xi:include
     47   href CDATA #REQUIRED
     48   parse (xml|text) "xml"
     49   encoding CDATA #IMPLIED
     50   xmlns:xi CDATA #FIXED "http://www.w3.org/2001/XInclude"
     51   >
     52 
     53 <!ELEMENT xi:fallback
     54   ANY
     55   >
     56 <!ATTLIST xi:fallback
     57   xmlns:xi CDATA #FIXED "http://www.w3.org/2001/XInclude"
     58   >
     59 
     60 <!-- Properties and property groups -->
     61 
     62 <!--
     63   propval
     64 
     65  	This element is for a singly valued property within a property group.
     66 
     67 	Its attributes are
     68 
     69 		name	The name of this property.
     70 
     71 		type	The data type for this property.
     72 		
     73 		value	The value for this property.  Must match type
     74 			restriction of type attribute.
     75 			
     76 			This is optional for array types
     77 			
     78 -->
     79 
     80 <!ELEMENT propval (propitem*) >
     81 
     82 <!ATTLIST propval
     83 	name		CDATA #REQUIRED
     84 	type		( int32 | uint32 | int64 | uint64 |
     85 			  string | fmri | int32_array | uint32_array |
     86 			  int64_array | uint64_array | string_array |
     87 			  fmri_array ) #REQUIRED
     88 	value		CDATA "" >
     89 <!--
     90   propitem
     91 
     92  	This element is an optional child element of propval and is used to
     93 	specify the values for array elements
     94 
     95 	Its attributes are
     96 
     97 		value	The value for this property.  Must match type
     98 			restriction of type attribute.
     99 			
    100 -->
    101 
    102 <!ELEMENT propitem EMPTY >
    103 
    104 <!ATTLIST propitem
    105 	value		CDATA #REQUIRED >
    106 
    107 
    108 <!--
    109   propgroup
    110 
    111 	This element is for a set of related properties on a topo node
    112 	It contains an optional stability element, as well as
    113 	zero or more property-containing elements.
    114 
    115 	Its attributes are
    116 
    117 		name		The name of this property group.
    118 		name-stability	Stability level of the property group name
    119 		data-stability	Stability level of the property names and
    120 				content
    121 		version		Version of the propery group definition
    122 
    123 -->
    124 
    125 <!ELEMENT propgroup
    126 	( propval*, propmethod* ) >
    127 
    128 <!ATTLIST propgroup
    129 	name		CDATA #REQUIRED
    130 	version		CDATA #REQUIRED
    131 	name-stability	( Private | Standard | Stable | Evolving | Unstable |
    132                         External | Obsolete ) #REQUIRED
    133 	data-stability	( Private | Standard | Stable | Evolving | Unstable |
    134                         External | Obsolete ) #REQUIRED >
    135 
    136 <!--
    137   set
    138 	This element is for associating ranges, nodes or property groups
    139 	according to a set type.
    140 
    141 	Its attributes are
    142 
    143 		type	The type of this property group set.  'product' is the
    144 			only set type currently supported.
    145 		setlist	The list of set types.
    146 
    147 -->
    148 
    149 <!ELEMENT set
    150 	 ( range*, fac-enum?, propgroup*, facility*, set* ) >
    151 
    152 <!ATTLIST set
    153 	type	( product ) #REQUIRED
    154 	setlist	CDATA #REQUIRED >
    155 
    156 <!--
    157   propmap
    158 	This element is for specifying an additional topo map file for
    159 	properties assigned to a given range.
    160 
    161 	Its attributes are
    162 
    163 		name		Name of map file
    164 -->
    165 
    166 <!ELEMENT propmap EMPTY >
    167 
    168 <!ATTLIST propmap
    169 	name		CDATA #REQUIRED >
    170 
    171 <!-- Methods -->
    172 
    173 <!--
    174   argval
    175  
    176 	A propmethod argument. It has two attributes:
    177  
    178 		name    The name of the argument.
    179 		type    The data type of the argument.
    180 		value	The value for this argument.  Must match type
    181 			restriction of type attribute.
    182 			
    183 			This attribute is optional for array types
    184 -->
    185 
    186 <!ELEMENT argval (argitem*) >
    187 
    188 <!ATTLIST argval
    189         name            CDATA #REQUIRED
    190 	type		( int32 | uint32 | int64 | uint64 |
    191 			  string | fmri | int32_array | uint32_array |
    192 			  int64_array | uint64_array | string_array |
    193 			  fmri_array ) #REQUIRED
    194         value           CDATA "">
    195 
    196 <!--
    197   argitem
    198 
    199  	This element is an optional child element of argval and is used to
    200 	specify the values for array elements
    201 
    202 	Its attributes are
    203 
    204 		value	The value for this property.  Must match type
    205 			restriction of type attribute.
    206 			
    207 -->
    208 
    209 <!ELEMENT argitem EMPTY >
    210 
    211 <!ATTLIST argitem
    212 	value		CDATA #REQUIRED >
    213 
    214 
    215 <!--
    216    propmethod
    217 
    218 	This element is for properties that can only be determined dynamically
    219 	from a plugin.
    220 
    221 	Its attributes are
    222 
    223       		name		Name of the method
    224       		version		Version of the method API
    225       		propname	Name of the property to create
    226 		proptype	Type of the property to create
    227 		mutable         optional: default is false (0)
    228 		nonvolatile     optional: default is false (0)
    229 -->
    230 
    231 <!ELEMENT propmethod
    232 	( argval* ) >
    233 
    234 <!ATTLIST propmethod
    235 	name		CDATA #REQUIRED
    236 	version		CDATA #REQUIRED
    237 	propname	CDATA #REQUIRED
    238 	proptype	CDATA #REQUIRED
    239 	mutable		(0|1) "0"
    240 	nonvolatile	(0|1) "0" >
    241 
    242 <!--
    243   enum-method
    244 
    245 	This element describes the enumeration method used to
    246 	populate a composition of topo nodes for a given range of topology
    247 	nodes. 
    248 
    249 	Its attributes are
    250 
    251 		name	Name of the module exporting an enumeration method.
    252 
    253 		version Version of the libtopo API
    254 
    255 -->
    256 
    257 <!ELEMENT enum-method EMPTY >
    258 
    259 <!ATTLIST enum-method
    260 	name		CDATA #REQUIRED
    261 	version		CDATA #REQUIRED >
    262 
    263 <!--
    264   node
    265 
    266 	This element identifies a topology node instance.
    267 
    268 	Its attributes are
    269 
    270 		instance The instance number of the node
    271 
    272 -->
    273 
    274 <!ELEMENT node
    275 	( fac-enum?, facility*, propgroup*, set*, enum-method*, dependents? ) >
    276 
    277 <!ATTLIST node
    278 	instance	CDATA #REQUIRED >
    279 
    280 <!--
    281   dependents
    282 
    283 	Ranges may have a number of "dependent" ranges, linked to
    284 	the original range hierarchically as children or as a list, siblings. 
    285 
    286 	Its attribute is:
    287 		grouping	children | siblings
    288 -->
    289 
    290 <!ELEMENT dependents 
    291 	(( range | xi:include )*, set*) >
    292 
    293 <!ATTLIST dependents 
    294 	grouping ( children | siblings ) #REQUIRED >
    295 
    296 <!--
    297   range
    298 
    299     This element identifies a range of possible topology nodes.
    300 
    301     Its attributes are
    302 
    303 	name	The common name of all the possible topo nodes
    304 
    305 	min	The smallest allowed instance number for an
    306 		actual topo node.
    307 
    308 	max	The largest allowed instance number for an
    309 		actual topo node.
    310 -->
    311 
    312 <!ELEMENT range
    313 	( enum-method?, propmap?, fac-enum?, facility*, node*, propgroup*, set*,
    314 	    dependents* ) >
    315 
    316 <!ATTLIST range
    317 	name		CDATA #REQUIRED
    318 	min		CDATA #REQUIRED
    319 	max		CDATA #REQUIRED >
    320 
    321 <!--
    322   facility
    323 
    324     This element identifies a single facility node instance
    325 
    326     Its attributes are
    327 
    328 	name	The name of the facility node
    329 
    330 	type	The type of facility node: either "sensor" or "indicator"
    331 
    332 	provider	The name of the facility provider module that
    333 	                implements the methods for this node or range
    334 -->
    335 
    336 <!ELEMENT facility
    337 	( propgroup* ) >
    338 
    339 <!ATTLIST facility
    340 	name		CDATA #REQUIRED
    341 	type		(sensor | indicator) #REQUIRED
    342 	provider	CDATA #REQUIRED >
    343 
    344 <!--
    345   fac-enum
    346 
    347     This element identifies a facility provider module that
    348     implements a facility enumeration method for the enclosing
    349     node or range.
    350 
    351     Its attributes are
    352 
    353 	provider	The name of the facility provider module that
    354 	                implements the facility enumerator method for
    355 			the parent node or range
    356 -->
    357 
    358 <!ELEMENT fac-enum EMPTY >
    359 
    360 <!ATTLIST fac-enum provider CDATA #REQUIRED >
    361 
    362 <!--
    363   topology
    364 
    365 	This is the root-level for the scheme-specific topology
    366 
    367 	Its attributes are:
    368 		name	topology name
    369 		scheme 	( hc | dev  ) 
    370 -->
    371 
    372 <!ELEMENT topology
    373 	((range* | xi:include*), set*)>
    374 
    375 <!ATTLIST topology
    376 	name	CDATA #REQUIRED
    377 	scheme (hc | dev) #REQUIRED >
    378