Home | History | Annotate | Download | only in dtd
      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   Service description DTD
     28 
     29     Most attributes are string values (or an individual string from a
     30     restricted set), but attributes with a specific type requirement are
     31     noted in the comment describing the element.
     32 -->
     33 
     34 <!--
     35   XInclude support
     36 
     37     A series of service bundles may be composed via the xi:include tag.
     38     smf(5) tools enforce that all bundles be of the same type.
     39 -->
     40 <!ELEMENT xi:include
     41   (xi:fallback)
     42   >
     43 <!ATTLIST xi:include
     44   href CDATA #REQUIRED
     45   parse (xml|text) "xml"
     46   encoding CDATA #IMPLIED
     47   xmlns:xi CDATA #FIXED "http://www.w3.org/2001/XInclude"
     48   >
     49 
     50 <!ELEMENT xi:fallback
     51   ANY
     52   >
     53 <!ATTLIST xi:fallback
     54   xmlns:xi CDATA #FIXED "http://www.w3.org/2001/XInclude"
     55   >
     56 
     57 <!--
     58   stability
     59 
     60     This element associates an SMI stability level with the parent
     61     element.  See attributes(5) for an explanation of interface
     62     stability levels.
     63 
     64     Its attribute is
     65 
     66 	value	The stability level of the parent element.
     67 -->
     68 
     69 <!ELEMENT stability EMPTY>
     70 
     71 <!ATTLIST stability
     72 	value		( Standard | Stable | Evolving | Unstable |
     73 			External | Obsolete ) #REQUIRED >
     74 
     75 <!-- Property value lists -->
     76 
     77 <!--
     78   value_node
     79 
     80     This element represents a single value within any of the typed
     81     property value lists.
     82 
     83     Its attribute is
     84 
     85 	value	The value for this node in the list.
     86 -->
     87 
     88 <!ELEMENT value_node EMPTY>
     89 
     90 <!ATTLIST value_node
     91 	value CDATA #REQUIRED>
     92 
     93 <!--
     94   count_list
     95   integer_list
     96   opaque_list
     97   host_list
     98   hostname_list
     99   net_address_v4_list
    100   net_address_v6_list
    101   time_list
    102   astring_list
    103   ustring_list
    104   boolean_list
    105   fmri_list
    106   uri_list
    107 
    108     These elements represent the typed lists of values for a property.
    109     Each contains one or more value_node elements representing each
    110     value on the list.
    111 
    112     None of these elements has attributes.
    113 -->
    114 
    115 <!ELEMENT count_list
    116 	( value_node+ )>
    117 
    118 <!ATTLIST count_list>
    119 
    120 <!ELEMENT integer_list
    121 	( value_node+ )>
    122 
    123 <!ATTLIST integer_list>
    124 
    125 <!ELEMENT opaque_list
    126 	( value_node+ )>
    127 
    128 <!ATTLIST opaque_list>
    129 
    130 <!ELEMENT host_list
    131 	( value_node+ )>
    132 
    133 <!ATTLIST host_list>
    134 
    135 <!ELEMENT hostname_list
    136 	( value_node+ )>
    137 
    138 <!ATTLIST hostname_list>
    139 
    140 <!ELEMENT net_address_v4_list
    141 	( value_node+ )>
    142 
    143 <!ATTLIST net_address_v4_list>
    144 
    145 <!ELEMENT net_address_v6_list
    146 	( value_node+ )>
    147 
    148 <!ATTLIST net_address_v6_list>
    149 
    150 <!ELEMENT time_list
    151 	( value_node+ )>
    152 
    153 <!ATTLIST time_list>
    154 
    155 <!ELEMENT astring_list
    156 	( value_node+ )>
    157 
    158 <!ATTLIST astring_list>
    159 
    160 <!ELEMENT ustring_list
    161 	( value_node+ )>
    162 
    163 <!ATTLIST ustring_list>
    164 
    165 <!ELEMENT boolean_list
    166 	( value_node+ )>
    167 
    168 <!ATTLIST boolean_list>
    169 
    170 <!ELEMENT fmri_list
    171 	( value_node+ )>
    172 
    173 <!ATTLIST fmri_list>
    174 
    175 <!ELEMENT uri_list
    176 	( value_node+ )>
    177 
    178 <!ATTLIST uri_list>
    179 
    180 <!-- Properties and property groups -->
    181 
    182 <!--
    183    property
    184 
    185      This element is for a singly or multiply valued property within a
    186      property group.  It contains an appropriate value list element,
    187      which is expected to be consistent with the type attribute.
    188 
    189      Its attributes are
    190 
    191 	name	The name of this property.
    192 
    193 	type	The data type for this property.
    194 
    195 	override These values should replace values already in the
    196 		repository.
    197 -->
    198 
    199 <!ELEMENT property
    200 	( count_list | integer_list | opaque_list | host_list | hostname_list |
    201 	net_address_v4_list | net_address_v6_list | time_list |
    202 	astring_list | ustring_list | boolean_list | fmri_list |
    203 	uri_list )? >
    204 
    205 <!ATTLIST property
    206 	name		CDATA #REQUIRED
    207 	type		( count | integer | opaque | host | hostname |
    208 			net_address_v4 | net_address_v6 | time |
    209 			astring | ustring | boolean | fmri | uri ) #REQUIRED
    210 	override	( true | false ) "false" >
    211 
    212 <!--
    213    propval
    214 
    215      This element is for a singly valued property within a property
    216      group.  List-valued properties must use the property element above.
    217 
    218      Its attributes are
    219 
    220 	name	The name of this property.
    221 
    222 	type	The data type for this property.
    223 
    224 	value	The value for this property.  Must match type
    225 		restriction of type attribute.
    226 
    227 	override This value should replace any values already in the
    228 		repository.
    229 -->
    230 
    231 <!ELEMENT propval EMPTY>
    232 
    233 <!ATTLIST propval
    234 	name		CDATA #REQUIRED
    235 	type		( count | integer | opaque | host | hostname |
    236 			net_address_v4 | net_address_v6 | time | astring |
    237 			ustring | boolean | fmri | uri ) #REQUIRED
    238 	value		CDATA #REQUIRED
    239 	override	( true | false ) "false" >
    240 
    241 <!--
    242   property_group
    243 
    244     This element is for a set of related properties on a service or
    245     instance.  It contains an optional stability element, as well as
    246     zero or more property-containing elements.
    247 
    248     Its attributes are
    249 
    250 	name	The name of this property group.
    251 
    252 	type	A category for this property group.  Groups of type
    253 		"framework", "implementation" or "template" are primarily
    254 		of interest to the service management facility, while
    255 		groups of type "application" are expected to be only of
    256 		interest to the service to which this group is attached.
    257 		Other types may be introduced using the service symbol
    258 		namespace conventions.
    259 
    260 	delete	If in the repository, this property group should be removed.
    261 -->
    262 
    263 <!ELEMENT property_group
    264 	( stability?, ( propval | property )* )>
    265 
    266 <!ATTLIST property_group
    267 	name		CDATA #REQUIRED
    268 	type		CDATA #REQUIRED
    269 	delete		( true | false ) "false" >
    270 
    271 <!--
    272   service_fmri
    273 
    274     This element defines a reference to a service FMRI (for either a
    275     service or an instance).
    276 
    277     Its attribute is
    278 
    279 	value	The FMRI.
    280 -->
    281 
    282 <!ELEMENT service_fmri EMPTY>
    283 
    284 <!ATTLIST service_fmri
    285 	value		CDATA #REQUIRED>
    286 
    287 <!-- Dependencies -->
    288 
    289 <!--
    290   dependency
    291 
    292     This element identifies a group of FMRIs upon which the service is
    293     in some sense dependent.  Its interpretation is left to the
    294     restarter to which a particular service instance is delegated.  It
    295     contains a group of service FMRIs, as well as a block of properties.
    296 
    297     Its attributes are
    298 
    299 	name	The name of this dependency.
    300 
    301 	grouping The relationship between the various FMRIs grouped
    302 		here; "require_all" of the FMRIs to be online, "require_any"
    303 		of the FMRIs to be online, or "exclude_all" of the FMRIs
    304 		from being online or in maintenance for the dependency to
    305 		be satisfied.  "optional_all" dependencies are satisfied
    306 		when all of the FMRIs are either online or unable to come
    307 		online (because they are disabled, misconfigured, or one
    308 		of their dependencies is unable to come online).
    309 
    310 	restart_on The type of events from the FMRIs that the service should
    311 		be restarted for.  "error" restarts the service if the
    312 		dependency is restarted due to hardware fault.  "restart"
    313 		restarts the service if the dependency is restarted for
    314 		any reason, including hardware fault.  "refresh" restarts
    315 		the service if the dependency is refreshed or restarted for
    316 		any reason.  "none" will never restart the service due to
    317 		dependency state changes.
    318 
    319 	type	The type of dependency: on another service ('service'), on
    320 		a filesystem path ('path'), or another dependency type.
    321 
    322 	delete	This dependency should be deleted.
    323 -->
    324 
    325 <!ELEMENT dependency
    326 	( service_fmri*, stability?, ( propval | property )* ) >
    327 
    328 <!ATTLIST dependency
    329 	name		CDATA #REQUIRED
    330 	grouping	( require_all | require_any | exclude_all |
    331 			optional_all ) #REQUIRED
    332 	restart_on	( error | restart | refresh | none ) #REQUIRED
    333 	type		CDATA #REQUIRED
    334 	delete		( true | false ) "false" >
    335 
    336 <!-- Dependents -->
    337 
    338 <!--
    339   dependent
    340 
    341     This element identifies a service which should depend on this service.  It
    342     corresponds to a dependency in the named service.  The grouping and type
    343     attributes of that dependency are implied to be "require_all" and
    344     "service", respectively.
    345 
    346     Its attributes are
    347 
    348 	name	The name of the dependency property group to create in the
    349 		dependent entity.
    350 
    351 	grouping The grouping relationship of the dependency property
    352 		group to create in the dependent entity.  See "grouping"
    353 		attribute on the dependency element.
    354 
    355 	restart_on The type of events from this service that the named service
    356 		should be restarted for.
    357 
    358 	delete	True if this dependent should be deleted.
    359 
    360 	override Whether to replace an existing dependent of the same name.
    361 
    362 -->
    363 
    364 <!ELEMENT dependent
    365 	( service_fmri, stability?, ( propval | property )* ) >
    366 
    367 <!ATTLIST dependent
    368 	name		CDATA #REQUIRED
    369 	grouping	( require_all | require_any | exclude_all |
    370 			optional_all) #REQUIRED
    371 	restart_on	( error | restart | refresh | none) #REQUIRED
    372 	delete		( true | false ) "false"
    373 	override	( true | false ) "false" >
    374 
    375 <!-- Method execution context, security profile, and credential definitions -->
    376 
    377 <!--
    378   envvar
    379 
    380     An environment variable. It has two attributes:
    381 
    382 	name	The name of the environment variable.
    383 	value	The value of the environment variable.
    384 -->
    385 
    386 <!ELEMENT envvar EMPTY>
    387 
    388 <!ATTLIST envvar
    389 	name		CDATA #REQUIRED
    390 	value		CDATA #REQUIRED >
    391 
    392 <!--
    393   method_environment
    394 
    395     This element defines the environment for a method. It has no
    396     attributes, and one or more envvar child elements.
    397 -->
    398 
    399 <!ELEMENT method_environment (envvar+) >
    400 
    401 <!ATTLIST method_environment>
    402 
    403 <!--
    404   method_profile
    405 
    406     This element indicates which exec_attr(5) profile applies to the
    407     method context being defined.
    408 
    409     Its attribute is
    410 
    411 	name	The name of the profile.
    412 -->
    413 
    414 <!ELEMENT method_profile EMPTY>
    415 
    416 <!ATTLIST method_profile
    417 	name		CDATA #REQUIRED >
    418 
    419 <!--
    420   method_credential
    421 
    422     This element specifies credential attributes for the execution
    423     method to use.
    424 
    425     Its attributes are
    426 
    427 	user	The user ID, in numeric or text form.
    428 
    429 	group	The group ID, in numeric or text form.  If absent or
    430 		":default", the group associated with the user in the
    431 		passwd database.
    432 
    433 	supp_groups Supplementary group IDs to be associated with the
    434 		method, separated by commas or spaces.  If absent or
    435 		":default", initgroups(3C) will be used.
    436 
    437 	privileges An optional string specifying the privilege set.
    438 
    439 	limit_privileges An optional string specifying the limit
    440 		privilege set.
    441 -->
    442 
    443 <!ELEMENT method_credential EMPTY>
    444 
    445 <!ATTLIST method_credential
    446 	user		CDATA #REQUIRED
    447 	group		CDATA #IMPLIED
    448 	supp_groups	CDATA #IMPLIED
    449 	privileges	CDATA #IMPLIED
    450 	limit_privileges CDATA #IMPLIED >
    451 
    452 <!--
    453   method_context
    454 
    455     This element combines credential and resource management attributes
    456     for execution methods.  It may contain a method_environment, or
    457     a method_profile or method_credential element.
    458 
    459     Its attributes are
    460 
    461 	working_directory The home directory to launch the method from.
    462 		":default" can be used as a token to indicate use of the
    463 		user specified by the credential or profile specified.
    464 
    465 	project	The project ID, in numeric or text form.  ":default" can
    466 		be used as a token to indicate use of the project
    467 		identified by getdefaultproj(3PROJECT) for the non-root
    468 		user specified by the credential or profile specified.
    469 		If the user is root, ":default" designates the project
    470 		the restarter is running in.
    471 
    472 	resource_pool The resource pool name to launch the method on.
    473 		":default" can be used as a token to indicate use of the
    474 		pool specified in the project(4) entry given in the
    475 		"project" attribute above.
    476 -->
    477 <!ELEMENT method_context
    478 	( (method_profile | method_credential)?, method_environment? ) >
    479 
    480 <!ATTLIST method_context
    481 	working_directory	CDATA #IMPLIED
    482 	project			CDATA #IMPLIED
    483 	resource_pool		CDATA #IMPLIED >
    484 
    485 <!-- Restarter delegation, methods, and monitors -->
    486 
    487 <!--
    488   exec_method
    489 
    490     This element describes one of the methods used by the designated
    491     restarter to act on the service instance.  Its interpretation is
    492     left to the restarter to which a particular service instance is
    493     delegated.  It contains a set of attributes, an optional method
    494     context, and an optional stability element for the optional
    495     properties that can be included.
    496 
    497     Its attributes are
    498 
    499 	type	The type of method, either "method" or "monitor".
    500 
    501 	name	Name of this execution method.  The method names are
    502 		usually a defined interface of the restarter to which an
    503 		instance of this service is delegated.
    504 
    505 	exec	The string identifying the action to take.  For
    506 		svc.startd(1M), this is a string suitable to pass to
    507 		exec(2).
    508 
    509 	timeout_seconds [integer] Duration, in seconds, to wait for this
    510 		method to complete.  A '0' or '-1' denotes an infinite
    511 		timeout.
    512 
    513 	delete	If in the repository, the property group for this method
    514 		should be removed.
    515 -->
    516 
    517 <!ELEMENT exec_method
    518 	( method_context?, stability?, ( propval | property )* ) >
    519 
    520 <!ATTLIST exec_method
    521 	type		( method | monitor ) #REQUIRED
    522 	name		CDATA #REQUIRED
    523 	exec		CDATA #REQUIRED
    524 	timeout_seconds	CDATA #REQUIRED
    525 	delete		( true | false ) "false" >
    526 
    527 <!--
    528   restarter
    529 
    530     A flag element identifying the restarter to which this service or
    531     service instance is delegated.  Contains the FMRI naming the
    532     delegated restarter.
    533 
    534     This element has no attributes.
    535 -->
    536 
    537 <!ELEMENT restarter
    538 	( service_fmri ) >
    539 
    540 <!ATTLIST restarter>
    541 
    542 <!--
    543   Templates
    544 -->
    545 
    546 <!--
    547   doc_link
    548 
    549     The doc_link relates a resource described by the given URI to the
    550     service described by the containing template.  The resource is
    551     expected to be a documentation or elucidatory reference of some
    552     kind.
    553 
    554     Its attributes are
    555 
    556       name      A label for this resource.
    557 
    558       uri       A URI to the resource.
    559 -->
    560 
    561 <!ELEMENT doc_link EMPTY>
    562 
    563 <!ATTLIST doc_link
    564 	name		CDATA #REQUIRED
    565 	uri		CDATA #REQUIRED >
    566 
    567 <!--
    568   manpage
    569 
    570     The manpage element connects the reference manual page to the
    571     template's service.
    572 
    573     Its attributes are
    574 
    575       title     The manual page title.
    576 
    577       section   The manual page's section.
    578 
    579       manpath   The MANPATH environment variable, as described in man(1)
    580                 that is required to reach the named manual page
    581 -->
    582 
    583 <!ELEMENT manpage EMPTY>
    584 
    585 <!ATTLIST manpage
    586 	title		CDATA #REQUIRED
    587 	section		CDATA #REQUIRED
    588 	manpath		CDATA ":default" >
    589 
    590 <!--
    591   documentation
    592 
    593     The documentation element groups an arbitrary number of doc_link
    594     and manpage references.
    595 
    596     It has no attributes.
    597 -->
    598 
    599 <!ELEMENT documentation
    600 	( doc_link | manpage )* >
    601 
    602 <!ATTLIST documentation>
    603 
    604 <!--
    605   loctext
    606 
    607     The loctext element is a container for localized text.
    608 
    609     Its sole attribute is
    610 
    611 	xml:lang The name of the locale, in the form accepted by LC_ALL,
    612 		etc.  See locale(5).
    613 -->
    614 <!ELEMENT loctext
    615         (#PCDATA) >
    616 
    617 <!ATTLIST loctext
    618         xml:lang	CDATA #REQUIRED >
    619 
    620 <!--
    621   description
    622 
    623     The description holds a set of potentially longer, localized strings that
    624     consist of a short description of the service.
    625 
    626     The description has no attributes.
    627 -->
    628 <!ELEMENT description
    629         ( loctext+ ) >
    630 
    631 <!ATTLIST description>
    632 
    633 <!--
    634   common_name
    635 
    636     The common_name holds a set of short, localized strings that
    637     represent a well-known name for the service in the given locale.
    638 
    639     The common_name has no attributes.
    640 -->
    641 <!ELEMENT common_name
    642         ( loctext+ ) >
    643 
    644 <!ATTLIST common_name>
    645 
    646 <!--
    647   units
    648 
    649     The units a numerical property is expressed in.
    650 -->
    651 
    652 <!ELEMENT units
    653 	( loctext+ ) >
    654 
    655 <!ATTLIST units>
    656 
    657 <!--
    658   visibility
    659 
    660     Expresses how a property is typically accessed.  This isn't
    661     intended as access control, but as an indicator as to how a
    662     property is used.
    663 
    664     Its attributes are:
    665 
    666       value     'hidden', 'readonly', or 'readwrite' indicating that
    667 		the property should be hidden from the user, shown but
    668 		read-only, or modifiable.
    669 -->
    670 
    671 <!ELEMENT visibility EMPTY>
    672 
    673 <!ATTLIST visibility
    674 	value	( hidden | readonly | readwrite ) #REQUIRED >
    675 
    676 <!--
    677   value
    678 
    679     Describes a legal value for a property value, and optionally contains a
    680     human-readable name and description for the specified property
    681     value.
    682 
    683     Its attributes are:
    684 
    685       name	A string representation of the value.
    686 -->
    687 
    688 <!ELEMENT value
    689 	( common_name?, description? ) >
    690 
    691 <!ATTLIST value
    692 	name	CDATA #REQUIRED >
    693 
    694 <!--
    695   values
    696 
    697     Human-readable names and descriptions for valid values of a property.
    698 -->
    699 
    700 <!ELEMENT values
    701 	(value+) >
    702 
    703 <!ATTLIST values>
    704 
    705 <!--
    706   cardinality
    707 
    708     Places a constraint on the number of values the property can take
    709     on.
    710 
    711     Its attributes are:
    712 	min	minimum number of values
    713 	max	maximum number of values
    714 
    715     Both attributes are optional.  If min is not specified, it defaults to
    716     0.  If max is not specified it indicates an unlimited number of values.
    717     If neither is specified this indicates 0 or more values.
    718 -->
    719 
    720 <!ELEMENT cardinality EMPTY>
    721 
    722 <!ATTLIST cardinality
    723 	min	CDATA "0"
    724 	max	CDATA "18446744073709551615">
    725 
    726 <!--
    727   internal_separators
    728 
    729     Indicates the separators used within a property's value used to
    730     separate the actual values.  Used in situations where multiple
    731     values are packed into a single property value instead of using a
    732     multi-valued property.
    733 -->
    734 
    735 <!ELEMENT internal_separators
    736 	(#PCDATA) >
    737 
    738 <!ATTLIST internal_separators>
    739 
    740 <!--
    741   range
    742 
    743     Indicates a range of possible integer values.
    744 
    745     Its attributes are:
    746 
    747       min	The minimum value of the range (inclusive).
    748       max	The maximum value of the range (inclusive).
    749 -->
    750 
    751 <!ELEMENT range EMPTY>
    752 
    753 <!ATTLIST range
    754 	min	CDATA #REQUIRED
    755 	max	CDATA #REQUIRED >
    756 
    757 <!--
    758   constraints
    759 
    760     Provides a set of constraints on the values a property can take on.
    761 -->
    762 
    763 <!ELEMENT constraints
    764 	( value*, range* ) >
    765 <!ATTLIST constraints>
    766 
    767 <!--
    768   include_values
    769 
    770     Includes an entire set of values in the choices block.
    771 
    772     Its attributes are:
    773 
    774 	type    Either "constraints" or "values", indicating an
    775 		inclusion of all values allowed by the property's
    776 		constraints or all values for which there are
    777 		human-readable names and descriptions, respectively.
    778 -->
    779 
    780 <!ELEMENT include_values EMPTY>
    781 
    782 <!ATTLIST include_values
    783 	type	( constraints | values ) #REQUIRED >
    784 
    785 <!--
    786   choices
    787 
    788     Provides a set of common choices for the values a property can take
    789     on.  Useful in those cases where the possibilities are unenumerable
    790     or merely inconveniently legion, and a manageable subset is desired
    791     for presentation in a user interface.
    792 -->
    793 
    794 <!ELEMENT choices
    795 	( value*, range*, include_values* ) >
    796 
    797 <!ATTLIST choices>
    798 
    799 <!--
    800   prop_pattern
    801 
    802 
    803     The prop_pattern describes one property of the enclosing property group
    804     pattern.
    805 
    806     Its attributes are:
    807 
    808 	name    The property's name.
    809 	type    The property's type.
    810 	required
    811 		If the property group is present, this property is required.
    812 
    813 	type can be omitted if required is false.
    814 -->
    815 
    816 <!ELEMENT prop_pattern
    817 	( common_name?, description?, units?, visibility?, cardinality?,
    818 	  internal_separators?, values?, constraints?, choices? ) >
    819 
    820 <!ATTLIST prop_pattern
    821 	name		CDATA	#REQUIRED
    822 	type		( count | integer | opaque | host | hostname |
    823 			net_address_v4 | net_address_v6 | time | astring |
    824 			ustring | boolean | fmri | uri ) #IMPLIED
    825 	required	( true | false )	"false" >
    826 
    827 <!--
    828   pg_pattern
    829 
    830     The pg_pattern describes one property group.
    831     Depending on the element's attributes, these descriptions may apply
    832     to just the enclosing service/instance, instances of the enclosing
    833     service, delegates of the service (assuming it is a restarter), or
    834     all services.
    835 
    836     Its attributes are:
    837 
    838 	name    The property group's name.  If not specified, it
    839 		matches all property groups with the specified type.
    840 	type    The property group's type.  If not specified, it
    841 		matches all property groups with the specified name.
    842 	required
    843 		If the property group is required.
    844 	target	The scope of the pattern, which may be all, delegate,
    845 		instance, or this.  'all' is reserved for framework use
    846 		and applies the template to all services on the system.
    847 		'delegate' is reserved for restarters, and means the
    848 		template applies to all services which use the restarter.
    849 		'this' would refer to the defining service or instance.
    850 		'instance' can only be used in a service's template block,
    851 		and means the definition applies to all instances of this
    852 		service.
    853 
    854 -->
    855 
    856 <!ELEMENT pg_pattern
    857 	( common_name?, description?, prop_pattern* ) >
    858 
    859 <!ATTLIST pg_pattern
    860 	name		CDATA	""
    861 	type		CDATA	""
    862 	required	( true | false )	"false"
    863 	target		( this | instance | delegate | all )	"this" >
    864 
    865 <!--
    866   template
    867 
    868     The template contains a collection of metadata about the service.
    869     It contains a localizable string that serves as a common,
    870     human-readable name for the service.  (This name should be less than
    871     60 characters in a single byte locale.)  The template may optionally
    872     contain a longer localizable description of the service, a
    873     collection of links to documentation, either in the form of manual
    874     pages or in the form of URI specifications to external documentation
    875     sources (such as docs.sun.com).
    876 
    877     The template has no attributes.
    878 -->
    879 <!ELEMENT template
    880         ( common_name, description?, documentation?, pg_pattern* ) >
    881 
    882 <!ATTLIST template>
    883 
    884 <!-- Services and instances -->
    885 
    886 <!--
    887   create_default_instance
    888 
    889     A flag element indicating that an otherwise empty default instance
    890     of this service (named "default") should be created at install, with
    891     its enabled property set as given.
    892 
    893     Its attribute is
    894 
    895 	enabled	[boolean] The initial value for the enabled state of
    896 		this instance.
    897 -->
    898 
    899 <!ELEMENT create_default_instance EMPTY >
    900 
    901 <!ATTLIST create_default_instance
    902 	enabled		( true | false ) #REQUIRED >
    903 
    904 <!--
    905   single_instance
    906 
    907     A flag element stating that this service can only have a single
    908     instance on a particular system.
    909 -->
    910 
    911 <!ELEMENT single_instance EMPTY>
    912 
    913 <!ATTLIST single_instance>
    914 
    915 <!--
    916   instance
    917 
    918     The service instance is the object representing a software component
    919     that will run on the system if enabled.  It contains an enabled
    920     element, a set of dependencies on other services, potentially
    921     customized methods or configuration data, an optional method
    922     context, and a pointer to its restarter.  (If no restarter is
    923     specified, the master restarter, svc.startd(1M), is assumed to be
    924     responsible for the service.)
    925 
    926     Its attributes are
    927 
    928 	name	The canonical name for this instance of the service.
    929 
    930 	enabled	[boolean] The initial value for the enabled state of
    931 		this instance.
    932 -->
    933 
    934 <!ELEMENT instance
    935 	( restarter?, dependency*, dependent*, method_context?,
    936 	exec_method*, property_group*, template? ) >
    937 
    938 <!ATTLIST instance
    939 	name		CDATA #REQUIRED
    940 	enabled		( true | false ) #REQUIRED >
    941 
    942 <!--
    943   service
    944 
    945     The service contains the set of instances defined by default for
    946     this service, an optional method execution context, any default
    947     methods, the template, and various restrictions or advice applicable
    948     at installation.  The method execution context and template elements
    949     are required for service_bundle documents with type "manifest", but
    950     are optional for "profile" or "archive" documents.
    951 
    952     Its attributes are
    953 
    954 	name	The canonical name for the service.
    955 
    956 	version	[integer] The integer version for this service.
    957 
    958 	type	Whether this service is a simple service, a delegated
    959 		restarter, or a milestone (a synthetic service that
    960 		collects a group of dependencies).
    961 -->
    962 
    963 <!ELEMENT service
    964 	( create_default_instance?, single_instance?, restarter?,
    965 	dependency*, dependent*, method_context?, exec_method*,
    966 	property_group*, instance*, stability?, template? ) >
    967 
    968 <!ATTLIST service
    969 	name		CDATA #REQUIRED
    970 	version		CDATA #REQUIRED
    971 	type		( service | restarter | milestone ) #REQUIRED >
    972 
    973 <!--
    974   service_bundle
    975 
    976     The bundle possesses two attributes:
    977 
    978 	type	How this file is to be understood by the framework (or
    979 		used in a non-framework compliant way). Standard types
    980 		are 'archive', 'manifest', and 'profile'.
    981 	
    982 	name	A name for the bundle.  Manifests should be named after
    983 		the package which delivered them; profiles should be
    984 		named after the "feature set nickname" they intend to
    985 		enable.
    986 -->
    987 
    988 <!ELEMENT service_bundle
    989 	( service_bundle* | service* | xi:include* )>
    990 
    991 <!ATTLIST service_bundle
    992 	type		CDATA #REQUIRED
    993 	name		CDATA #REQUIRED>
    994