xref: /illumos-gate/usr/src/cmd/svc/dtd/service_bundle.dtd.1 (revision 5df5713f81d69c1a0797f99b13e95e220da00ef9)
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