<?xml version='1.0' encoding='UTF-8'?>

<!-- $Id: waveset.dtd,v 1.75 2006/04/20 22:29:53 gw149702 Exp $ -->

<!--=======================================================-->
<!--=                                                     =-->
<!--= DTD for Waveset Objects                             =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ENTITY % deprecatedObjects
  "ConfigurationKeyword |
   WorkflowConfig |
   WorkflowProcess |
   WorkflowCase |
   WorkflowTask">

<!ENTITY % persistentObject
  "Administrator |
  AdminGroup |
  AdminRole |
  AuditConfig |
  AuditPolicy |
  ComplianceViolation |
  AuditQuery |
  ObjectGroup |
  LoginConfig |
  Policy |
  Resource |
  ResourceAction |
  ResourceAccount |
  Account |
  Application |
  LoginApp |
  LoginModGroup |
  Role |
  User |
  AttributeDefinition |
  EmailTemplate |
  Rule |
  Extract |
  LoadConfig |
  WorkItem |
  Discovery |
  Configuration |
  TaskDefinition |
  TaskSchedule |
  TaskInstance |
  TaskResult |
  TaskResultPage |
  TaskTemplate |
  RemedyConfig |
  DataStore |
  Server |
  ServerRepository |
  EncryptionKey |
  RepositoryConfiguration |
  ReportLog |
  ReportCounter |
  UsageReport |
  Form |
  Log |
  Syslog |
  AttrParse |
  XmlData |
  SnapShot |
  MetaView |
  Miscellaneous |
  %deprecatedObjects;
  ">

<!-- The root for configuration import files. -->

<!ELEMENT Waveset ((
  %persistentObject; |
  WavesetResult |
  ImportCommand
)*)>

<!-- The root for exchange files. -->

<!ELEMENT Exchange ((
  User
)*)>

<!ATTLIST Exchange
  source CDATA #IMPLIED
>

<!-- bug#422: Deprecating "lastModTime" in favor of "lastMod"  -->
<!ENTITY % persistentObjectAttributes
  "id CDATA #IMPLIED
   name CDATA #IMPLIED
   authType CDATA #IMPLIED
   lock CDATA #IMPLIED
   displayName CDATA #IMPLIED
   subtype CDATA #IMPLIED
   creator CDATA #IMPLIED
   createDate CDATA #IMPLIED
   lastModifier CDATA #IMPLIED
   lastModDate CDATA #IMPLIED
   counter CDATA #IMPLIED
   wstype CDATA #IMPLIED
   protected (true | false) 'false'
   protectedFromDelete (true | false) 'false'
   hidden (true | false) 'false'
   lastModTime CDATA #IMPLIED
   lastMod CDATA #IMPLIED
">

<!ENTITY % persistentObjectElements
  "MemberObjectGroups | Properties">

<!ELEMENT MemberObjectGroups ((ObjectRef)*)>

<!--=======================================================-->
<!--=                                                     =-->
<!--= XPRESS Functions                                    =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ENTITY % exnode
  "s | i | o | null | ref | extref | set | get | block | if | then | else |
    call | print | defun | defvar | defarg | eval |
    eq | neq | gt | gte | lt | lte | and | or | not | select | cmp | ncmp |
    isTrue | isFalse | isnull | notnull | add | sub | mult | div | mod |
    trim | ltrim | rtrim | ztrim | upcase | downcase |
    substr | concat | join | expand | cond | switch |
    match | trace | breakpoint | index | member | getobj | list | array | map |
    lconcat | filterdup | filternull | indexOf | split | insert |
    remove | removeAll | append | appendAll | retainAll |
    contains | containsAny | containsAll |
    while | dolist | length | break | pad | new | invoke |
    script | message | rule | instanceof">


<!--=======================================================-->
<!--=                                                     =-->
<!--= Generic XML Objects                                 =-->
<!--=                                                     =-->
<!--=======================================================-->

<!-- Generic XML objects, plus some waveset-specific ones we've defined. -->
<!ENTITY % xmlObject
  " %persistentObject; |
   WavesetResult | ResultError | ResourceResult | ResultTable |
   ResultData | Report | RepositoryResult |
   WFProcess | WFCase | EncryptedData | Binary | AuthContext | Library |
   RepositoryConfiguration | Form | SOAPConfig | UserUIConfig | ObjectRef |
   null | Map | List | String | Integer | Long | Boolean | Date | Object |
   Op | OpField | BulkOpTaskState | GenericAttribute |
   Message | ErrorMessage | DeviceResetConfig | Component | Attribute |
   RoleAttribute | TimePeriod | Question | CustomCatalog |
   ResourceInfo | Subject | SimpleProperties | AttributeCondition |
   Variable | Activity | Action | Argument | Return | ActionResult |
   Transition | AuthTypes | Modification | License |
   Field | FieldLoop | FieldRef | FormRef | Number | DateTime | Display |
   ManualAction | MetaViewAttribute | CertificateData | SignedData |
   MetaViewTarget | MetaViewSource">

<!-- we frequently want to mix XPRESS nodes and XML Objects -->

<!ENTITY % exnodeOrObject "%exnode; | %xmlObject; | expression">

<!ELEMENT String (#PCDATA)>
<!ELEMENT Integer (#PCDATA)>
<!ELEMENT Long (#PCDATA)>
<!ELEMENT Boolean (#PCDATA)>
<!ELEMENT Date (#PCDATA)>

<!ELEMENT List ((%xmlObject;)*)>

<!ELEMENT Map ((MapEntry)*)>

<!-- sigh, trying to deprecate MapKey and MapValue but have to leave around
  == for awhile
-->
<!ELEMENT MapEntry (MapKey?, MapValue?, (%xmlObject;)*)>
<!ATTLIST MapEntry
  key CDATA #IMPLIED
  value CDATA #IMPLIED
>
<!ELEMENT MapKey (%xmlObject;)>
<!ELEMENT MapValue (%xmlObject;)>

<!--=======================================================-->
<!--=                                                     =-->
<!--= Some simple XML Objects                             =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT EncryptedData (#PCDATA)>
<!ELEMENT Binary (#PCDATA)>

<!--=======================================================-->
<!--=                                                     =-->
<!--= Property Lists                                      =-->
<!--=                                                     =-->
<!--=======================================================-->

<!-- Similar to Map but key must be a string and Property
     looks better embedded in things than MapEntry
     Added the ability for a Property value to be calculated
     by an expression.  This is used for properties within
     Display elements, so we're kind of overloading the
     element in two contexts.  Still, it might be useful to
     allow general property lists to have calculated
     values, so lets allow it.
-->

<!ELEMENT Properties ((Property)*)>
<!ELEMENT Property ((%exnodeOrObject;)?)>
<!ATTLIST Property
  name CDATA #REQUIRED
  value CDATA #IMPLIED
>

<!-- a semantically higher level bag-o-properties -->

<!ELEMENT Component ((Property)*)>
<!ATTLIST Component
  class CDATA #IMPLIED
>

<!-- Simple name=value style properties as content -->

<!ELEMENT SimpleProperties (#PCDATA)>

<!--=======================================================-->
<!--=                                                     =-->
<!--= ObjectRef                                           =-->
<!--=                                                     =-->
<!--=======================================================-->

<!-- might want to reconsider generic object refs, and instead
  == have type-specific reference elements?
  -->

<!ELEMENT ObjectRef EMPTY>
<!ATTLIST ObjectRef
  type CDATA #REQUIRED
  id   CDATA #IMPLIED
  name CDATA #IMPLIED
  displayName CDATA #IMPLIED
  qualifier CDATA #IMPLIED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= Configuration                                       =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT Configuration ((Extension | FormRef | %persistentObjectElements;)*)>
<!ATTLIST Configuration
  %persistentObjectAttributes;
  type CDATA #IMPLIED
>

<!ELEMENT Extension ((%xmlObject;)*)>

<!--=======================================================-->
<!--=                                                     =-->
<!--= AuditConfig                                         =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT AuditConfig ((FilterGroup | %persistentObjectElements;)*)>
<!ATTLIST AuditConfig
  %persistentObjectAttributes;
  AuditState CDATA #IMPLIED
  RecordLife CDATA #IMPLIED
>

<!ELEMENT FilterGroup ((Filter)*)>
<!ATTLIST FilterGroup
  GroupName CDATA #IMPLIED
  SuccessState CDATA #IMPLIED
  FailureState CDATA #IMPLIED
>

<!-- This is really empty, but the toXml method is emitting
     a newline with an end tag, so we have to allow text.
-->
<!ELEMENT Filter (#PCDATA)>
<!ATTLIST Filter
  fname CDATA #IMPLIED
  filtermask CDATA #IMPLIED
  objecttype CDATA #IMPLIED
  action CDATA #IMPLIED
  status CDATA #IMPLIED
  SuccessState CDATA #IMPLIED
  FailureState CDATA #IMPLIED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= RemedyConfig                                        =-->
<!--=                                                     =-->
<!--=======================================================-->


<!ELEMENT RemedyConfig ((
  RemedyTemplate |
  %persistentObjectElements;)*)>

<!ATTLIST RemedyConfig
  %persistentObjectAttributes;
  isConfigured CDATA #IMPLIED
  UserName CDATA #IMPLIED
  Password CDATA #IMPLIED
  RemedyServer CDATA #IMPLIED
>

<!ELEMENT RemedyTemplate (( RemedyField )*)>
<!ATTLIST RemedyTemplate
  name CDATA #IMPLIED
  schema CDATA #IMPLIED
>

<!ELEMENT RemedyField (( RemedyEnumValue )*)>
<!ATTLIST RemedyField
  name CDATA #IMPLIED
  Id CDATA #IMPLIED
  type CDATA #IMPLIED
  value CDATA #IMPLIED
>

<!ELEMENT RemedyEnumValue EMPTY>
<!ATTLIST RemedyEnumValue
  choice CDATA #IMPLIED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= AuditQuery                                          =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT AuditQuery (( QueryConditions | %persistentObjectElements;)*)>
<!ATTLIST AuditQuery %persistentObjectAttributes; >

<!ELEMENT QueryConditions (AttributeCondition+)>

<!ELEMENT AttributeCondition EMPTY>
<!ATTLIST AttributeCondition
  attrName CDATA #REQUIRED
  operator CDATA #REQUIRED
  operand  CDATA #REQUIRED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= WorkflowRegistry                                    =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT WorkflowRegistry ((WorkflowApplication)*)>

<!ELEMENT WorkflowApplication
  ((ArgumentDefinition | ResultDefinition | Comments)*)>

<!ATTLIST WorkflowApplication
  name     CDATA #IMPLIED
  internal CDATA #IMPLIED
  class    CDATA #IMPLIED
  op       CDATA #IMPLIED
  randomArguments (true | false) 'false'
>

<!ELEMENT ArgumentDefinition
  ((Comments | AllowedValues | (%xmlObject;))*)>

<!ATTLIST ArgumentDefinition
  name CDATA #REQUIRED
  displayName CDATA #IMPLIED
  value CDATA #IMPLIED
  required (true | false) 'false'
  hidden (true | false) 'false'
  from CDATA #IMPLIED
>

<!ELEMENT AllowedValues ((ValueDefinition | (%xmlObject;))*)>
<!ATTLIST AllowedValues
  allowOthers (true | false) 'false'
>

<!ELEMENT ValueDefinition (Comments?)>
<!ATTLIST ValueDefinition
  name CDATA #REQUIRED
  value CDATA #IMPLIED
>

<!ELEMENT ResultDefinition (Comments?)>
<!ATTLIST ResultDefinition
  name CDATA #REQUIRED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= FormRegistry                                        =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT FormRegistry ((HTMLComponent)*)>

<!ELEMENT HTMLComponent ((
  PropertyDefinition |
  Comments
)*)>

<!-- excludeProperties is deprecated -->

<!ATTLIST HTMLComponent
  name CDATA #REQUIRED
  extends CDATA #IMPLIED
  primary CDATA #IMPLIED
  exclude CDATA #IMPLIED
  excludeProperties (true | false) 'false'
>

<!ELEMENT PropertyDefinition ((Comments | AllowedValues)*)>

<!ATTLIST PropertyDefinition
  name CDATA #REQUIRED
  type CDATA #IMPLIED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= RuleRegistry                                        =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT RuleRegistry ((XFunction)*)>

<!ELEMENT XFunction ((
  XSignature |
  XAttribute |
  XArgument |
  Comments
)*)>

<!ATTLIST XFunction
  name CDATA #REQUIRED
  varargs (true | false) 'false'
  argtype CDATA #IMPLIED
  mixed (true | false) 'false'
  tip CDATA #IMPLIED
>

<!ELEMENT XSignature ((
  XAttribute |
  XArgument |
  Comments
)*)>

<!ATTLIST XSignature
  name CDATA #IMPLIED
  varargs (true | false) 'false'
  argtype CDATA #IMPLIED
  mixed (true | false) 'false'
  tip CDATA #IMPLIED
>

<!ELEMENT XAttribute ((
  Comments
)*)>

<!ATTLIST XAttribute
  name CDATA #IMPLIED
  type (string | int | boolean | script | any | object | ref) 'string'
  prompt CDATA #IMPLIED
  default CDATA #IMPLIED
  required (true | false) 'false'
>

<!ELEMENT XArgument ((
  Comments
)*)>

<!ATTLIST XArgument
  name CDATA #IMPLIED
  type CDATA #IMPLIED
  prompt CDATA #IMPLIED
  default CDATA #IMPLIED
  annotation CDATA #IMPLIED
  required (true | false) 'false'
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= WFProcess                                           =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT WFProcess ((
    Variable |
    Transition |
    Activity |
    ReportTitle |
    Status |
    Comments |
    WFProcess)*)
>
<!ATTLIST WFProcess
  name CDATA #IMPLIED
  title CDATA #IMPLIED
  trace CDATA #IMPLIED
  maxSteps CDATA #IMPLIED
  audit (true | false) 'false'
>

<!ELEMENT Status ((%exnode;)?)>
<!ELEMENT Comments (#PCDATA)>

<!ELEMENT WorkflowEditor EMPTY>
<!ATTLIST WorkflowEditor
  x CDATA #IMPLIED
  y CDATA #IMPLIED
>

<!ELEMENT Variable ((Comments | (%exnodeOrObject;))*)>
<!ATTLIST Variable
  name	  CDATA #REQUIRED
  value	  CDATA #IMPLIED
  input   (true | false) 'false'
  output   (true | false) 'false'
  external   (true | false) 'false'
>

<!-- Join, Owner, Split are deprecated -->

<!ELEMENT Activity ((
    WorkflowEditor |
    ReportTitle |
    Join |
    Owner |
    Variable |
    Action |
    ManualAction |
    JoinBreak |
    Transition |
    Comments |
    Split |
    FormRule)*)>

<!ATTLIST Activity
  name CDATA #REQUIRED
  id CDATA #IMPLIED
  audit (true | false) 'false'
  andJoin (true | false) 'false'
  andSplit (true | false) 'false'
  hidden (true | false) 'false'
>

<!ELEMENT ReportTitle ((%exnode;)?)>
<!ELEMENT JoinBreak ((%exnode;)?)>
<!ELEMENT FormRule ((%exnode; | String)?)>

<!-- ExternalProcess is deprecated, use SubProcess instead -->

<!ELEMENT Action (
  (ReportTitle | Iterate | Argument | Variable | Return |
   ActionResult | Condition | Timeout | expression | script |
   SubProcess | ExternalProcess | Comments |
   WorkItemRequest | WorkItemRequester | WorkItemDescription | WorkItemDelegator |
   (%exnode;) )*)>

<!-- applicationClass and class are deprecated, always use application
-->

<!ATTLIST Action
  name		   CDATA #IMPLIED
  id               CDATA #IMPLIED
  application	   CDATA #IMPLIED
  process          CDATA #IMPLIED
  timeout	   CDATA #IMPLIED
  hidden (true | false) 'false'
  applicationClass CDATA #IMPLIED
  class            CDATA #IMPLIED
  checkError	   (true | false) 'false'
  audit CDATA #IMPLIED
>

<!ELEMENT SubProcess ((ObjectRef | String | (%exnode;)))>
<!ELEMENT ExternalProcess (ObjectRef)>
<!ELEMENT WorkItemRequest (%exnode;)>
<!ELEMENT WorkItemRequester (%exnode;)>
<!ELEMENT WorkItemDescription (%exnode;)>
<!ELEMENT WorkItemDelegator ((%exnodeOrObject;)?)>

<!ELEMENT ActionResult ((Comments | (%exnodeOrObject;))*)>
<!ATTLIST ActionResult
  name CDATA #IMPLIED
  type CDATA #IMPLIED
  value CDATA #IMPLIED
  overwrite (true | false) 'false'
  resultName CDATA #IMPLIED
>

<!ELEMENT ManualAction (
    (Iterate | Owner | Argument | Variable | Return | Timeout |
     FormRef | Form | FormRule | ReportTitle | Comments | Condition |
     ExposedVariables | EditableVariables |
     WorkItemRequest | WorkItemRequester | WorkItemDescription | WorkItemName | WorkItemDelegator |
     ViewVariables)*
)>

<!ATTLIST ManualAction
  name		   CDATA #IMPLIED
  id               CDATA #IMPLIED
  timeout	   CDATA #IMPLIED
  hidden	   (true | false) 'false'
  syncExec	   (true | false) 'false'
  checkErrors	   (true | false) 'false'
  ignoreTimeout	   (true | false) 'false'
  itemType         CDATA #IMPLIED
  authType         CDATA #IMPLIED
>

<!ELEMENT Owner ((%exnode;)?)>
<!ATTLIST Owner
  name CDATA #IMPLIED
>

<!ELEMENT WorkItemName ((%exnode;)?)>

<!ELEMENT ExposedVariables ((%exnodeOrObject;)?)>
<!ELEMENT EditableVariables ((%exnodeOrObject;)?)>
<!ELEMENT ViewVariables (List?)>

<!ELEMENT Condition (%exnode;)>
<!ELEMENT Timeout (%exnode;)>

<!-- name is deprectaed, appendTo is deprecated  -->
<!ELEMENT Return ((Comments | (%exnodeOrObject;))*)>
<!ATTLIST Return
  from CDATA #IMPLIED
  to CDATA #IMPLIED
  append (true | false) 'false'
  appendTo CDATA #IMPLIED
  name CDATA #IMPLIED
>

<!ELEMENT Iterate (Break?)>
<!ATTLIST Iterate
  for CDATA #IMPLIED
  in CDATA #IMPLIED
>

<!ELEMENT Break (%exnode;)>

<!ELEMENT Argument ((Comments | (%exnodeOrObject;))*)>
<!ATTLIST Argument
  name CDATA #REQUIRED
  value CDATA #IMPLIED
  from CDATA #IMPLIED
>

<!ELEMENT Transition ((Comments | (%exnode;))*)>
<!ATTLIST Transition to CDATA #REQUIRED>

<!--=======================================================-->
<!--=                                                     =-->
<!--= WFCase                                              =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT WFCase ((
    (ObjectRef | Variables | Step | WavesetResult |
     NewWorkItems | InvalidWorkItems | ValidatedProcesses)*
)*)>

<!ATTLIST WFCase
  name CDATA #IMPLIED
  pending (true | false) 'false'
  complete (true | false) 'false'
  terminated (true | false) 'false'
  title CDATA #IMPLIED
>

<!ELEMENT NewWorkItems ((WorkItem)*)>
<!ELEMENT InvalidWorkItems ((String)*)>
<!ELEMENT ValidatedProcesses (List)>
<!ELEMENT AutoTransitions ((String)*)>

<!-- var list is deprected -->

<!ELEMENT Variables ( (%xmlObject;)? | Map? | (var)*)>

<!ELEMENT Step ((Variables | Result)*)>

<!ATTLIST Step
  id CDATA #IMPLIED
  name CDATA #IMPLIED
  title CDATA #IMPLIED
  activityId CDATA #IMPLIED
  state CDATA #IMPLIED
  joins CDATA #IMPLIED
  feeds CDATA #IMPLIED
  transitions CDATA #IMPLIED
  joinBreak (true | false) 'false'
>

<!ELEMENT Results ((Result)*)>

<!--
  status attribute is deprecated
  Messages and Exception deprectaed
-->

<!ELEMENT Result ((Variables | Arguments | Result | WFCase)* |
                  (Messages | Exception)*)>

<!ATTLIST Result
  actionId CDATA #IMPLIED
  name CDATA #IMPLIED
  status (ok | warning | error) #IMPLIED
  complete (true | false) 'false'
  workItem CDATA #IMPLIED
  title CDATA #IMPLIED
  timeout CDATA #IMPLIED
  owner CDATA #IMPLIED
>

<!ELEMENT Messages ((msg)*)>

<!ELEMENT msg (#PCDATA)>

<!ELEMENT Exception (#PCDATA)>

<!ELEMENT Arguments (Map?)>

<!-- Old, holdover from the the original WorkflowCase,
  == deprecate these!
  == Value may be an attribute for simple strings, or pcdata if a more
  == complex object.  I hate this, need to evolve a nice common
  == name/value representation.
  == Added ability to let the values be an XmlObject as well as pcdata.
  -->
<!ELEMENT var (%xmlObject;)>
<!ATTLIST var
  name	      CDATA #REQUIRED
  value	      CDATA #IMPLIED
  modified    (1 | 0) #IMPLIED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= WorkItem                                            =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT WorkItem ((
    Description |
    Variables |
    Modifications |
    TaskInstanceRef |
    FormRef |
    Form |
    ViewVariables |
    %persistentObjectElements;)*)>

<!ELEMENT Modifications (Map?)>
<!ELEMENT TaskInstanceRef (ObjectRef)>

<!ATTLIST WorkItem
  %persistentObjectAttributes;
  owner		CDATA #REQUIRED
  delegator CDATA #IMPLIED
  process	CDATA #IMPLIED
  activity	CDATA #IMPLIED
  complete      (true | false) 'false'
  dirty         (true | false) 'false'
  timeout	CDATA #IMPLIED
  syncExec	(true | false) 'false'
  request       CDATA #IMPLIED
  requester     CDATA #IMPLIED
  ignoreTimeout (true | false) 'false'
  itemType      CDATA #IMPLIED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= Policy                                              =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT Policy ((
    Description |
    Attributes |
    GeoAttributes |
    %persistentObjectElements;)*)>

<!ATTLIST Policy
  %persistentObjectAttributes;
  class CDATA #REQUIRED
>

<!ELEMENT Description (#PCDATA)>
<!ELEMENT GeoAttributes ((%xmlObject;) | expression)?>

<!--=======================================================-->
<!--=                                                     =-->
<!--= Resource                                            =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT Resource ((
    IdPolicy |
    PasswordPolicy |
    ResourcePasswordPolicy |
    ExcludedAccountsRule |
    ResourceAttributes |
    AccountAttributeTypes |
    Template |
    Retries |
    Approvers |
    Notifyees |
    LoginConfigEntry |
    ResourceUserForm |
    ObjectTypes |
    Features |
    UserNameGenerationRule | UserAccountConfirmationRule |
    RPCEncryptionKey |
    AccountTypes |
    %persistentObjectElements;)*)
>

<!ATTLIST Resource
  %persistentObjectAttributes;
  class CDATA #REQUIRED
  hasId (true | false) 'true'
  supportsScanning (true | false) 'false'
  typeString CDATA #IMPLIED
  typeDisplayString CDATA #IMPLIED
  noDelete (true | false) #IMPLIED
  applicationName CDATA #IMPLIED
  timeLastExamined CDATA #IMPLIED
  reconcileTime CDATA #IMPLIED
  deprecated (true | false) 'false'
  unlockOnPasswordReset (true | false) 'false'
  syncSource CDATA #IMPLIED
  facets CDATA #IMPLIED
  startupType CDATA #IMPLIED
>

<!ELEMENT IdPolicy (ObjectRef)>
<!ELEMENT PasswordPolicy (ObjectRef)>
<!ELEMENT ResourcePasswordPolicy (ObjectRef)>
<!ELEMENT ExcludedAccountsRule (ObjectRef)>
<!ELEMENT RPCEncryptionKey (ObjectRef)>

<!ELEMENT Template ((text | AttrDef | ObjectRef)*)>

<!ELEMENT Retries EMPTY>
<!ATTLIST Retries
  max CDATA #IMPLIED
  delay CDATA #IMPLIED
  email CDATA #IMPLIED
  emailThreshold CDATA #IMPLIED>

<!ELEMENT text (#PCDATA)>
<!ELEMENT AttrDef EMPTY>
<!ATTLIST AttrDef
  name CDATA #REQUIRED
  type CDATA #IMPLIED
  syntax CDATA 'string'
  multi (true | false) 'false'
>

<!ELEMENT ResourceUserForm ((ObjectRef)*)>

<!ELEMENT ObjectTypes ((ObjectType)*)>

<!ELEMENT ObjectType ((ObjectClasses | ObjectFeatures | ObjectAttributes)*)>
<!ATTLIST ObjectType
  name CDATA #REQUIRED
  nameKey CDATA #IMPLIED
  icon CDATA #IMPLIED
  container (true | false) 'false'
  products CDATA #IMPLIED
>

<!ELEMENT ObjectClasses ((ObjectClass)*)>
<!ATTLIST ObjectClasses
  primary  CDATA #IMPLIED
  operator CDATA #REQUIRED
>

<!ELEMENT ObjectClass EMPTY>
<!ATTLIST ObjectClass
  name CDATA #REQUIRED
>

<!ELEMENT ObjectFeatures ((ObjectFeature)*)>

<!ELEMENT ObjectFeature EMPTY>
<!ATTLIST ObjectFeature
  name CDATA #REQUIRED
  defaultForm CDATA #IMPLIED
  form CDATA #IMPLIED
  target CDATA #IMPLIED
>

<!ELEMENT ObjectAttributes ((ObjectAttribute)*)>
<!ATTLIST ObjectAttributes
  idAttr CDATA #IMPLIED
  displayNameAttr CDATA #IMPLIED
  descriptionAttr CDATA #IMPLIED
  objectClassAttr CDATA #IMPLIED
>

<!ELEMENT ObjectAttribute EMPTY>
<!ATTLIST ObjectAttribute
  name CDATA #REQUIRED
  type CDATA #IMPLIED
  namingAttr CDATA #IMPLIED
  audit (true | false) 'false'
>

<!ELEMENT Features ((Feature)*)>

<!ELEMENT Feature EMPTY>
<!ATTLIST Feature
  name CDATA #REQUIRED
  denied (true | false) 'false'
  onDeny (ignore | error) 'error'
>

<!ELEMENT AccountTypes (Map)>

<!--=======================================================-->
<!--=                                                     =-->
<!--= ResourceAttributes                                  =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT ResourceAttributes ((ResourceAttribute)*)>

<!--=======================================================-->
<!--=                                                     =-->
<!--= AccountAttributeTypes                               =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT AccountAttributeTypes ((AccountAttributeType)*)>
<!ATTLIST AccountAttributeTypes
  nextId CDATA #IMPLIED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= ResourceAttribute                                   =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT ResourceAttribute ((value)*)>
<!ATTLIST ResourceAttribute
  name CDATA #REQUIRED
  displayName CDATA #IMPLIED
  type CDATA #IMPLIED
  syntax CDATA #IMPLIED
  noTrim (true|false) #IMPLIED
  multi (true | false) #IMPLIED
  description CDATA #IMPLIED
  value CDATA #IMPLIED
  facets CDATA #IMPLIED
  parameter (true|false) #IMPLIED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= value                                               =-->
<!--=                                                     =-->
<!--=======================================================-->

<!-- Originally used "value" for simple literals, but we also
  == need to store semi-arbitrary objects in a few places.
  == Added "object", though I suppose we could merge that
  == with "value"?
  -->

<!ELEMENT value (#PCDATA)>
<!ATTLIST value
  type CDATA #IMPLIED
  syntax (string | int) 'string'
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= AccountAttributeType                                =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT AccountAttributeType ((value | AttributeDefinitionRef | Views)*)>
<!ATTLIST AccountAttributeType
  id CDATA #IMPLIED
  name CDATA #REQUIRED
  mapName CDATA #REQUIRED
  mapType CDATA #REQUIRED
  required (true | false) 'false'
  auditable (true | false) 'false'
  multi (true | false) 'false'
  ordered (true | false) 'false'
  readOnly (true | false) 'false'
  writeOnly (true | false) 'false'
  visualize (true | false) 'false'
  type CDATA #IMPLIED
  syntax CDATA #IMPLIED
  value CDATA #IMPLIED
>

<!ELEMENT Views ((String)*)>

<!--=======================================================-->
<!--=                                                     =-->
<!--= Application                                         =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT Application ((
    Resources |
    Services |
    RoleAttributes |
    RoleExclusionRefs |
    %persistentObjectElements;)*)>

<!ATTLIST Application
  %persistentObjectAttributes;
  opaque (true | false) 'false'
  ordered (true | false) 'false'
>

<!ELEMENT Resources ((ObjectRef)*)>
<!ELEMENT RoleAttributes ((RoleAttribute)*)>
<!ELEMENT RoleExclusionRefs ((ObjectRef)*)>
<!ELEMENT Authenticator (ObjectRef?)>

<!--=======================================================-->
<!--=                                                     =-->
<!--= LoginApp                                            =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT LoginApp ((
    LoginModGroups |
    %persistentObjectElements;)*)>

<!ATTLIST LoginApp
  %persistentObjectAttributes;
  subjectTimeout CDATA #REQUIRED
  obfuscateLoginErrors (true | false) 'false'
  disabled (true | false) 'false'
>

<!ELEMENT LoginModGroups ((ObjectRef)*)>

<!--=======================================================-->
<!--=                                                     =-->
<!--= LoginModGroup                                       =-->
<!--=                                                     =-->
<!--=======================================================-->
<!ELEMENT LoginModGroup ((
    LoginConfigEntryRefs |
    LoginConstraintRule |
    %persistentObjectElements;)*)>

<!ATTLIST LoginModGroup
    %persistentObjectAttributes;
>
<!ELEMENT LoginConfigEntryRefs ((LoginConfigEntryRef)*)>
<!ELEMENT LoginConfigEntryRef (AuthnPropertyRefs?,
                               UidAttributes?,
                               Contexts?,
                               LoginCorrelationRule?,
                               NewUserNameRule?)>
<!ATTLIST LoginConfigEntryRef
    name CDATA #REQUIRED
    authnResourceType CDATA #REQUIRED
    authnResourceName CDATA #IMPLIED
    authnResourceDisplayName CDATA #IMPLIED
    control CDATA #REQUIRED
>

<!ELEMENT AuthnPropertyRefs ((AuthnPropertyRef)*)>

<!ELEMENT AuthnPropertyRef EMPTY>
<!ATTLIST AuthnPropertyRef
    name CDATA #REQUIRED
    mapName CDATA #IMPLIED
    wsAdminId CDATA #IMPLIED
>

<!ELEMENT UidAttributes ((UidAttribute)*)>

<!ELEMENT UidAttribute EMPTY>
<!ATTLIST UidAttribute
    name CDATA #REQUIRED
>

<!ELEMENT Contexts ((Context)*)>

<!ELEMENT Context EMPTY>
<!ATTLIST Context
    name CDATA #REQUIRED
>

<!ELEMENT LoginConstraintRule (ObjectRef)>
<!ELEMENT LoginCorrelationRule (ObjectRef)>
<!ELEMENT NewUserNameRule (ObjectRef)>

<!--=======================================================-->
<!--=                                                     =-->
<!--= LoggedInTo                                          =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT LoggedInTo ((%xmlObject;)*)>

<!--=======================================================-->
<!--=                                                     =-->
<!--= Role                                                =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT Role ((
          PasswordExpiry |
          PasswordExpiryWarning |
          TempPasswordExpiry |
          AuthenticationQuestions |
          ResetLimit |
          Services |
          SuperRoles |
          Approvers |
          Notifyees |
          ApprovalAdministrator |
          Resources |
          RoleAttributes |
          RoleExclusionRefs |
          %persistentObjectElements;)*)
>

<!ATTLIST Role
  %persistentObjectAttributes;
  administrator         CDATA #IMPLIED
  idSource                CDATA #IMPLIED
  passwordSource        CDATA #IMPLIED
  provisionCheck        CDATA #IMPLIED
  accountLock                CDATA #IMPLIED
  resetOption                CDATA #IMPLIED
  resetCheck                CDATA #IMPLIED
  questionPolicy        CDATA #IMPLIED
  randomQuestionCount   CDATA #IMPLIED
  roundRobinQuestionIndex CDATA #IMPLIED
  opaque (true | false) 'false'
  ordered (true | false) 'false'
>

<!ELEMENT PasswordExpiry (TimePeriod)>

<!ELEMENT PasswordExpiryWarning (TimePeriod)>

<!ELEMENT TempPasswordExpiry (TimePeriod)>

<!ELEMENT AuthenticationQuestions ((Question)*)>
<!ELEMENT Question (#PCDATA)>
<!ATTLIST Question
  id CDATA #REQUIRED
>

<!ELEMENT ResetLimit (TimePeriod?)>
<!ATTLIST ResetLimit count CDATA #IMPLIED>

<!ELEMENT Services ((ObjectRef)*)>
<!ELEMENT SuperRoles ((ObjectRef)*)>

<!-- deprecated, should see Approvers -->
<!ELEMENT ApprovalAdministrator ((ObjectRef)*)>

<!ELEMENT Approvers ((ObjectRef)*)>
<!ELEMENT Notifyees ((ObjectRef)*)>

<!ELEMENT TimePeriod EMPTY>
<!ATTLIST TimePeriod
  unit (minutes | hours | days | weeks | months) #REQUIRED
  count CDATA #REQUIRED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= User                                                =-->
<!--=                                                     =-->
<!--=======================================================-->

<!-- Resources is deprecated, should now use Services -->

<!ELEMENT User ((
    UserRole |
    Roles |
    Policies |
    AdminRoles |
    Attribute |
    Answers |
    Resources |
    Services |
    Exclusions |
	LockExpiration |
	LoggedInTo |
    ResourceInfoList |
    ResourceIdentityList |
    PasswordHistory |
    PasswordResetHistory |
    PasswordExpiration |
    PasswordExpirationWarning |
    PrivateKeys |
    Permissions |
    ControlledObjectGroups |
    ExpandedControlledObjectGroups |
    AdminGroups |
    ExpandedAdminGroups |
    Forward |
	Delegates |
    UserForm |
    ViewUserForm |
    ComplianceViolations |
    AuditPolicies |
    IdmManager |
    %persistentObjectElements;)*)>

<!ATTLIST User
    %persistentObjectAttributes;
    asciipassword CDATA #IMPLIED
    password CDATA #IMPLIED
    email CDATA #IMPLIED
    passwordChanged (true | false) 'false'
    disabled (true | false) 'false'
	locked (true | false) 'false'
	questionLocked (true | false) 'false'
    failedPasswordLoginAttemptsCount CDATA #IMPLIED
    failedQuestionLoginAttemptsCount CDATA #IMPLIED
    nullAccountId (true | false) 'false'
    lastPasswordUpdate CDATA #IMPLIED
    lastAuditorScan CDATA #IMPLIED
>

<!-- this is for backward compatibility with single-role users -->
<!ELEMENT UserRole (ObjectRef)>
<!ELEMENT Roles ((ObjectRef)*)>
<!ELEMENT Policies ((ObjectRef)*)>
<!ELEMENT Exclusions ((ObjectRef)*)>
<!ELEMENT IdmManager (ObjectRef)>
<!ELEMENT AdminRoles ((ObjectRef)*)>

<!ELEMENT Answers ((Answer)*)>

<!ELEMENT PasswordExpiration (#PCDATA)>

<!ELEMENT PasswordExpirationWarning (#PCDATA)>

<!ELEMENT LockExpiration (#PCDATA)>

<!ELEMENT Answer (#PCDATA)>
<!ATTLIST Answer
  id CDATA #REQUIRED
  ascii CDATA #IMPLIED
  loginInterface CDATA #IMPLIED
  suppliedQuestion CDATA #IMPLIED
>

<!ELEMENT ResourceInfoList ((ResourceInfo)*)>
<!-- Map is deprecated, attributes should now be wrapped in
     the AccountAttributes element
-->
<!ELEMENT ResourceInfo ((
  ObjectRef |
  AccountAttributeValues |
  ResourcePropertyValues |
  ResourceAttributeValues |
  ResourceInstanceValues |
  Map |
  PasswordHistory
)*)>

<!ATTLIST ResourceInfo
  accountId CDATA #IMPLIED
  accountGUID CDATA #IMPLIED
  tempId CDATA #IMPLIED
  accountDisplayName CDATA #IMPLIED
  accountType CDATA #IMPLIED
  asciipassword CDATA #IMPLIED
  password CDATA #IMPLIED
  created (true | false) 'false'
  error (true | false) 'false'
  disabled (true | false) 'false'
  protected (true | false) 'false'
  passwordProtected (true | false) 'false'
  passwordReset (true | false) 'false'
  dependentResourceId CDATA #IMPLIED
  pendingApproval (true | false) 'false'
  rejector CDATA #IMPLIED
  lastPasswordUpdate CDATA #IMPLIED
  instanceId CDATA #IMPLIED
>

<!ELEMENT AccountAttributeValues (Map?)>
<!ELEMENT AccountPropertyValues (Map?)>
<!ELEMENT ResourceAttributeValues (Map?)>
<!ELEMENT ResourcePropertyValues (Map?)>
<!ELEMENT PasswordHistory (List?)>

<!ELEMENT ResourceIdentityList ((ResourceIdentity)*)>
<!ELEMENT ResourceIdentity (ObjectRef?)>
<!ATTLIST ResourceIdentity
  accountId CDATA #IMPLIED
>

<!ELEMENT PasswordResetHistory ((Timestamp)*)>
<!ELEMENT Timestamp (#PCDATA)>

<!ELEMENT PrivateKeys ((PrivateKey)*)>
<!ELEMENT PrivateKey (#PCDATA)>
<!ATTLIST PrivateKey
  application CDATA #IMPLIED
  url CDATA #REQUIRED
  accountId CDATA #IMPLIED
  asciipassword CDATA #IMPLIED
  password CDATA #IMPLIED
  hasCapabilities CDATA #IMPLIED
>

<!ELEMENT Forward (ObjectRef?)>

<!ELEMENT Delegates ((Delegate)*)>

<!ELEMENT Delegate ((AdminGroups | DelegateTo | StartDelegationOn | EndDelegationOn)*)>
<!ATTLIST Delegate
	notify (true | false) 'false'
>

<!ELEMENT DelegateTo ((ObjectRef)*)>
<!ATTLIST DelegateTo
	type CDATA #REQUIRED
>

<!ELEMENT StartDelegationOn (#PCDATA)>

<!ELEMENT EndDelegationOn (#PCDATA)>

<!ELEMENT Permissions ((Permission)*)>

<!ELEMENT Permission ((Objects | ObjectGroups)*)>
<!ATTLIST Permission
    type CDATA #REQUIRED
    rights CDATA #REQUIRED
    instances CDATA #IMPLIED
    daytime CDATA #IMPLIED
>

<!ELEMENT Objects ((ObjectRef)*)>
<!ELEMENT ObjectGroups ((ObjectRef)*)>

<!ELEMENT ControlledObjectGroups ((ObjectRef)*)>

<!ELEMENT ExpandedControlledObjectGroups ((ObjectRef)*)>

<!ELEMENT AdminGroups ((ObjectRef)*)>

<!ELEMENT ExpandedAdminGroups ((ObjectRef)*)>

<!ELEMENT UserForm (ObjectRef)>

<!ELEMENT ViewUserForm (ObjectRef)>

<!ELEMENT ComplianceViolations ((ObjectRef)*)>

<!--=======================================================-->
<!--=                                                     =-->
<!--= Subject                                             =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT Subject ((
  AdminRoles |
  Principals |
  Options)*)
>

<!ATTLIST Subject
  name CDATA #REQUIRED
  readOnly (true | false) 'false'
  subjectTimeout CDATA #IMPLIED
  lastAccessTime CDATA #IMPLIED
>

<!ELEMENT Principals ((ObjectRef)*)>
<!ELEMENT Options ((Map?))>

<!--=======================================================-->
<!--=                                                     =-->
<!--= ResourceAccount - deprecated in favor of Account.   =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT ResourceAccount ((
  %persistentObjectElements; |
  PotentialOwners |
  CurrentAttributes |
  PreviousAttributes)*)
>

<!ATTLIST ResourceAccount
  %persistentObjectAttributes;
  resource CDATA #IMPLIED
  resourceId CDATA #IMPLIED
  accountId CDATA #REQUIRED
  owner CDATA #IMPLIED
  userid CDATA #IMPLIED
  situation CDATA #IMPLIED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= Account - supersedes ResourceAccount.               =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT Account ((
  %persistentObjectElements; |
  PotentialOwners |
  Explanation |
  CurrentAttributes |
  PreviousAttributes |
  ResourceInstanceParameters)*)
>

<!ATTLIST Account
  %persistentObjectAttributes;
  resourceId CDATA #REQUIRED
  accountId CDATA #REQUIRED
  owner CDATA #IMPLIED
  userid CDATA #IMPLIED
  situation CDATA #IMPLIED
  situationChanged CDATA #IMPLIED
  discoveredSituation CDATA #IMPLIED
  nativeGUID CDATA #IMPLIED
  nativeId CDATA #IMPLIED
  accountExists (true | false) 'false'
  disabled (true | false) #IMPLIED
  typeString CDATA #IMPLIED
  resource CDATA #IMPLIED
>

<!ELEMENT PotentialOwners (List?)>
<!ELEMENT CurrentAttributes (Map?)>
<!ELEMENT PreviousAttributes (Map?)>
<!ELEMENT Explanation ((%xmlObject;)?)>

<!--=======================================================-->
<!--=                                                     =-->
<!--= EncryptionKey                                       =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT EncryptionKey ((%persistentObjectElements;)*)>

<!ATTLIST EncryptionKey
  %persistentObjectAttributes;
  value CDATA #IMPLIED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= SpecificSituation                                   =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT SpecificSituation ((
  UserRef | ResourceRef)*)
>

<!ATTLIST SpecificSituation
  situation CDATA #REQUIRED
  accountId CDATA #IMPLIED
  context CDATA #IMPLIED
>

<!ELEMENT UserRef (ObjectRef?)>

<!ELEMENT ResourceRef (ObjectRef?)>

<!--=======================================================-->
<!--=                                                     =-->
<!--= RoleAttribute                                       =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT RoleAttribute ((
    ResourceRef |
    Requirement |
    AttributeValueRef |
    AttributeValueString |
    AttributeValueType |
    Comment |
    AttributeName |
    %xmlObject;))*>

<!ATTLIST RoleAttribute
  name CDATA #REQUIRED
  csv (true | false) 'false'
>

<!ELEMENT Requirement (#PCDATA)>
<!ELEMENT AttributeValueRef (ObjectRef?)>
<!ELEMENT AttributeValueString (String | List)>
<!ELEMENT AttributeValueType (#PCDATA)>
<!ELEMENT Comment (#PCDATA)>
<!ELEMENT AttributeName (#PCDATA)>

<!--=======================================================-->
<!--=                                                     =-->
<!--= Administrator                                       =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT Administrator ((
    Permissions |
    ControlledObjectGroups |
    MemberObjectGroups |
    AdminGroups |
    Forward |
    UserForm |
    ViewUserForm |
    %persistentObjectElements;)*)>

<!ATTLIST Administrator
    %persistentObjectAttributes;
    asciipassword CDATA #IMPLIED
    password CDATA #IMPLIED
    email CDATA #IMPLIED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= AdminGroup                                          =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT AdminGroup ((
    Permissions |
    ControlledObjectGroups |
    AdminGroups |
    Assigners |
    %persistentObjectElements;)*)>

<!ATTLIST AdminGroup
    %persistentObjectAttributes;
    description CDATA #IMPLIED
>

<!ELEMENT Assigners ((ObjectRef)*)>
<!--=======================================================-->
<!--=                                                     =-->
<!--= AdminRole                                           =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT AdminRole ((
    Permissions |
    AdminGroups |
    AdminGroupsRule |
    ControlledObjectGroups |
    ControlledObjectGroupsRule |
    ControlledObjectSubGroups |
    UserForm |
    ViewUserForm |
    %persistentObjectElements;)*)>

<!ATTLIST AdminRole
    %persistentObjectAttributes;
>

<!ELEMENT AdminGroupsRule (ObjectRef)>

<!ELEMENT ControlledObjectGroupsRule (ObjectRef)>

<!ELEMENT ControlledObjectSubGroups ((
    ControlledObjectSubGroup)*)>

<!ELEMENT ControlledObjectSubGroup ((
    ObjectRef |
    IncludeObjects |
    ExcludeObjects)*)>

<!ELEMENT IncludeObjects ((ObjectRef)*)>
<!ELEMENT ExcludeObjects ((ObjectRef)*)>

<!--=======================================================-->
<!--=                                                     =-->
<!--= ObjectGroup                                         =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT ObjectGroup ((Parent |
                        Policies |
                        Approvers |
                        Notifyees |
                        UserForm |
                        ViewUserForm |
                        ResourceContainerInfo |
                        UserMembersRule |
                        AuditPolicies |
                        PathFromTop |
                        %persistentObjectElements;)*)>
<!ATTLIST ObjectGroup
    %persistentObjectAttributes;
>

<!ELEMENT Parent (ObjectRef)>
<!ELEMENT ResourceContainerInfo (ObjectRef)>
<!ELEMENT AuditPolicies ((ObjectRef)*)>

<!ATTLIST ResourceContainerInfo
    junction (true | false) 'false'
    containerId CDATA #IMPLIED
    containerType CDATA #IMPLIED
>

<!ELEMENT UserMembersRule (ObjectRef)>
<!ATTLIST UserMembersRule
    cacheTimeout CDATA #IMPLIED
>

<!ELEMENT PathFromTop (List?)>

<!--=======================================================-->
<!--=                                                     =-->
<!--= LoginConfig                                         =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT LoginConfig ((
    LoginConfigEntries |
    Applications |
    %persistentObjectElements;)*)>

<!ATTLIST LoginConfig
    %persistentObjectAttributes;
>

<!ELEMENT LoginConfigEntries ((LoginConfigEntry)*)>

<!ATTLIST LoginConfigEntry
    name CDATA #REQUIRED
    type CDATA #REQUIRED
    displayName CDATA #REQUIRED
    shortDisplayName CDATA #IMPLIED
>

<!ELEMENT LoginConfigEntry ((AuthnProperties | SupportedApplications)*)>

<!ELEMENT AuthnProperties ((AuthnProperty)*)>

<!ELEMENT AuthnProperty EMPTY>
<!ATTLIST AuthnProperty
    name CDATA #REQUIRED
    displayName CDATA #IMPLIED
    doNotMap (true | false) 'false'
    isId CDATA #IMPLIED
    formFieldType CDATA #IMPLIED
    dataSource CDATA #IMPLIED
>

<!ELEMENT SupportedApplications ((SupportedApplication)*)>

<!ELEMENT SupportedApplication EMPTY>
<!ATTLIST SupportedApplication
    name CDATA #REQUIRED
>

<!ELEMENT Applications ((App)*)>

<!ATTLIST App
    name CDATA #REQUIRED
    displayName CDATA #IMPLIED
    loginInterface (true | false) 'false'
    subjectTimeout CDATA #REQUIRED
    obfuscateLoginErrors (true | false) 'false'
>

<!-- note that AllowedLoginConfigEntries is deprecated, but we have
     to keep it around until we transition old repositories
-->

<!ELEMENT App ((AllowedLoginConfigEntries | LoginConfigEntryRefs)*)>

<!ELEMENT AllowedLoginConfigEntries ((AllowedLoginConfigEntry)*)>

<!ELEMENT AllowedLoginConfigEntry EMPTY>
<!ATTLIST AllowedLoginConfigEntry
    name CDATA #REQUIRED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= AttributeDefinitions                                =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT AttributeDefinition ((%persistentObjectElements;)*)>

<!ATTLIST AttributeDefinition
    %persistentObjectAttributes;
    type CDATA #IMPLIED
    syntax CDATA 'string'
    multi (true | false) 'false'
    ordered (true | false) 'false'
>

<!ELEMENT AttributeDefinitionRef (ObjectRef)>

<!--=======================================================-->
<!--=                                                     =-->
<!--= Attributes                                          =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT Attributes ((Attribute)*)>

<!--
 Sigh, this element is now also used inside Object but those
 only allow the name & value attributes.  I don't want to
 introduce a new Attribute type or namespaces yet, so let
 them overload.  The objects that use the original Attributes
 could very well be migrated to using the Generic Object
 representation of attributes with Forms someday.
-->

<!ELEMENT Attribute ((value | (%xmlObject;))*)>
<!ATTLIST Attribute
  name CDATA #REQUIRED
  type CDATA #IMPLIED
  syntax CDATA 'string'
  ordered (true | false) #IMPLIED
  value CDATA #IMPLIED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= EmailTemplate                                       =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT EmailTemplate ((
    Comments |
    Variable |
    subject |
    body |
    %persistentObjectElements;)*)>

<!ATTLIST EmailTemplate
    %persistentObjectAttributes;
    smtpHost CDATA #IMPLIED
    fromAddress CDATA #IMPLIED
    toAddress CDATA #IMPLIED
    htmlEnabled (true | false) 'false'
    mimeType CDATA #IMPLIED
    cc CDATA #IMPLIED
>

<!ELEMENT subject (#PCDATA)>
<!ELEMENT body (#PCDATA)>

<!--=======================================================-->
<!--=                                                     =-->
<!--= Rule                                                =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT Rule ((
  Description | Comments | RuleArgument | RuleAccess | RunAsUser |
  (%exnodeOrObject;) | Value |
  %persistentObjectElements;)*)
>

<!ATTLIST Rule
  %persistentObjectAttributes;
  localScope (true | false) 'false'
  authorize (true | false) 'false'
>

<!-- deprecated, just use an xmlObject without a wrapper -->
<!ELEMENT Value (%xmlObject;)>

<!ELEMENT RunAsUser (ObjectRef)>

<!ELEMENT RuleArgument ((Comments | (%exnodeOrObject;))*)>
<!ATTLIST RuleArgument
  name CDATA #IMPLIED
  value CDATA #IMPLIED
  locked (true | false) 'false'
>

<!ELEMENT RuleAccess ((ObjectRef)*)>

<!--=======================================================-->
<!--=                                                     =-->
<!--= Extract                                             =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT Extract ((
  Source |
  RoleRule |
  FixedRole|
  GroupRule |
  CorrelationRule | UserNameGenerationRule | UserAccountConfirmationRule |
  FixedGroup |
  %persistentObjectElements;)*)
>

<!ATTLIST Extract
  %persistentObjectAttributes;
  correlation CDATA #IMPLIED
  log CDATA #IMPLIED
  output CDATA #IMPLIED
  prefix CDATA #IMPLIED
  maxErrors CDATA #IMPLIED
  maxAccounts CDATA #IMPLIED
  outputFormat CDATA #IMPLIED
>

<!ELEMENT Source (ObjectRef)>
<!ELEMENT FixedRole (ObjectRef)>
<!ELEMENT RoleRule (ObjectRef)>
<!ELEMENT FixedGroup (ObjectRef)>
<!ELEMENT GroupRule (ObjectRef)>
<!-- Deprecate "CorrelationRule" in favor of "UserNameGenerationRule". -->
<!ELEMENT CorrelationRule (ObjectRef)>
<!ELEMENT UserNameGenerationRule (ObjectRef)>
<!ELEMENT UserAccountConfirmationRule (ObjectRef)>

<!--=======================================================-->
<!--=                                                     =-->
<!--= LoadConfig                                          =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT LoadConfig ((
  %persistentObjectElements; |
  RoleRule |
  FixedRole |
  GroupRule |
  EventResource |
  MergeAttributes |
  FixedGroup |
  CorrelationRule | UserNameGenerationRule | UserAccountConfirmationRule |
  DefaultPassword |
  FormRef)*)
>

<!ATTLIST LoadConfig
  %persistentObjectAttributes;
  inFile CDATA #IMPLIED
  outFile CDATA #IMPLIED
  logFile CDATA #IMPLIED
  source CDATA #IMPLIED
  correlation CDATA #IMPLIED
  prefix CDATA #IMPLIED
  provision (true | false) #IMPLIED
  reProvision (true | false) #IMPLIED
  ignorePasswords (true | false) #IMPLIED
  generatePasswords (true | false) #IMPLIED
  ignoreRoles (true | false) #IMPLIED
  ignoreGroups (true | false) #IMPLIED
  correlationRequired (true | false) 'false'
  updateExisting (true | false) 'false'
  updateAttributes (true | false) 'false'
  updateGroups (true | false) 'false'
  updateRoles (true | false) 'false'
  testMode (true | false) #IMPLIED
  external (true | false) #IMPLIED
  maxErrors CDATA #IMPLIED
  eventLoad (true | false) #IMPLIED
  estimatedAccounts CDATA #IMPLIED
  applyMetaView (true | false) 'false'
>

<!ELEMENT EventResource (ObjectRef)>
<!ELEMENT DefaultPassword (EncryptedData)>
<!ELEMENT MergeAttributes ((String | List))>


<!--=======================================================-->
<!--=                                                     =-->
<!--= Discovery                                           =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT Discovery ((
  %persistentObjectElements; |
  Object)*)
>

<!ATTLIST Discovery
  %persistentObjectAttributes;
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= Message                                             =-->
<!--=                                                     =-->
<!--=======================================================-->

<!--
  == This was originally defined to contain "value" elements,
  == but later "object" was added for more flexibility.
  == Still later XmlObject & XmlObjectFactory utilities were
  == added which is now the standard way to represent
  == arbitrary Java objects.
  == Messages serialized in Java will use XmlObjects,
  == but we still recognize value and object elements for
  == backward compatibility with Messages formatted by
  == the C++ agent.  Someday this should be updated.
  == UPDATE: These originally stored preformatted text
  == in an attribute, but that allows the parser to screw with formatting.
  == now text is inside the Text element.
  == The text attribute is deprecated.
  -->

<!ELEMENT Message ((Text | (%xmlObject;) | value | object)*)>
<!ATTLIST Message
  id CDATA #IMPLIED
  text CDATA #IMPLIED
  owner CDATA #IMPLIED
>

<!ELEMENT DateTime EMPTY>
<!ATTLIST DateTime
    jan1970millis CDATA #REQUIRED
    style         CDATA #IMPLIED
>

<!ELEMENT Number EMPTY>
<!ATTLIST Number
    number CDATA #REQUIRED
    isLong CDATA #IMPLIED
    style  CDATA #IMPLIED
>

<!ELEMENT Text (#PCDATA)>

<!-- We'll let object have anything in it, though it should
  == only be either PCDATA or a PersistentObject?
  -->

<!ELEMENT object ANY>
<!ATTLIST object
  class CDATA #REQUIRED
>

<!ELEMENT ErrorMessage ((Text | (%xmlObject;))*)>
<!ATTLIST ErrorMessage
  id CDATA #IMPLIED
  severity (ok | warning | error) 'error'
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= WavesetResult                                       =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT WavesetResults ((WavesetResult)*)>

<!-- status is no longer used on the Java side, but keep it around
     for awhile in case the agent still generates it
-->

<!ELEMENT WavesetResult ((ResultItem)*)>
<!ATTLIST WavesetResult
  name CDATA #IMPLIED
  title CDATA #IMPLIED
  status CDATA #IMPLIED
>

<!-- kludge, maintain temporary backward compatibility with the
  == old "object" element.
  == status is no longer used, but keep it around in case
  == the agent still generates it.
-->
<!ELEMENT ResultItem ((object | %xmlObject;)*)>
<!ATTLIST ResultItem
  name CDATA #IMPLIED
  type CDATA #IMPLIED
  status (ok | warning | error) 'ok'
>

<!ELEMENT ResultError ((Message | StackTrace | ResultError)*)>
<!ATTLIST ResultError
  throwable CDATA #IMPLIED
>

<!ELEMENT StackTrace (#PCDATA)>

<!ELEMENT ResourceResult (WavesetResult?)>
<!ATTLIST ResourceResult
  name CDATA #IMPLIED
  accountId CDATA #IMPLIED
  operation CDATA #IMPLIED
  error (true | false) 'false'
  protected (true | false) 'false'
>

<!ELEMENT ResultTable ((ResultTitle?, ResultColumns?, ResultRows?))>
<!ATTLIST ResultTable
  name CDATA #IMPLIED
>

<!ELEMENT ResultTitle ((Message))>
<!ELEMENT ResultColumns ((List?))>
<!ELEMENT ResultRows ((List?))>

<!ELEMENT ResultData ((%xmlObject;)?)>
<!ATTLIST ResultData
  name CDATA #IMPLIED
  value CDATA #IMPLIED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= TaskDefinition                                      =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT TaskDefinition ((
  %persistentObjectElements; |
  ExtendedResultTypes |
  Extension |
  Form |
  Description |
  Hosts)*)
>

<!ELEMENT ExtendedResultTypes ((List?))>

<!-- Deprecate overloading "type"
     in favor of explicit "taskType"
  -->

<!ATTLIST TaskDefinition
  %persistentObjectAttributes;
  type CDATA #IMPLIED
  taskType CDATA #IMPLIED
  executor CDATA #REQUIRED
  requiresExecutorDelete (true | false) 'false'
  singleton (true | false) 'false'
  suspendable (true | false) 'false'
  restartable (true | false) 'false'
  syncControlAllowed (true | false) 'false'
  execMode (sync | async | asyncImmediate) 'async'
  execLimit CDATA #IMPLIED
  resultLimit CDATA #IMPLIED
  resultOption (wait | delete | rename | terminate) 'delete'
  quotaName CDATA #IMPLIED
  visibility CDATA #IMPLIED
  reportsProgress (true | false) 'false'
  progressInterval CDATA #IMPLIED
  displayName CDATA #IMPLIED
  resultFormatter CDATA #IMPLIED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= Form                                                =-->
<!--=                                                     =-->
<!--=======================================================-->

<!-- Note, attributes might ordinarilly be required, but we're
     letting them be implied so the form editor can process
     (and generate) invalid files and fix them.
-->

<!ELEMENT Form (Description | Comments |
                Display | Namespace | Include | Field |
                FieldLoop | FieldRef | FormRef | Properties |
                defun | defvar)*>
<!ATTLIST Form
  name CDATA #IMPLIED
  title CDATA #IMPLIED
  subTitle CDATA #IMPLIED
  help CDATA #IMPLIED
  baseContext CDATA #IMPLIED
  noDefaultButtons (true | false) 'false'
  trace (true | false) 'false'
  objectLocationID CDATA #IMPLIED
>

<!ELEMENT Namespace EMPTY>
<!ATTLIST Namespace
  name CDATA #IMPLIED
  value CDATA #IMPLIED
>

<!-- kludge: allowing pre-resolved objects in the Include list for
     HttpSession serialization
-->
<!ELEMENT Include ((ObjectRef | Form | Library)*)>

<!ELEMENT FieldLoop
  ((expression | Comments | Field | FieldRef | FormRef | FieldLoop)*)>
<!ATTLIST FieldLoop
  for CDATA #IMPLIED
  in CDATA #IMPLIED
>

<!ELEMENT FieldMap ((Comments)*)>
<!ATTLIST FieldMap
  name CDATA #IMPLIED
  source CDATA #IMPLIED
  readOnly (true | false) 'false'
>

<!ELEMENT FieldRef ((Comments | Property)*)>
<!ATTLIST FieldRef
  name CDATA #IMPLIED
  baseContext CDATA #IMPLIED
>

<!ELEMENT FormRef ((Comments | Property | ObjectRef)*)>
<!ATTLIST FormRef
  name CDATA #IMPLIED
  baseContext CDATA #IMPLIED
>

<!ELEMENT Field ((Comments | Help | Default | FieldValue | Hidden | Disable |
                  Enable | Expansion | Derivation | Display |
                  Constraints | Validation | expression |
                  Field | FieldLoop | FieldRef | FormRef | FieldAction |
                  defun | defvar | Properties)*)>
<!--
   jsl - attributes below "display" are deprecated, new forms
   should use the Display element with generic display properties
-->

<!ATTLIST Field
  name CDATA #IMPLIED
  type CDATA #IMPLIED
  syntax CDATA 'string'
  required (true | false) 'false'
  confirm CDATA #IMPLIED
  library (true | false) 'false'
  button (true | false) 'false'
  hidden (true | false) 'false'

  display (true | false) 'false'
  container (true | false) 'false'
  default CDATA #IMPLIED
  prompt CDATA #IMPLIED
  alwaysEvaluate (true | false) 'false'
  pagename CDATA #IMPLIED
  displaytype CDATA #IMPLIED
  forcedisplay CDATA #IMPLIED
  secret (true | false) 'false'
  availabletitle CDATA #IMPLIED
  selectedtitle CDATA #IMPLIED
  nowrap (true | false) 'false'
  resacctattr (true | false) 'false'
  size CDATA #IMPLIED
  maxlen CDATA #IMPLIED
  labels CDATA #IMPLIED
  rows CDATA #IMPLIED
  columns CDATA #IMPLIED
  help CDATA #IMPLIED
>

<!ELEMENT Help (#PCDATA)>

<!ELEMENT FieldValue (ExpansionGroup*)>
<!ATTLIST FieldValue
  value CDATA #IMPLIED
>

<!ELEMENT Hidden ((%exnode;))>
<!ELEMENT Visible ((%exnode;))>
<!ELEMENT Disable ((%exnode;))>
<!ELEMENT Enable ((%exnode;))>
<!ELEMENT Derivation ((%exnodeOrObject;))>
<!ELEMENT Validation ((%exnode;))>
<!ELEMENT Expansion ((%exnodeOrObject;))>
<!ELEMENT Default ((%exnodeOrObject;))>
<!ELEMENT Constraints ((%exnodeOrObject;))>
<!ELEMENT FieldAction ((%exnode;))>

<!ELEMENT ExpansionGroup (expression?, FieldExpansion*)>

<!ELEMENT FieldExpansion (expression?)>
<!ATTLIST FieldExpansion
  name CDATA #IMPLIED
  value CDATA #IMPLIED
>

<!-- the type attribute is equivalent to the displaytype in Field -->

<!ELEMENT Display ((Property)*)>
<!ATTLIST Display
  type CDATA #IMPLIED
  class CDATA #IMPLIED
  syntax CDATA #IMPLIED
  action (true | false) 'false'
>
<!-- display properties include:
  secret
  actionselect
  multiselect
  availabletitle
  selectedtitle
  label
  sectionlabel
  nowrap
  resacctattr
  size
  maxlen
  confirm
  labels
  columns
  rows
-->

<!--=======================================================-->
<!--=                                                     =-->
<!--= CustomCatalog                                      =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT CustomCatalog ((MessageSet)*)>
<!ATTLIST CustomCatalog
  id CDATA #IMPLIED
  enabled CDATA #IMPLIED
>

<!ELEMENT MessageSet ((Msg)*)>
<!ATTLIST MessageSet
  language CDATA #IMPLIED
  country CDATA #IMPLIED
  variant CDATA #IMPLIED
>

<!ELEMENT Msg (#PCDATA)>
<!ATTLIST Msg
  id CDATA #REQUIRED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= TaskInstance                                        =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT TaskInstance ((
  %persistentObjectElements; |
  TaskDefinitionRef |
  TaskScheduleRef |
  Description |
  Variables |
  SubjectRef |
  WavesetResult |
  Extension |
  Hosts)*)
>

<!ELEMENT SubjectRef (#PCDATA)>

<!ATTLIST TaskInstance
  %persistentObjectAttributes;
  state (ready | executing | suspended | finished) 'ready'
  owner CDATA #IMPLIED
  terminated (true | false) 'false'
  started CDATA #IMPLIED
  expires CDATA #IMPLIED
  resumes CDATA #IMPLIED
  execTime CDATA #IMPLIED
  host CDATA #IMPLIED
  hostname CDATA #IMPLIED
  progress CDATA #IMPLIED
  hasExtendedResult (true | false) 'false'
  extendedStatus CDATA #IMPLIED
  resultLimit CDATA #IMPLIED
>

<!ELEMENT TaskDefinitionRef (ObjectRef?)>

<!ELEMENT TaskScheduleRef (ObjectRef?)>

<!--=======================================================-->
<!--=                                                     =-->
<!--= TaskResult                                          =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT TaskResult ((
  %persistentObjectElements; |
  TaskInstanceRef |
  WavesetResult)*)
>

<!ATTLIST TaskResult
  %persistentObjectAttributes;
  sequence CDATA #REQUIRED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= TaskResultPage                                      =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT TaskResultPage ((
  %persistentObjectElements; |
  html)*)
>

<!ATTLIST TaskResultPage
  %persistentObjectAttributes;
  taskid CDATA #REQUIRED
  page CDATA #IMPLIED
  from CDATA #IMPLIED
  to CDATA #IMPLIED
  fromSequence CDATA #IMPLIED
  toSequence CDATA #IMPLIED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= TaskTemplate                                        =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT TaskTemplate ((
  %persistentObjectElements; |
  FormRef |
  TaskDefinitionRef |
  Variables |
  Description |
  Hosts)*)
>

<!-- jsl - taskTypeDisplayName isn't required and should be removed -->

<!ATTLIST TaskTemplate
  %persistentObjectAttributes;
  visibility CDATA #IMPLIED
  taskType CDATA #IMPLIED
  taskName CDATA #IMPLIED
  mode CDATA #IMPLIED
  taskTypeDisplayName CDATA #IMPLIED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= Event                                               =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT Event ((Extension | %persistentObjectElements;)*)>

<!ATTLIST Event
  %persistentObjectAttributes;
  eventType CDATA #IMPLIED
>

<!-- an Event extension used for task events -->

<!ELEMENT TaskEvent EMPTY>
<!ATTLIST TaskEvent
  taskId CDATA #REQUIRED
  host CDATA #IMPLIED
  state CDATA #IMPLIED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= TaskSchedule                                        =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT TaskSchedule ((
  %persistentObjectElements; |
  TaskDefinitionRef |
  ObjectGroupRef |
  Description |
  Variables |
  SubjectRef |
  WavesetResult |
  Hosts |
  NextRepetitionRule)*)
>

<!ELEMENT Hosts ((%xmlObject;)*)>

<!ATTLIST TaskSchedule
  %persistentObjectAttributes;
  taskName CDATA #IMPLIED
  start CDATA #IMPLIED
  time CDATA #IMPLIED
  executionCount CDATA #IMPLIED
  repetitionCount CDATA #IMPLIED
  repetitionUnit CDATA #IMPLIED
  skipMissedTimes (true | false) 'false'
  resultOption (wait | delete | rename | terminate) 'delete'
  singleton (true | false) 'false'
  disabled (true | false) 'false'
  daemon (true | false) 'false'
  maxInstances CDATA #IMPLIED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= expression                                          =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT Library ((Comments | Library | %xmlObject; | %persistentObject; |
                     defun | defvar)*)>
<!ATTLIST Library
  name CDATA #IMPLIED
  disabled (true | false) 'false'
>

<!-- XPRESS not recognizes any xmlObject and wraps then in a value node -->
<!ELEMENT expression ((%exnode; | %xmlObject;))>

<!ELEMENT s (#PCDATA)>
<!ELEMENT i (#PCDATA)>
<!ELEMENT o ((%xmlObject;))>
<!ELEMENT null EMPTY>
<!ELEMENT ref (#PCDATA | %exnode;)*>
<!ELEMENT extref (#PCDATA | %exnode;)*>
<!ELEMENT set ((%exnode;)?, (%exnode;)?, (%exnodeOrObject;)?)>
<!ATTLIST set name CDATA #IMPLIED>
<!ELEMENT block ((%exnodeOrObject;)*)>
<!ATTLIST block name CDATA #IMPLIED trace (true | false) 'false'>
<!ELEMENT if ((%exnode;), (%exnodeOrObject;), (%exnodeOrObject;)?)>
<!ELEMENT then ((%exnodeOrObject;)*)>
<!ELEMENT else ((%exnodeOrObject;)*)>
<!ELEMENT call ((%exnodeOrObject;)*)>
<!ATTLIST call name CDATA #REQUIRED>
<!ELEMENT print ((%exnodeOrObject;)*)>
<!ELEMENT defun ((%exnodeOrObject;)*)>
<!ATTLIST defun name CDATA #REQUIRED>
<!ELEMENT defvar ((%exnodeOrObject;)*)>
<!ATTLIST defvar name CDATA #REQUIRED>
<!ELEMENT defarg ((%exnodeOrObject;)*)>
<!ATTLIST defarg name CDATA #REQUIRED>
<!ELEMENT eval ((%exnode;)*)>
<!ELEMENT eq ((%exnode;)*)>
<!ELEMENT neq ((%exnode;)*)>
<!ELEMENT gt ((%exnode;), (%exnode;))>
<!ELEMENT gte ((%exnode;), (%exnode;))>
<!ELEMENT lt ((%exnode;), (%exnode;))>
<!ELEMENT lte ((%exnode;), (%exnode;))>
<!ELEMENT and ((%exnode;)*)>
<!ELEMENT or ((%exnode;)*)>
<!ELEMENT select ((%exnode;)*)>
<!ELEMENT not (%exnode;)>
<!ELEMENT cmp ((%exnode;), (%exnode;))>
<!ELEMENT ncmp ((%exnode;), (%exnode;))>
<!ELEMENT isTrue (%exnodeOrObject;)>
<!ELEMENT isFalse (%exnodeOrObject;)>
<!ELEMENT isnull (%exnodeOrObject;)>
<!ELEMENT notnull (%exnodeOrObject;)>
<!ELEMENT add ((%exnode;)*)>
<!ELEMENT sub ((%exnode;)*)>
<!ELEMENT mult ((%exnode;)*)>
<!ELEMENT div ((%exnode;)*)>
<!ELEMENT mod ((%exnode;)*)>
<!ELEMENT trim (%exnode;)>
<!ELEMENT ltrim (%exnode;)>
<!ELEMENT rtrim (%exnode;)>
<!ELEMENT ztrim (%exnode;)>
<!ELEMENT upcase (%exnode;)>
<!ELEMENT downcase (%exnode;)>
<!ELEMENT substr ((%exnode;)*)>
<!ATTLIST substr s CDATA #IMPLIED l CDATA #IMPLIED>
<!ELEMENT concat ((%exnodeOrObject;)*)>
<!ELEMENT expand (%exnode;)>
<!ELEMENT length (%exnodeOrObject;)>
<!ELEMENT list ((%exnodeOrObject;)*)>
<!ELEMENT map ((%exnodeOrObject;)*)>
<!ELEMENT array ((%exnodeOrObject;)*)>
<!ELEMENT filterdup (%exnodeOrObject;)>
<!ATTLIST filterdup name CDATA #IMPLIED>
<!ELEMENT filternull (%exnodeOrObject;)>
<!ATTLIST filternull name CDATA #IMPLIED>
<!ELEMENT insert ((%exnode;), (%exnode;), (%exnodeOrObject;)?)>
<!ATTLIST insert name CDATA #IMPLIED>
<!ELEMENT lconcat ((%exnodeOrObject;)*)>
<!ELEMENT contains    ((%exnode;), (%exnodeOrObject;))>
<!ELEMENT containsAll ((%exnode;), (%exnodeOrObject;))>
<!ELEMENT containsAny ((%exnode;), (%exnodeOrObject;))>
<!ELEMENT join ((%exnodeOrObject;)*)>
<!ELEMENT cond ((%exnode;), (%exnodeOrObject;), (%exnodeOrObject;)?)>
<!ELEMENT switch ((%exnode;), case*)>
<!ELEMENT case ((%exnodeOrObject;), (%exnodeOrObject;)?)>
<!ATTLIST case default (true | false) 'false'>
<!ELEMENT indexOf ((%exnodeOrObject;), (%exnodeOrObject;), (%exnodeOrObject;)?)>
<!ELEMENT split ((%exnode;), (%exnode;))>
<!ELEMENT remove ((%exnodeOrObject;)*)>
<!ATTLIST remove name CDATA #IMPLIED>
<!ELEMENT removeAll ((%exnodeOrObject;)*)>
<!ATTLIST removeAll name CDATA #IMPLIED>
<!ELEMENT retainAll ((%exnodeOrObject;)*)>
<!ATTLIST retainAll name CDATA #IMPLIED>
<!ELEMENT append ((%exnodeOrObject;)*)>
<!ATTLIST append name CDATA #IMPLIED>
<!ELEMENT appendAll ((%exnode;)*)>
<!ATTLIST appendAll name CDATA #IMPLIED>
<!ELEMENT match ((%exnode;), (%exnode;))>
<!ELEMENT trace (%exnode;)>
<!ELEMENT break (%exnode;)>
<!ATTLIST break name CDATA #IMPLIED>
<!ELEMENT breakpoint EMPTY>
<!ELEMENT get ((%exnodeOrObject;), (%exnode;))>
<!ELEMENT index ((%exnodeOrObject;)*)>
<!ATTLIST index i CDATA #IMPLIED>
<!ELEMENT member ((%exnodeOrObject;), (%exnodeOrObject;))>
<!ELEMENT getobj ((%exnode;)*)>
<!ELEMENT dolist ((%exnode;)*)>
<!ATTLIST dolist name CDATA #REQUIRED>
<!ELEMENT pad ((%exnode;)*)>
<!ELEMENT new ((%exnode;)*)>
<!ATTLIST new class CDATA #IMPLIED>
<!ELEMENT invoke ((%exnodeOrObject;)*)>
<!ATTLIST invoke class CDATA #IMPLIED name CDATA #IMPLIED>
<!ELEMENT while ((%exnode;)*)>
<!ELEMENT script (#PCDATA)>
<!ELEMENT message ((%exnode;)*)>
<!ATTLIST message name CDATA #REQUIRED>
<!ATTLIST message severity (ok | warning | error) 'ok'>
<!ELEMENT rule ((%exnode;)?, (argument)*)>
<!ATTLIST rule
  name CDATA #IMPLIED
  passThrough (true | false) 'false'
>
<!ELEMENT argument ((%exnodeOrObject;)?)>
<!ATTLIST argument
  name CDATA #REQUIRED
  value CDATA #IMPLIED
>
<!ELEMENT instanceof ((%exnodeOrObject;))>
<!ATTLIST instanceof name CDATA #IMPLIED>

<!--=======================================================-->
<!--=                                                     =-->
<!--= Server                                              =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT Server (( %persistentObjectElements;)*)>
<!ATTLIST Server
    %persistentObjectAttributes;
    state CDATA #IMPLIED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= SecureCounter                                       =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT SecureCounter (( SecureCounterValue | %persistentObjectElements;)*)>
<!ATTLIST SecureCounter
    %persistentObjectAttributes;
>

<!ELEMENT SecureCounterValue (EncryptedData)>

<!--=======================================================-->
<!--=                                                     =-->
<!--= Repository Configuration                            =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT ServerRepository (DataStore)>

<!ELEMENT DataStore ((%persistentObjectElements;)*)>
<!ATTLIST DataStore
  %persistentObjectAttributes;
  instanceOf CDATA #IMPLIED
  class (com.waveset.repository.LocalFiles |
         com.waveset.repository.RelationalDataStore |
         com.waveset.repository.MysqlDataStore |
         com.waveset.repository.SqlServerDataStore |
         com.waveset.repository.DirectoryDataStore
        ) #REQUIRED
  file CDATA #IMPLIED
  initialContextFactory CDATA #IMPLIED
  dataSourcePath CDATA #IMPLIED
  providerUrl CDATA #IMPLIED
  url CDATA #IMPLIED
  connectAsUser CDATA #IMPLIED
  connectWithPassword CDATA #IMPLIED
  jdbcDriver CDATA #IMPLIED
>

<!--
#  Deprecate attribute "blockSize" in favor of
#  "blockRowsGet" and "blockRowsList" (bug#872).
#  Because list methods do not fetch object XML,
#  "blockRowsList" can be larger than "blockRowsGet".
-->
<!ELEMENT RepositoryConfiguration (RelocatedTypes?)>
<!ATTLIST RepositoryConfiguration
  lockTimeoutMillis CDATA #IMPLIED
  maxConcurrentConnections CDATA #IMPLIED
  blockSize CDATA #IMPLIED
  blockRowsGet CDATA #IMPLIED
  blockRowsList CDATA #IMPLIED
  maxAttrValLength CDATA #IMPLIED
  maxLogAcctAttrChangesLength CDATA #IMPLIED
  maxSummaryLength CDATA #IMPLIED
  maxXmlLength CDATA #IMPLIED
  optimizeReplaceAttributes CDATA #IMPLIED
  maxInList CDATA #IMPLIED
  maxDelSet CDATA #IMPLIED
  mcDBCall CDATA #IMPLIED
  mcDeleteAttrVal CDATA #IMPLIED
  mcInsertAttrVal CDATA #IMPLIED
  mcUpdateAttrVal CDATA #IMPLIED
  instanceOf CDATA #IMPLIED
>

<!ELEMENT RelocatedTypes (TypeDataStore)*>

<!ELEMENT TypeDataStore (ObjectRef?)>
<!ATTLIST TypeDataStore
  typeName CDATA #REQUIRED
  deleteDestroyInterval CDATA #IMPLIED
  lockTimeoutMillis CDATA #IMPLIED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= ReportLog                                           =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT ReportLog ((
  EventParameter |
  %persistentObjectElements;)*)>


<!ATTLIST ReportLog
  %persistentObjectAttributes;
  Type CDATA #IMPLIED
  type CDATA #IMPLIED
  Action CDATA #IMPLIED
  Status CDATA #IMPLIED
  TimeStamp CDATA #IMPLIED
  DayOfYear CDATA #IMPLIED
  ObjectDesc CDATA #IMPLIED
  ReasonDenied CDATA #IMPLIED
  Subject CDATA #IMPLIED
  Client CDATA #IMPLIED
  Server CDATA #IMPLIED
  EventDate CDATA #IMPLIED
  EventTime CDATA #IMPLIED
  EventParms CDATA #IMPLIED
>

<!ELEMENT EventParameter EMPTY>
<!ATTLIST EventParameter
  EventParmValue CDATA #IMPLIED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= BulkOpTask                                           =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT BulkOpTaskState EMPTY>
<!ATTLIST BulkOpTaskState
  nextOp CDATA #IMPLIED
  taskResultCnt CDATA #IMPLIED
  errors CDATA #IMPLIED
>

<!ELEMENT Op ((OpFields)*)>
<!ATTLIST Op
  type CDATA #REQUIRED
  name CDATA #IMPLIED
>

<!ELEMENT OpFields (List)>

<!ELEMENT OpField (%xmlObject;)>
<!ATTLIST OpField
  directive CDATA #IMPLIED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= GenericAttribute                                    =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT GenericAttribute (Object)>

<!--=======================================================-->
<!--=                                                     =-->
<!--= AuthTypes                                           =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT AuthTypes ((AuthType)*)>

<!ELEMENT AuthType EMPTY>
<!ATTLIST AuthType
  name CDATA #IMPLIED
  displayName CDATA #IMPLIED
  extends CDATA #IMPLIED
  auditKey CDATA #IMPLIED
  rights CDATA #IMPLIED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= AuthContext                                         =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT AuthContext ((AuthGroup | UrlAcl)*)>

<!ELEMENT AuthGroup ((UserRef | GroupRef)*)>
<!ATTLIST AuthGroup
  name CDATA #REQUIRED
  anonymous (true | false) 'false'
>

<!ELEMENT UrlAcl ((UserRef | GroupRef)*)>
<!ATTLIST UrlAcl
  url CDATA #IMPLIED
  regexp CDATA #IMPLIED
>

<!--
  taking this out, UserRef it conflicts with the element defined
     for SpecificSituation, and we're not using AuthContext anyway

<!ELEMENT UserRef EMPTY>
<!ATTLIST UserRef
  name CDATA #REQUIRED
>
-->

<!ELEMENT GroupRef EMPTY>
<!ATTLIST GroupRef
  name CDATA #REQUIRED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= SOAPConfig  big comment for simple object           =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT SOAPConfig (Map?)>

<!--=======================================================-->
<!--=                                                     =-->
<!--= UserUIConfig  big comment for simple object           =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT UserUIConfig ((SummaryAttrTypes | SummaryAttrNames | QueryableAttrNames |
   AppletColumns | FindResults | FindSearchAttrs | RepoIndexAttrs |
   TopButtonPages | TaskBarPages | AppletSortColumn | FindResultsSortColumn |
   DefaultFindSearchAttr | AdminDisplayAttribute |
   ShowProvisioningSearchAttr | ShowDisabledSearchAttr | ShowListCache |
   SummaryAttrrResourceCountLimit | CapabilityGroup | FindSearchOperators |
   PolicySpecialChars | PolicyAccountAttributeNames | PolicyPasswordAttributeNames |
   PolicyOtherAttributeNames | ShowFindResourcesSearch |
   ShowFindAttribute1 | ShowFindAttribute2 | ShowFindAttribute3 |
   ShowFindAttribute4 | ShowFindAttribute5 | ShowFindRoleSearch |
   ShowFindOrganizationSearch | ShowFindCapabilitiesSearch | ShowFindSearch |
   ListViewAttributes | UserListViewer)*)>
<!ELEMENT SummaryAttrTypes (List?)>
<!ELEMENT SummaryAttrNames (List?)>
<!ELEMENT QueryableAttrNames (List?)>
<!ELEMENT AppletColumns (List?)>
<!ELEMENT FindResults (List?)>
<!ELEMENT FindSearchAttrs (List?)>
<!ELEMENT RepoIndexAttrs (List?)>
<!ELEMENT TopButtonPages (List?)>
<!ELEMENT TaskBarPages (List?)>
<!ELEMENT AppletSortColumn (Integer?)>
<!ELEMENT FindResultsSortColumn (Integer?)>
<!ELEMENT DefaultFindSearchAttr (String?)>
<!ELEMENT ShowProvisioningSearchAttr (Boolean?)>
<!ELEMENT ShowDisabledSearchAttr (Boolean?)>
<!ELEMENT ShowFindResourcesSearch (Boolean?)>
<!ELEMENT ShowFindAttribute1 (Boolean?)>
<!ELEMENT ShowFindAttribute2 (Boolean?)>
<!ELEMENT ShowFindAttribute3 (Boolean?)>
<!ELEMENT ShowFindAttribute4 (Boolean?)>
<!ELEMENT ShowFindAttribute5 (Boolean?)>
<!ELEMENT ShowFindRoleSearch (Boolean?)>
<!ELEMENT ShowFindOrganizationSearch (Boolean?)>
<!ELEMENT ShowFindCapabilitiesSearch (Boolean?)>
<!ELEMENT ShowListCache (Boolean?)>
<!ELEMENT SummaryAttrrResourceCountLimit (Integer?)>
<!ELEMENT CapabilityGroup (List?)>
<!ATTLIST CapabilityGroup name CDATA #IMPLIED>
<!ATTLIST CapabilityGroup displayName CDATA #IMPLIED>
<!ELEMENT FindSearchOperators (List?)>
<!ELEMENT PolicySpecialChars (String?)>
<!ELEMENT PolicyAccountAttributeNames (List?)>
<!ELEMENT PolicyPasswordAttributeNames (List?)>
<!ELEMENT PolicyOtherAttributeNames (List?)>
<!ELEMENT AdminDisplayAttribute (String?)>
<!ELEMENT ListViewAttributes (Map?)>
<!ELEMENT UserListViewer (String?)>

<!--=======================================================-->
<!--=                                                     =-->
<!--= ReportCounter                                       =-->
<!--=                                                     =-->
<!--=======================================================-->
<!ELEMENT ReportCounter ((  Counter |
  %persistentObjectElements;)*)>

<!ATTLIST ReportCounter
  %persistentObjectAttributes;
  total CDATA #IMPLIED
  currentDay CDATA #IMPLIED
>

<!ELEMENT Counter EMPTY>

<!ATTLIST Counter
  dateString CDATA #REQUIRED
  num CDATA #REQUIRED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= UsageReport                                         =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT UsageReport ((%persistentObjectElements;)*)>

<!ATTLIST UsageReport
  %persistentObjectAttributes;
  Type CDATA #IMPLIED
  Action CDATA #IMPLIED
  Status CDATA #IMPLIED
  reportType CDATA #IMPLIED
  timeLine CDATA #IMPLIED
  startDateString CDATA #IMPLIED
  endDateString CDATA #IMPLIED
  resultUnit CDATA #IMPLIED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= ImportCommand                                       =-->
<!--=                                                     =-->
<!--=======================================================-->

<!--
These can be included in import files to cause certain events
unrelated with object creation.

Sigh, attribute "name" feels much more natural than "type" so
I added support for that, we still maintain compatibility with "type"
for awhile. I took out the command name enumeration here, the Importer
will check this so it isn't really necessary for the parser to do it. - jsl

Changed the content model to allow any xmlObject, since the addConfiguration
command can theoritically allow List, Boolean, etc.  In practice, the
content will usually be ObjectRef, Map, or List.
There can be more than one ObjectRef.
-->

<!ELEMENT ImportCommand ((%xmlObject;)*)>
<!ATTLIST ImportCommand
  name CDATA #IMPLIED
  type CDATA #IMPLIED
  class CDATA #IMPLIED
  newName CDATA #IMPLIED
  newId CDATA #IMPLIED
  newType CDATA #IMPLIED
  oldType CDATA #IMPLIED
  moveOrCopy CDATA #IMPLIED
  targetType CDATA #IMPLIED
  blockSize CDATA #IMPLIED
  key CDATA #IMPLIED
  value CDATA #IMPLIED
  doLock CDATA #IMPLIED
  file CDATA #IMPLIED
  option CDATA #IMPLIED
  objectType CDATA #IMPLIED
  generateKey CDATA #IMPLIED
  pkcs5Encrypt CDATA #IMPLIED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= Prototypes                                          =-->
<!--=                                                     =-->
<!--=======================================================-->

<!--
  This is meant to be wrapped in a Configuration for storage.
  The system should treat these objects as alternatives to
  the prototype instances coded into the Resource and Policy
  classes.
-->

<!ELEMENT Prototypes ((Resource | Policy)*)>

<!--=======================================================-->
<!--=                                                     =-->
<!--= Generic Objects                                     =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT Object ((Form | FormRef | Attribute)*)>
<!ATTLIST Object
  type CDATA #IMPLIED
  name CDATA #IMPLIED
  id CDATA #IMPLIED
>

<!--
sigh, Attribute was already defined, the older definition
has more stuff than we allow, but I don't want to mess
with namespaces just yet.
-->

<!ELEMENT Modification ((%xmlObject;)?)>
<!ATTLIST Modification
  type (add | delete | replace) 'replace'
>

<!--=======================================================
==
== DTD for Waveset Reports
==
== Duplicated in report.dtd.  Moved over here so we can represent
== reports as an XmlObject within a WavesetResult.
==
== This describes a simple generic document that can be generated by
== background tasks to convey what the task accomplished.  This
== is convenient for the GUI, as it only needs to render the report,
== it doesn't have to know any other task details.
==
== Its not especially complete, but keep it simple so the tasks don't
== have to think about it too much.  Try to keep style oriented
== markup to a minimum so we have greater flexibility in rendering.
==
== Try to figure out a way to do this with an external entity.
==
==-=======================================================-->

<!ELEMENT Report ((preamble?, section*))>

<!ELEMENT preamble ((title | author | date)*)>

<!ELEMENT title (#PCDATA | Message)*>
<!ELEMENT author (#PCDATA)>
<!ELEMENT date (#PCDATA | DateTime)*>

<!ELEMENT section ((title?,(pre | html | p | table | section)*))>

<!ELEMENT p (#PCDATA)>

<!ELEMENT table ((title?, columns?, rows?))>
<!ATTLIST table
   linkurl CDATA #IMPLIED
   linkcol CDATA #IMPLIED
   nosort (true | false) 'false'
>

<!ELEMENT columns ((col*))>

<!ELEMENT col (#PCDATA | Message | DateTime)*>

<!ELEMENT rows ((row)*)>

<!ELEMENT row ((col)*)>
<!ATTLIST row
   urlkey CDATA #IMPLIED
>

<!ELEMENT pre (#PCDATA)>

<!ELEMENT html (#PCDATA)>

<!ELEMENT ol ((li*))>

<!ELEMENT ul ((li*))>

<!ELEMENT li (#PCDATA)>

<!--=======================================================-->
<!--=                                                     =-->
<!--= Log                                                 =-->
<!--=                                                     =-->
<!--= NOTE : As of 4.1 AuditableAccountAttributes is      =-->
<!--= deprecated and replaced with AuditableAttributes    =-->
<!--=======================================================-->

<!ELEMENT Log ((
  LogRecordParameters |
  AuditableAccountAttributes |
  AuditableAttributes |
  OverflowAttributes |
  %persistentObjectElements;)*)>

<!ATTLIST Log
  %persistentObjectAttributes;
  objectType CDATA #IMPLIED
  Action CDATA #IMPLIED
  Status CDATA #IMPLIED
  TimeStamp CDATA #IMPLIED
  ObjectDesc CDATA #IMPLIED
  ReasonDenied CDATA #IMPLIED
  Subject CDATA #IMPLIED
  Client CDATA #IMPLIED
  Server CDATA #IMPLIED
  accountId CDATA #IMPLIED
  resource CDATA #IMPLIED
  message CDATA #IMPLIED
  acctAttrChanges CDATA #IMPLIED
  sequence CDATA #IMPLIED
>

<!ELEMENT LogRecordParameters (Map)>
<!ELEMENT AuditableAccountAttributes (Map)>
<!ELEMENT AuditableAttributes (Map)>
<!ELEMENT OverflowAttributes (Map)>

<!--=======================================================-->
<!--=                                                     =-->
<!--= Syslog                                              =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT Syslog ((
  Message |
  ErrorCause |
  %persistentObjectElements;)*)>

<!ATTLIST Syslog
  %persistentObjectAttributes;
  TimeStamp CDATA #IMPLIED
  severity CDATA #IMPLIED
  Server CDATA #IMPLIED
  component CDATA #IMPLIED
  errorCode CDATA #IMPLIED
>

<!ELEMENT ErrorCause (ResultError)>


<!--=======================================================-->
<!--=                                                     =-->
<!--= DeviceResetConfig                                   =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT DeviceResetConfig (#PCDATA)>

<!ATTLIST DeviceResetConfig
  serverName CDATA #IMPLIED
  user CDATA #IMPLIED
  password CDATA #IMPLIED
  asciipassword CDATA #IMPLIED
  debug CDATA #IMPLIED
  timeout CDATA #IMPLIED
  idleTimeout CDATA #IMPLIED
  port CDATA #IMPLIED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= License                                             =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT License ((licensedProducts | licensedCompany | licensedResourceTypes |
licenseKey | licenseExpiration)*)>
<!ELEMENT licensedProducts (List?)>
<!ELEMENT licensedCompany (String?)>
<!ELEMENT licensedResourceTypes (List?)>
<!ELEMENT licenseKey (String?)>
<!ELEMENT licenseExpiration (String?)>

<!--=======================================================-->
<!--=                                                     =-->
<!--= XmlData                                             =-->
<!--=                                                     =-->
<!--=======================================================-->
<!ELEMENT XmlData ((Extension | %persistentObjectElements;)*)>
<!ATTLIST XmlData
  %persistentObjectAttributes;
  type CDATA #IMPLIED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= SnapShot                                             =-->
<!--=                                                     =-->
<!--=======================================================-->
<!ELEMENT SnapShot ((Extension | %persistentObjectElements;)*)>
<!ATTLIST SnapShot
  %persistentObjectAttributes;
  type CDATA #IMPLIED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= MetaView                                            =-->
<!--=                                                     =-->
<!--=======================================================-->
<!ELEMENT MetaView ((MetaViewAttribute | %persistentObjectElements;)*)>
<!ATTLIST MetaView
  %persistentObjectAttributes;
  servicedType CDATA #IMPLIED
  enabledApplications CDATA #IMPLIED
  lastSeenResourceLastMod CDATA #IMPLIED
>

<!ELEMENT MetaViewAttribute ((Sources | Targets)*)>
<!ATTLIST MetaViewAttribute
  name CDATA #IMPLIED
  storeLocally (true | false) 'false'
  authoritative (true | false) 'true'
>
<!ELEMENT Sources ((MetaViewSource)*)>
<!ELEMENT Targets ((MetaViewTarget)*)>

<!ELEMENT MetaViewSource ((ObjectRef | ConstantValue)*)>
<!ATTLIST MetaViewSource
  sourceAttributeName CDATA #IMPLIED
>
<!ELEMENT ConstantValue (%xmlObject;)>

<!ELEMENT MetaViewTarget ((TargetResource | TargetCondition)*)>
<!ATTLIST MetaViewTarget
  eventTypes CDATA #IMPLIED
>

<!ELEMENT TargetResource ((ObjectRef)?)>
<!ATTLIST TargetResource
  targetAttributeName CDATA #REQUIRED
  global (true | false) 'false'
>
<!ELEMENT TargetCondition (ObjectRef)>

<!--=======================================================-->
<!--=                                                     =-->
<!--= CertificateData                                     =-->
<!--=                                                     =-->
<!--=======================================================-->
<!ELEMENT CertificateData ((Variables)?)>
<!ATTLIST CertificateData
    certificateDataManager CDATA #IMPLIED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= SignedData                                          =-->
<!--=                                                     =-->
<!--=======================================================-->
<!ELEMENT SignedData ((SignerInfo|X509Certificate)*)>
<!ATTLIST SignedData
   signedContent CDATA #IMPLIED
>
<!ELEMENT SignerInfo (#PCDATA)>
<!ATTLIST SignerInfo
   signature CDATA #IMPLIED
   signatureAlgorithm CDATA #IMPLIED
   serialNumber CDATA #IMPLIED
   issuerDN CDATA #IMPLIED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= X509Certificate                                     =-->
<!--=                                                     =-->
<!--=======================================================-->
<!ELEMENT X509Certificate (#PCDATA)>

<!--=======================================================-->
<!--=                                                     =-->
<!--= Miscellaneous                                       =-->
<!--=                                                     =-->
<!--=======================================================-->

<!ELEMENT Miscellaneous ((%persistentObjectElements;)*)>
<!ATTLIST Miscellaneous
  %persistentObjectAttributes;
  miscData CDATA #IMPLIED
>

<!--=======================================================-->
<!--=                                                     =-->
<!--= Deprecated Objects                                  =-->
<!--=                                                     =-->
<!--=======================================================-->

<!--
These have to be retained in the DTD so that we can
parse export files created with older releases, though they
will be ignored during import.  We can eventually weed these
out, but we will always have to retain the definitions from
at least one prior release.
-->

<!ELEMENT ConfigurationKeyword ((%persistentObjectElements;)*)>
<!ATTLIST ConfigurationKeyword
  %persistentObjectAttributes;
  Value CDATA #IMPLIED
>

<!ELEMENT WorkflowConfig ((WorkflowApp | %persistentObjectElements;)*)>
<!ATTLIST WorkflowConfig
  %persistentObjectAttributes;
>

<!ELEMENT WorkflowApp EMPTY>
<!ATTLIST WorkflowApp
  name CDATA #REQUIRED
  class CDATA #REQUIRED
>

<!ELEMENT WorkflowProcess ((
    Variable |
    Activity |
    Action |
    %persistentObjectElements;)*)>

<!ATTLIST WorkflowProcess %persistentObjectAttributes;>

<!ELEMENT Join EMPTY>
<!ATTLIST Join type (and | or) #REQUIRED>

<!ELEMENT Split EMPTY>
<!ATTLIST Split type (and | xor) #REQUIRED>

<!ELEMENT WorkflowCase ((
    Variables |
    Messages |
    Result |
    Task |
    %persistentObjectElements;)*)>

<!ATTLIST WorkflowCase
  %persistentObjectAttributes;
  processName         CDATA #IMPLIED
  processId         CDATA #IMPLIED
  state                 (inactive | active | complete) #REQUIRED
>

<!ELEMENT Task EMPTY>
<!ATTLIST Task
  index           CDATA #REQUIRED
  activity CDATA #IMPLIED
  state           (inactive | active | waiting | complete) #REQUIRED
  joins           NMTOKENS #IMPLIED
>

<!ELEMENT WorkflowTask ((
    Variables |
    %persistentObjectElements;)*)>

<!ATTLIST WorkflowTask
  %persistentObjectAttributes;
  index                CDATA #REQUIRED
  state                (active | complete) #REQUIRED
  owner                CDATA #REQUIRED
  caseId        CDATA #REQUIRED
  caseName        CDATA #IMPLIED
  processName        CDATA #IMPLIED
  activityName        CDATA #IMPLIED
>

<!ELEMENT ResourceAction ((
    ResTypeAction |
    %persistentObjectElements;)*)>

<!ATTLIST ResourceAction
  %persistentObjectAttributes;
>


<!ELEMENT ResTypeAction ((
  act |
  RunAsPassword)*)>

<!ATTLIST ResTypeAction
  restype CDATA #REQUIRED
  timeout CDATA #IMPLIED
  actionType CDATA #IMPLIED
  runAsUser CDATA #IMPLIED
>

<!ELEMENT act (#PCDATA)>

<!ELEMENT RunAsPassword ((
  EncryptedData |
  String))>

<!-- AttrParse elements -->

<!ENTITY % apNode
 "t |
  int |
  str |
  eol |
  skipToEol |
  skip |
  skipWhitespace |
  flag |
  multiLine |
  opt |
  skipLinesUntil |
  collectCsvHeader |
  collectCsvLines |
  loop"
>

<!ELEMENT t (#PCDATA)>

<!ATTLIST t
  offset CDATA #IMPLIED
  termToken CDATA #IMPLIED
>

<!ELEMENT int EMPTY>

<!ATTLIST int
  name CDATA #REQUIRED
  noval CDATA #IMPLIED
  len CDATA #IMPLIED
>

<!ELEMENT str EMPTY>

<!ATTLIST str
  name CDATA #REQUIRED
  len CDATA #IMPLIED
  multi CDATA #IMPLIED
  multiLine CDATA #IMPLIED
  delim CDATA #IMPLIED
  indent CDATA #IMPLIED
  noval CDATA #IMPLIED
  append CDATA #IMPLIED
  trim CDATA #IMPLIED
  term CDATA #IMPLIED
  termToken CDATA #IMPLIED
  appendSeparator CDATA #IMPLIED
>

<!ELEMENT eol EMPTY>

<!ELEMENT skipToEol EMPTY>

<!ELEMENT skip EMPTY>

<!ATTLIST skip
  len CDATA #REQUIRED
>

<!ELEMENT skipWhitespace EMPTY>

<!ELEMENT flag (#PCDATA)>

<!ATTLIST flag
  name CDATA #REQUIRED
  offset CDATA #IMPLIED
  termToken CDATA #IMPLIED
>

<!ELEMENT multiLine ((%apNode;)*)>

<!ATTLIST multiLine
  opt CDATA #IMPLIED
>

<!ELEMENT apMatch (%apNode;)>

<!ELEMENT opt ((AttrParse | apMatch)*)>

<!ELEMENT loop ((AttrParse))>

<!ELEMENT skipLinesUntil EMPTY>

<!ATTLIST skipLinesUntil
  token CDATA #IMPLIED
  pattern CDATA #IMPLIED
  minCount CDATA #IMPLIED
>

<!ELEMENT collectCsvHeader EMPTY>

<!ATTLIST collectCsvHeader
  idHeader CDATA #IMPLIED
  nameHeader CDATA #IMPLIED
  combine CDATA #IMPLIED
  delim CDATA #IMPLIED
  minCount CDATA #IMPLIED
  trim CDATA #IMPLIED
  unQuote CDATA #IMPLIED
  line CDATA #IMPLIED
>

<!ELEMENT collectCsvLines EMPTY>

<!ATTLIST collectCsvLines
  combine CDATA #IMPLIED
  trim CDATA #IMPLIED
  unQuote CDATA #IMPLIED
>

<!ATTLIST AttrParse
  %persistentObjectAttributes;
>

<!ELEMENT AttrParse ((
    %apNode; |
    %persistentObjectElements;)*)>

<!ELEMENT WorkflowRef ((ObjectRef))>
<!ELEMENT Remediators ((%xmlObject;)*)>
<!ELEMENT PolicyRules ((%xmlObject;)*)>

<!ELEMENT AuditPolicy ((
    Description |
    WorkflowRef |
    Remediators |
    PolicyRules |
    %persistentObjectElements;)*)>

<!ATTLIST AuditPolicy
  %persistentObjectAttributes;
>

<!ELEMENT RuleRef ((ObjectRef))>
<!ELEMENT AuditPolicyRef ((ObjectRef))>
<!ELEMENT RemediatorRef ((ObjectRef))>
<!ELEMENT ViolationState (#PCDATA)>

<!ELEMENT ComplianceViolation ((
    Comments |
    Description |
    RuleRef |
    AuditPolicyRef |
    RemediatorRef |
    ViolationState |
    UserRef |
    ResourceRef |
    %persistentObjectElements;)*)>

<!ATTLIST ComplianceViolation
  %persistentObjectAttributes;
  expirationDate CDATA #IMPLIED
  remediationDate CDATA #IMPLIED
  violationCount CDATA #IMPLIED
>
