<!-- ==============================================================

DTD for the AuthSetupData document type which contains authority
setup data from the Stanford University Registry.
v1.0 by ghung2

=================================================================== -->


<!-- +++++++++++++++++++++++++ AuthSetupData ++++++++++++++++++++++ -->

<!ELEMENT AuthSetupData (Subsystem,Prerequisites?,NotificationTypes?,Templates?,PromptTypes?,PromptTypeChoices?,PromptTypeRanges?)>

<!-- +++++++++++++++++++++++++ Subsystem ++++++++++++++++++++++++++ -->

<!ELEMENT Subsystem (name,type,description?,scopeType,comments?,FunctionCategories,Functions,FunctionRelationships,FunctionTasks,Tasks,TaskEntitlements,Entitlements,EntitlementLimits,EntitlementPrerequisites,Limits)>

<!ATTLIST Subsystem id CDATA #REQUIRED>

<!-- +++++++++++++++++++++++++ Function Category ++++++++++++++++++ -->

<!ELEMENT FunctionCategories (FunctionCategory)*>
<!ELEMENT FunctionCategory (name, singleInd?)>

<!ATTLIST FunctionCategory id CDATA #REQUIRED>

<!-- +++++++++++++++++++++++++ Function +++++++++++++++++++++++++++ -->

<!ELEMENT Functions (Function)*>
<!ELEMENT Function (categoryId,name,description?,comments?,delegationType?,truncatype?,grandOnly?,owner?)>
<!ELEMENT FunctionRelationships (FunctionRelationship)*>
<!ELEMENT FunctionRelationship (exfunctionId, functionId)>
<!ELEMENT FunctionTasks (FunctionTask)*>
<!ELEMENT FunctionTask (functionId, taskId)>

<!ATTLIST Function id CDATA #REQUIRED>

<!-- +++++++++++++++++++++++++ Task +++++++++++++++++++++++++++++++ -->

<!ELEMENT Tasks (Task)*>
<!ELEMENT Task (name,description?,comments?)>
<!ELEMENT TaskEntitlements (TaskEntitlement)*>
<!ELEMENT TaskEntitlement (taskId,entitlementId)>

<!ATTLIST Task id CDATA #REQUIRED>

<!-- +++++++++++++++++++++++++ Entitlement ++++++++++++++++++++++++ -->

<!ELEMENT Entitlements (Entitlement)*>
<!ELEMENT Entitlement (description?,readonlyInd?,comments?)>
<!ELEMENT EntitlementLimits (EntitlementLimit)*>
<!ELEMENT EntitlementLimit (entitlementId,limitId,orderNumber)>
<!ELEMENT EntitlementPrerequisites (EntitlementPrerequisite)*>
<!ELEMENT EntitlementPrerequisite (entitlementId,prerequisiteId)>

<!ATTLIST Entitlement id CDATA #REQUIRED>

<!-- +++++++++++++++++++++++++ Limit ++++++++++++++++++++++++++++++ -->

<!ELEMENT Limits (Limit)*>
<!ELEMENT Limit (label,description?,defaultValue,defaultValueType,frequency,promptType,treeName,uniqifyInd)>		

<!ATTLIST Limit id CDATA #REQUIRED>

<!-- +++++++++++++++++++++++++ Prerequisite +++++++++++++++++++++++ -->

<!ELEMENT Prerequisites (Prerequisite)*>
<!ELEMENT Prerequisite (orderNumber,ruleText,description)>

<!-- +++++++++++++++++++++++++ Subsystem ++++++++++++++++++++++++++ -->

<!ELEMENT NotificationTypes (NotificationType)*>
<!ELEMENT NotificationType (description,recipient,uniqurule,header,footer,batchInterval,skiroids)>

<!-- +++++++++++++++++++++++++ Template +++++++++++++++++++++++++++ -->

<!ELEMENT Templates (Template)*>
<!ELEMENT Template (notitypeId,fragmentOrder,dataType,value)>

<!-- +++++++++++++++++++++++++ PromptType ++++++++++++++++++++++++++ -->

<!ELEMENT PromptTypes (PromptType)*>
<!ELEMENT PromptType (name,orderNumber,topOrgRefId,text,validatype,prevChoice)>
<!ELEMENT PromptTypeChoices (PromptTypeChoice)*>
<!ELEMENT PromptTypeChoice (name,orderNumber,topOrgRefId,choice,valueType,label)>
<!ELEMENT PromptTypeRanges (PromptTypeRange)*>
<!ELEMENT PromptTypeRange (name,orderNumber,toorgRefId,instance,valueType,lowerBound,upperBound,compareType)>

<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->

<!ELEMENT name (#PCDATA)>
<!ELEMENT type (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT scopeType (#PCDATA)>
<!ELEMENT comments (#PCDATA)>
<!ELEMENT singleInd (#PCDATA)>
<!ELEMENT categoryId (#PCDATA)>
<!ELEMENT delegationType (#PCDATA)>
<!ELEMENT truncatype (#PCDATA)>
<!ELEMENT grandOnly (#PCDATA)>
<!ELEMENT owner (#PCDATA)>
<!ELEMENT exfunctionId (#PCDATA)>
<!ELEMENT functionId (#PCDATA)>
<!ELEMENT taskId (#PCDATA)>
<!ELEMENT entitlementId (#PCDATA)>
<!ELEMENT readonlyInd (#PCDATA)>
<!ELEMENT limitId (#PCDATA)>
<!ELEMENT orderNumber (#PCDATA)>
<!ELEMENT prerequisiteId (#PCDATA)>
<!ELEMENT label (#PCDATA)>
<!ELEMENT defaultValue (#PCDATA)>
<!ELEMENT defaultValueType (#PCDATA)>
<!ELEMENT frequency (#PCDATA)>
<!ELEMENT promptType (#PCDATA)>
<!ELEMENT treeName (#PCDATA)>
<!ELEMENT uniqifyInd (#PCDATA)>
<!ELEMENT ruleText (#PCDATA)>
<!ELEMENT recipient (#PCDATA)>
<!ELEMENT uniqurule (#PCDATA)>
<!ELEMENT header (#PCDATA)>
<!ELEMENT footer (#PCDATA)>
<!ELEMENT batchInterval (#PCDATA)>
<!ELEMENT skiroids (#PCDATA)>
<!ELEMENT notitypeId (#PCDATA)>
<!ELEMENT fragmentOrder (#PCDATA)>
<!ELEMENT dataType (#PCDATA)>
<!ELEMENT value (#PCDATA)>
<!ELEMENT topOrgRefId (#PCDATA)>
<!ELEMENT text (#PCDATA)>
<!ELEMENT validateType (#PCDATA)>
<!ELEMENT prevChoice (#PCDATA)>
<!ELEMENT choice (#PCDATA)>
<!ELEMENT valueType (#PCDATA)>
<!ELEMENT instance (#PCDATA)>
<!ELEMENT lowerBound (#PCDATA)>
<!ELEMENT upperBound (#PCDATA)>
<!ELEMENT compareType (#PCDATA)>


