<!-- Informatica Repository DTD Grammar - Version 8.0 -->
<!ELEMENT POWERMART (REPOSITORY*)>
<!ATTLIST POWERMART
    CREATION_DATE CDATA #IMPLIED
    REPOSITORY_VERSION CDATA #IMPLIED
>
<!ELEMENT REPOSITORY (FOLDER*)>
<!ATTLIST REPOSITORY
    NAME CDATA #REQUIRED
    DATABASETYPE CDATA #IMPLIED
    CODEPAGE CDATA #IMPLIED
    VERSION CDATA #IMPLIED
    PARENTREPOSITORY CDATA #IMPLIED
>
<!ELEMENT FOLDER (FOLDERVERSION|CONFIG| SCHEDULER| TASK| SESSION| WORKLET| WORKFLOW|
                        SOURCE| TARGET | TRANSFORMATION | MAPPLET | MAPPING | SHORTCUT | EXPRMACRO)*>
<!ATTLIST FOLDER
    NAME CDATA #REQUIRED
    DESCRIPTION CDATA #IMPLIED
    SHARED (SHARED | NOTSHARED) #IMPLIED
    OWNER CDATA #IMPLIED
    GROUP CDATA #IMPLIED
    PERMISSIONS CDATA #IMPLIED
    UUID CDATA #IMPLIED
>
<!ELEMENT FOLDERVERSION (SOURCE*, TARGET*, TRANSFORMATION*, MAPPLET*, MAPPING*, SHORTCUT*)>
<!ATTLIST FOLDERVERSION
    NAME CDATA #REQUIRED
    DESCRIPTION CDATA #IMPLIED
>
<!ELEMENT SOURCE (FLATFILE?, (XMLINFO | ERPSRCINFO)?, GROUP*, TABLEATTRIBUTE*, SOURCEFIELD*, METADATAEXTENSION*)>
<!ATTLIST SOURCE
    NAME CDATA #REQUIRED
    DBDNAME CDATA #IMPLIED
    BUSINESSNAME CDATA #IMPLIED
    DESCRIPTION CDATA #IMPLIED
    OBJECTVERSION CDATA #IMPLIED
    OWNERNAME CDATA #IMPLIED
    IBMCOMP CDATA #IMPLIED
    DATABASETYPE CDATA #REQUIRED
    DATABASE_SUBTYPE CDATA #IMPLIED
    VERSIONNUMBER   CDATA       #IMPLIED
    COMPONENTVERSION CDATA #IMPLIED
    CRCVALUE CDATA #IMPLIED
>
<!ELEMENT ERPSRCINFO (SEBLSRCINFO?)>
<!ELEMENT SEBLSRCINFO (SEBLJOIN*, SEBLLINK*, SEBLMVLINK*, SEBLMVLINKREL*)>
<!ELEMENT SEBLJOIN EMPTY>
<!ATTLIST SEBLJOIN
    NAME CDATA #REQUIRED
    PKTABLE CDATA #REQUIRED
    FKTABLE CDATA #REQUIRED
    OUTERJOINREL (YES | NO) #IMPLIED
    SRCCOL CDATA #REQUIRED
    DESTCOL CDATA #REQUIRED
>
<!ELEMENT SEBLMVLINKREL EMPTY>
<!ATTLIST SEBLMVLINKREL
    SRCMVLINK CDATA #IMPLIED
    DESTMVLINK CDATA #IMPLIED
    FIELD CDATA #REQUIRED
>
<!ELEMENT SEBLMVLINK EMPTY>
<!ATTLIST SEBLMVLINK
    BCNAME CDATA #REQUIRED
    MVLINK CDATA #REQUIRED
    DESTLINK CDATA #REQUIRED
    DESTBC CDATA #REQUIRED
    SRCFIELD CDATA #REQUIRED
    PRIMARYID CDATA #IMPLIED
>
<!ELEMENT SEBLLINK EMPTY>
<!ATTLIST SEBLLINK
    NAME CDATA #REQUIRED
    PARENTBC CDATA #REQUIRED
    CHILDBC CDATA #REQUIRED
    DESTBCBASETABLE CDATA #REQUIRED
    SRCCOL CDATA #REQUIRED
    DESTCOL CDATA #REQUIRED
    INTERCHILDCOL CDATA #REQUIRED
    INTERPARENTCOL CDATA #REQUIRED
    INTERTABLE CDATA #REQUIRED
    PRIMARYID CDATA #IMPLIED
>
<!ELEMENT FLATFILE EMPTY>
<!ATTLIST FLATFILE
    FILENAME CDATA #IMPLIED
    FILETYPE CDATA #IMPLIED
    DELIMITED CDATA #IMPLIED
    DELIMITERS CDATA #IMPLIED
    ROWDELIMITER CDATA #IMPLIED
    DELIMITERS_IN_BINARY CDATA #IMPLIED
    QUOTE_CHARACTER CDATA #IMPLIED
    NULL_CHARACTER CDATA #IMPLIED
    NULLCHARTYPE (BINARY | ASCII) #IMPLIED
    STAGEFILEREINIT   (YES | NO ) #IMPLIED
    STAGEFILEPERSIST  (YES | NO ) #IMPLIED
    REPEATABLE CDATA #IMPLIED
    CONSECDELIMITERSASONE CDATA #IMPLIED
    MULTIDELIMITERSASAND CDATA #IMPLIED
    STRIPTRAILINGBLANKS CDATA #IMPLIED
    PADBYTES CDATA #IMPLIED
    SKIPLEADINGBYTES CDATA #IMPLIED
    SKIPTRAILINGBYTES CDATA #IMPLIED
    LINESEQUENTIAL CDATA #IMPLIED
    KEEPESCAPECHAR CDATA #IMPLIED
    SHIFTSENSITIVEDATA CDATA #IMPLIED
    ESCAPE_CHARACTER CDATA #IMPLIED
    SKIPROWS CDATA #IMPLIED
    CODEPAGE CDATA #IMPLIED
>

<!ELEMENT XMLINFO (XMLTEXT*)>
<!ATTLIST XMLINFO
        TYPE        (DTD | SCHEMA) #IMPLIED
        TEXT        CDATA          #IMPLIED
>
                
<!ELEMENT XMLTEXT EMPTY>
<!ATTLIST XMLTEXT
        TYPE        (SCHEMA | ADAPTER | TABLE) #REQUIRED
        NAMESPACE   CDATA                      #IMPLIED
        TEXT        CDATA                      #REQUIRED
>       

<!ELEMENT SOURCEFIELD (SOURCEFIELD*, FIELDATTRIBUTE*)>
<!ATTLIST SOURCEFIELD
    NAME CDATA #REQUIRED
    BUSINESSNAME CDATA #IMPLIED
    DESCRIPTION CDATA #IMPLIED
    DATATYPE CDATA #IMPLIED
    KEYTYPE CDATA #IMPLIED
    PRECISION CDATA #IMPLIED
    SCALE CDATA #IMPLIED
    NULLABLE (NOTNULL | NULL) #IMPLIED
    USAGE CDATA #IMPLIED
    USAGE_FLAGS CDATA #IMPLIED
    LEVEL CDATA #IMPLIED
    FIELDTYPE CDATA #IMPLIED
    PICTURETEXT CDATA #IMPLIED
    OCCURS CDATA #IMPLIED
    REDEFINES CDATA #IMPLIED
    REFERENCEDTABLE CDATA #IMPLIED
    REFERENCEDFIELD CDATA #IMPLIED
    REFERENCEDDBD CDATA #IMPLIED
    OFFSET CDATA #IMPLIED
    LENGTH CDATA #IMPLIED
    PHYSICALOFFSET CDATA #IMPLIED
    PHYSICALLENGTH CDATA #IMPLIED
    FIELDNUMBER CDATA #IMPLIED
    FIELDPROPERTY CDATA #IMPLIED
    HIDDEN CDATA #IMPLIED
    GROUP CDATA #IMPLIED
    SHIFTSTATE CDATA #IMPLIED
>
<!ELEMENT TABLEATTRIBUTE EMPTY>
<!ATTLIST TABLEATTRIBUTE
    NAME CDATA #REQUIRED
    VALUE CDATA #REQUIRED
>
<!ELEMENT FIELDATTRIBUTE EMPTY>
<!ATTLIST FIELDATTRIBUTE
    NAME CDATA #REQUIRED
    VALUE CDATA #REQUIRED
>
<!ELEMENT GROUP EMPTY>
<!ATTLIST GROUP
    NAME CDATA #REQUIRED
    DESCRIPTION CDATA #IMPLIED
    ORDER CDATA #REQUIRED
    TYPE CDATA #REQUIRED
    EXPRESSION CDATA #IMPLIED
>
<!ELEMENT METADATAEXTENSION EMPTY>
<!ATTLIST METADATAEXTENSION
    NAME CDATA #REQUIRED
    VENDORNAME CDATA #REQUIRED
    DOMAINNAME CDATA #REQUIRED 
    DATATYPE (STRING | NUMERIC | BOOLEAN | XML) #REQUIRED
    VALUE CDATA #REQUIRED        
    MAXLENGTH CDATA #IMPLIED    
    DESCRIPTION CDATA #IMPLIED    
    ISSHAREREAD (YES | NO) #IMPLIED    
    ISSHAREWRITE (YES | NO) #IMPLIED    
    ISCLIENTVISIBLE (YES | NO) #IMPLIED    
    ISCLIENTEDITABLE (YES | NO) #IMPLIED
    ISREUSABLE (YES | NO) #IMPLIED
    COMPONENTVERSION CDATA #IMPLIED
>
<!ELEMENT CONWFRUNINFO EMPTY>
<!ATTLIST CONWFRUNINFO
    CONWFRUNINSTNAME CDATA #IMPLIED
    CONWFPARAMFILE CDATA #IMPLIED
>
<!ELEMENT TARGET (KEYWORD*, FLATFILE?, XMLINFO?, GROUP*, TARGETFIELD*, TARGETINDEX*, TABLEATTRIBUTE*, METADATAEXTENSION*)>
<!ATTLIST TARGET
    NAME CDATA #REQUIRED
    BUSINESSNAME CDATA #IMPLIED
    DESCRIPTION CDATA #IMPLIED
    OBJECTVERSION CDATA #IMPLIED
    CONSTRAINT CDATA #IMPLIED
    TABLEOPTIONS CDATA #IMPLIED
    TABLETYPE CDATA #IMPLIED
    DATABASETYPE CDATA #REQUIRED
    VERSIONNUMBER   CDATA       #IMPLIED
    COMPONENTVERSION CDATA #IMPLIED
    CRCVALUE CDATA #IMPLIED
>
<!ELEMENT KEYWORD EMPTY>
<!ATTLIST KEYWORD
    NAME CDATA #REQUIRED
>
<!ELEMENT TARGETFIELD (FIELDATTRIBUTE*)>
<!ATTLIST TARGETFIELD
    NAME CDATA #REQUIRED
    BUSINESSNAME CDATA #IMPLIED
    DESCRIPTION CDATA #IMPLIED
    DATATYPE CDATA #REQUIRED
    KEYTYPE CDATA #IMPLIED
    PRECISION CDATA #REQUIRED
    SCALE CDATA #IMPLIED
    FIELDNUMBER CDATA #IMPLIED
    NULLABLE (NOTNULL | NULL) #IMPLIED
    PICTURETEXT CDATA #IMPLIED
    REFERENCEDTABLE CDATA #IMPLIED
    REFERENCEDFIELD CDATA #IMPLIED
    GROUP CDATA #IMPLIED
    ISFILENAMEFIELD (YES | NO) #IMPLIED
>
<!ELEMENT TARGETINDEX (TARGETINDEXFIELD+)>
<!ATTLIST TARGETINDEX
    NAME CDATA #REQUIRED
    UNIQUE CDATA #IMPLIED
    DESCRIPTION CDATA #IMPLIED
>
<!ELEMENT TARGETINDEXFIELD EMPTY>
<!ATTLIST TARGETINDEXFIELD
    NAME CDATA #REQUIRED
>
<!ELEMENT TRANSFORMATION (GROUP*, SOURCEFIELD*, TRANSFORMFIELD*, TABLEATTRIBUTE*, INITPROP*, METADATAEXTENSION*, TRANSFORMFIELDATTRDEF*, FIELDDEPENDENCY*, FLATFILE?, EXPRMACRODEPENDENCY*)>
<!ATTLIST TRANSFORMATION
    NAME CDATA #REQUIRED
    DESCRIPTION CDATA #IMPLIED
    TYPE CDATA #REQUIRED
    OBJECTVERSION CDATA #IMPLIED
    REUSABLE CDATA #IMPLIED
    ISVSAM_NORMALIZER CDATA #IMPLIED
    REF_SOURCE_NAME CDATA #IMPLIED
    REF_DBD_NAME CDATA #IMPLIED
    TEMPLATEID CDATA #IMPLIED
    TEMPLATENAME CDATA #IMPLIED
    PARENT           CDATA         #IMPLIED
    PARENT_TYPE (MAPPING | MAPPLET) #IMPLIED
    VERSIONNUMBER   CDATA       #IMPLIED
    COMPONENTVERSION CDATA      #IMPLIED
    CRCVALUE        CDATA       #IMPLIED
>

<!ELEMENT TRANSFORMFIELDATTRDEF EMPTY>
<!ATTLIST TRANSFORMFIELDATTRDEF
        NAME             CDATA  #REQUIRED
        TYPE             CDATA  #REQUIRED
        DATATYPE         CDATA  #REQUIRED
        DESCRIPTION      CDATA  #IMPLIED
        DEFAULTVALUE     CDATA  #IMPLIED
        ORDER            CDATA  #REQUIRED
>
        
<!ELEMENT FIELDDEPENDENCY EMPTY>
<!ATTLIST FIELDDEPENDENCY
        INPUTFIELD      CDATA  #REQUIRED
        OUTPUTFIELD     CDATA  #REQUIRED
>

<!ELEMENT TRANSFORMFIELD (TRANSFORMFIELDATTR*)>
<!ATTLIST TRANSFORMFIELD
    NAME CDATA #REQUIRED
    DESCRIPTION CDATA #IMPLIED
    DATATYPE CDATA #REQUIRED
    PORTTYPE CDATA #REQUIRED
    PRECISION CDATA #REQUIRED
    SCALE CDATA #IMPLIED
    PICTURETEXT CDATA #IMPLIED
    DEFAULTVALUE CDATA #IMPLIED
    EXPRESSION CDATA #IMPLIED
    EXPRESSIONTYPE CDATA #IMPLIED
    EXPRESSION_DESCRIPTION CDATA #IMPLIED
    FIELDNUMBER CDATA #IMPLIED
    REF_SOURCE_FIELD CDATA #IMPLIED
    MAPPLETGROUP CDATA #IMPLIED
    REF_FIELD CDATA #IMPLIED
    REF_TRANSFORMATION CDATA #IMPLIED
    REF_INSTANCETYPE CDATA #IMPLIED
    SEQUENCE_GENERATOR_VALUE CDATA #IMPLIED
    GROUP CDATA #IMPLIED
    OUTPUTGROUP CDATA #IMPLIED
    ISSORTKEY (YES | NO) #IMPLIED
    SORTDIRECTION (ASCENDING | DESCENDING) #IMPLIED
    IGNORE_NULL_INPUTS (YES | NO) #IMPLIED
    IGNORE_IN_COMPARE (YES | NO) #IMPLIED
>

<!ELEMENT TRANSFORMFIELDATTR EMPTY>
<!ATTLIST TRANSFORMFIELDATTR
        NAME    CDATA   #REQUIRED
        VALUE   CDATA   #REQUIRED
>

<!ELEMENT INITPROP EMPTY>
<!ATTLIST INITPROP
    NAME CDATA #REQUIRED
    VALUE CDATA #REQUIRED
    DESCRIPTION CDATA #IMPLIED
    USERDEFINED CDATA #IMPLIED
>
<!ELEMENT MAPPING (TRANSFORMATION*, INSTANCE*, CONNECTOR*, MAPDEPENDENCY*, TARGETLOADORDER*, MAPPINGVARIABLE*, ERPINFO*, METADATAEXTENSION*)>
<!ATTLIST MAPPING
    NAME CDATA #REQUIRED
    DESCRIPTION CDATA #IMPLIED
    OBJECTVERSION CDATA #IMPLIED
    ISVALID CDATA #IMPLIED
    ISPROFILEMAPPING (YES | NO) #IMPLIED
    VERSIONNUMBER   CDATA       #IMPLIED
    CRCVALUE CDATA #IMPLIED
>
<!ELEMENT INSTANCE (TABLEATTRIBUTE*,  EXPRMACRODEPENDENCY*, INITPROP*, ASSOCIATED_SOURCE_INSTANCE*)>
<!ATTLIST INSTANCE
    NAME CDATA #REQUIRED
    DESCRIPTION CDATA #IMPLIED
    TYPE (SOURCE | TARGET | TRANSFORMATION | MAPPLET) #IMPLIED
    REUSABLE (YES|NO)         #IMPLIED
    TRANSFORMATION_TYPE CDATA #IMPLIED
    TRANSFORMATION_NAME CDATA #IMPLIED
    DBDNAME CDATA #IMPLIED
    ASSOCIATED_DSQ CDATA #IMPLIED
    ASSOCIATED_DSQ_TYPE CDATA #IMPLIED
    INSTANCEID CDATA #IMPLIED
>

<!ELEMENT ASSOCIATED_SOURCE_INSTANCE EMPTY>
<!ATTLIST ASSOCIATED_SOURCE_INSTANCE
    NAME  CDATA #REQUIRED >

<!ELEMENT CONNECTOR EMPTY>
<!ATTLIST CONNECTOR
    FROMINSTANCE CDATA #REQUIRED
    FROMINSTANCETYPE CDATA #REQUIRED
    FROMFIELD CDATA #REQUIRED
    TOINSTANCE CDATA #REQUIRED
    TOINSTANCETYPE CDATA #REQUIRED
    TOFIELD CDATA #REQUIRED
>
<!ELEMENT MAPDEPENDENCY EMPTY>
<!ATTLIST MAPDEPENDENCY
    FROMINSTANCE CDATA #REQUIRED
    FROMINSTANCETYPE CDATA #REQUIRED
    TOINSTANCE CDATA #REQUIRED
    TOINSTANCETYPE CDATA #REQUIRED
>
<!ELEMENT TARGETLOADORDER EMPTY>
<!ATTLIST TARGETLOADORDER
    TARGETINSTANCE CDATA #REQUIRED
    ORDER CDATA #IMPLIED
>
<!ELEMENT SHORTCUT EMPTY>
<!ATTLIST SHORTCUT
    NAME CDATA #REQUIRED
	DBDNAME CDATA #IMPLIED
    REPOSITORYNAME CDATA #REQUIRED
    REFOBJECTNAME CDATA #REQUIRED
    REFERENCEDDBD CDATA #IMPLIED
    REFERENCETYPE (GLOBAL | LOCAL) #REQUIRED
    OBJECTTYPE (SOURCE | TARGET | TRANSFORMATION | MAPPING | MAPPLET) #REQUIRED
    OBJECTSUBTYPE CDATA #IMPLIED
    FOLDERNAME CDATA #REQUIRED
    FOLDERVERSIONNAME CDATA #IMPLIED
    COMMENTS CDATA #IMPLIED
    VERSIONNUMBER   CDATA       #IMPLIED
    TEMPLATEID      CDATA       #IMPLIED
>
<!ELEMENT MAPPINGVARIABLE EMPTY>
<!ATTLIST MAPPINGVARIABLE
    NAME CDATA #REQUIRED
    DESCRIPTION CDATA #IMPLIED
    DATATYPE CDATA #REQUIRED
    PRECISION CDATA #REQUIRED
    SCALE CDATA #IMPLIED
    DEFAULTVALUE CDATA #IMPLIED
    AGGFUNCTION (COUNT | MIN | MAX | NONE) #IMPLIED
    USERDEFINED (YES | NO) #IMPLIED
    ISPARAM (YES | NO) #IMPLIED
    ISEXPRESSIONVARIABLE (YES | NO) #IMPLIED
>
<!ELEMENT ERPINFO (SAPFUNCTION*, SAPSTRUCTURE*, SAPPROGRAM*, (SAPOUTPUTPORT | SAPVARIABLE | SAPPROGRAMFLOWOBJECT)*)>
<!ELEMENT SAPPROGRAM EMPTY>
<!ATTLIST SAPPROGRAM
    NAME CDATA #REQUIRED
    PROGRAMTYPE CDATA #REQUIRED
    INSTALLTIME CDATA #IMPLIED
    HOSTNAME CDATA #IMPLIED
    USERNAME CDATA #IMPLIED
    CLIENTSPACE CDATA #IMPLIED
    ISVALID (YES|NO)  #IMPLIED
>
<!ELEMENT SAPPROGRAMFLOWOBJECT ((SAPFUNCTIONINSTANCE | SAPCODEBLOCK)?)>
<!ATTLIST SAPPROGRAMFLOWOBJECT
    REF_SOURCE_NAME CDATA #IMPLIED
    REF_DBD_NAME CDATA #IMPLIED
    REF_SOURCEINSTNAME CDATA #IMPLIED
    TYPE (SOURCE | FUNCTION | CODEBLOCK | NONE) #REQUIRED
    JOINBITMAP CDATA #REQUIRED
    ORDER CDATA #IMPLIED
    DSQINSTNAME CDATA #REQUIRED
>
<!ELEMENT SAPFUNCTIONINSTANCE (SAPFUNCINSTANCEPARAM*, SAPTABLEINSTANCEPARAM*)>
<!ATTLIST SAPFUNCTIONINSTANCE
    FUNCTIONNAME CDATA #REQUIRED
    DSQINSTNAME CDATA #REQUIRED
>
<!ELEMENT SAPFUNCINSTANCEPARAM (SAPFUNCINSTANCEPARAMFLD*)>
<!ATTLIST SAPFUNCINSTANCEPARAM
    NAME CDATA #REQUIRED
    TYPE (INPUT | OUTPUT | TABLE | CHANGING | NONE) #REQUIRED
    VALUE CDATA #IMPLIED
    VALUETYPE (CONSTANT | VARIABLE | SOURCEFIELD | DEFAULT | NONE) #REQUIRED
>
<!ELEMENT SAPFUNCINSTANCEPARAMFLD EMPTY>
<!ATTLIST SAPFUNCINSTANCEPARAMFLD
    NAME CDATA #REQUIRED
    VALUE CDATA #IMPLIED
    VALUETYPE (CONSTANT | VARIABLE | SOURCEFIELD | DEFAULT | NONE) #REQUIRED
>
<!ELEMENT SAPTABLEINSTANCEPARAM (SAPFUNCINSTANCEPARAMFLD*)>
<!ATTLIST SAPTABLEINSTANCEPARAM
    NAME CDATA #REQUIRED
    TYPE (INPUT | OUTPUT | TABLE | CHANGING | NONE) #REQUIRED
    VALUE CDATA #IMPLIED
    VALUETYPE (CONSTANT | VARIABLE | SOURCEFIELD | DEFAULT | NONE) #REQUIRED
>
<!ELEMENT SAPOUTPUTPORT EMPTY>
<!ATTLIST SAPOUTPUTPORT
    PORTNAME CDATA #IMPLIED
    FIELDNAME CDATA #IMPLIED
    VARNAME CDATA #IMPLIED
    DSQINSTNAME CDATA #REQUIRED
>
<!ELEMENT SAPVARIABLE EMPTY>
<!ATTLIST SAPVARIABLE
    NAME CDATA #REQUIRED
    SUBTYPE (STRUCTURETYPE | STRUCTUREFIELDTYPE | ABAPTYPE | NONE) #REQUIRED
    VARDEF CDATA #IMPLIED
    DATATYPE CDATA #IMPLIED
    SCALE CDATA #IMPLIED
    PRECISION CDATA #IMPLIED
    DEFAULTVALUE CDATA #IMPLIED
    ISOUTPUTPORT (YES | NO) #IMPLIED
    DSQINSTNAME CDATA #REQUIRED
>
<!ELEMENT SAPCODEBLOCK EMPTY>
<!ATTLIST SAPCODEBLOCK
    NAME CDATA #REQUIRED
    DESCRIPTION CDATA #IMPLIED
    CODEBLOCK CDATA #IMPLIED
    DSQINSTNAME CDATA #REQUIRED
>
<!ELEMENT SAPSTRUCTURE (SAPSTRUCTUREFIELD*)>
<!ATTLIST SAPSTRUCTURE
    NAME CDATA #REQUIRED
>
<!ELEMENT SAPSTRUCTUREFIELD EMPTY>
<!ATTLIST SAPSTRUCTUREFIELD
    NAME CDATA #REQUIRED
    DATATYPE CDATA #REQUIRED
    PRECISION CDATA #IMPLIED
    SCALE CDATA #IMPLIED
    ORDER CDATA #IMPLIED
>
<!ELEMENT SAPFUNCTION (SAPFUNCPARAM*, SAPTABLEPARAM*)>
<!ATTLIST SAPFUNCTION
    NAME CDATA #REQUIRED
    DESCRIPTION CDATA #IMPLIED
>
<!ELEMENT SAPFUNCPARAM EMPTY>
<!ATTLIST SAPFUNCPARAM
    NAME CDATA #REQUIRED
    TYPE (INPUT | OUTPUT | TABLE | CHANGING | NONE) #REQUIRED
    ISREFERENCE (YES | NO) #IMPLIED
    SUBTYPE (STRUCTURETYPE | STRUCTUREFIELDTYPE | ABAPTYPE | NONE) #REQUIRED
    DEF CDATA #IMPLIED
    DATATYPE CDATA #IMPLIED
    PRECISION CDATA #IMPLIED
    SCALE CDATA #IMPLIED
    ISOPTIONAL (YES | NO) #IMPLIED
    DEFAULTVALUE CDATA #IMPLIED
    ORDER CDATA #IMPLIED
>
<!ELEMENT SAPTABLEPARAM EMPTY>
<!ATTLIST SAPTABLEPARAM
    NAME CDATA #REQUIRED
    TYPE (INPUT | OUTPUT | TABLE | CHANGING | NONE) #REQUIRED
    DEF CDATA #IMPLIED
    ISOPTIONAL (YES | NO) #IMPLIED
    ORDER CDATA #IMPLIED
>
<!ELEMENT MAPPLET (TRANSFORMATION*, INSTANCE*, CONNECTOR*, MAPPINGVARIABLE*, ERPINFO*, METADATAEXTENSION*)>
<!ATTLIST MAPPLET
    NAME CDATA #REQUIRED
    DESCRIPTION CDATA #IMPLIED
    OBJECTVERSION CDATA #IMPLIED
    ISVALID CDATA #IMPLIED
    VERSIONNUMBER   CDATA       #IMPLIED
    CRCVALUE CDATA #IMPLIED
>

<!-- Tasks are the excutable objects that can be defined within a workflow -->
<!ELEMENT TASK (ATTRIBUTE*, EXPRMACRODEPENDENCY*, TIMER?, VALUEPAIR*, RESOURCEREFERENCE*)>
<!ATTLIST TASK
        NAME             CDATA       #REQUIRED
        DESCRIPTION      CDATA       #IMPLIED
        TYPE             CDATA       #REQUIRED
        REUSABLE (YES|NO)               #REQUIRED
        PARENT           CDATA          #IMPLIED
        PARENT_TYPE (WORKLET | WORKFLOW) #IMPLIED
        VERSIONNUMBER   CDATA       #IMPLIED
>

<!-- TimerScheduler is the scheduler associated with the Timer Task -->
<!ELEMENT TIMER  (STARTOPTIONS?, RECURRING?)>
<!ATTLIST TIMER
       TIMERTYPE (START_AT_ABSOLUTE_TIME|START_AT_ABSOLUTE_VARIABLE|START_RELATIVE_TO_PREVIOUSTASK|START_RELATIVE_TO_PARENT_WORKFLOW|START_RELATIVE_TO_TOPLEVEL_WORKFLOW) #REQUIRED
>


<!-- This object holds the details of the command task -->
<!ELEMENT VALUEPAIR EMPTY>
<!ATTLIST VALUEPAIR
        NAME            CDATA       #REQUIRED
        COMMENTS        CDATA       #IMPLIED
        VALUE           CDATA       #REQUIRED
        EXECORDER       CDATA       #IMPLIED
	REVERSEASSIGNMENT (YES|NO)  #IMPLIED
>

<!-- The scheduler object allows the workflow to be scheduled at a particular time.
it can either be reusable or non-reusable  need to add this later (SCHEDULERINFO*)-->
<!ELEMENT SCHEDULER  (SCHEDULEINFO)>
<!ATTLIST SCHEDULER
        NAME            CDATA       #REQUIRED
        DESCRIPTION     CDATA       #IMPLIED
        REUSABLE (YES|NO)           #REQUIRED
        VERSIONNUMBER   CDATA       #IMPLIED
>

<!ELEMENT SCHEDULEINFO ( STARTOPTIONS?, SCHEDULEOPTIONS?, ENDOPTIONS? ) >
<!ATTLIST SCHEDULEINFO
    SCHEDULETYPE ( ONDEMAND | CONTINUOUS | ONSERVERINIT ) #IMPLIED
>

<!ELEMENT STARTOPTIONS EMPTY>
<!ATTLIST STARTOPTIONS
    STARTDATE CDATA #IMPLIED
    STARTTIME CDATA #IMPLIED
>

<!ELEMENT ENDOPTIONS EMPTY>
<!ATTLIST ENDOPTIONS
    ENDTYPE (ENDON|ENDAFTER|RUNFOREVER) #REQUIRED
    ENDON CDATA #IMPLIED
    ENDAFTER CDATA #IMPLIED
    RUNFOREVER ( YES | NO )  #IMPLIED
>

<!ELEMENT SCHEDULEOPTIONS ( RECURRING?, CUSTOM? ) >
<!ATTLIST SCHEDULEOPTIONS  
    SCHEDULETYPE ( ONCE | RECURRING | CUSTOM ) #REQUIRED
>

<!ELEMENT RECURRING EMPTY>
<!ATTLIST RECURRING
  DAYS CDATA #IMPLIED
  HOURS CDATA #IMPLIED
  MINUTES CDATA #IMPLIED
>

<!ELEMENT CUSTOM ( DAILYFREQUENCY, REPEAT? ) >

<!ELEMENT DAILYFREQUENCY EMPTY>
<!ATTLIST DAILYFREQUENCY
    HOURS CDATA #IMPLIED
    MINUTES CDATA #IMPLIED
    RUNONCE (YES | NO) #IMPLIED
>

<!ELEMENT REPEAT ( FILTER* ) >
<!ATTLIST REPEAT
  TYPE ( DAILY | MONTHLY | WEEKLY ) #IMPLIED
  INTERVAL CDATA #IMPLIED
>

<!ELEMENT FILTER EMPTY>
<!ATTLIST FILTER
    DAYOFMONTH CDATA #IMPLIED
    DAY (MONDAY | TUESDAY | WEDNESDAY | THURSDAY | FRIDAY | SATURDAY | SUNDAY) #IMPLIED 
    OCCURRENCE (FIRST | SECOND | THIRD | FOURTH | LAST) #IMPLIED
>


<!-- A worklet is a reusable workflow, which can be used within a workflow -->
<!-- worklet can not be used as stand alone object -->
<!ELEMENT WORKLET (TASK*, SESSION*, WORKLET*, TASKINSTANCE*, WORKFLOWLINK*, 
                   WORKFLOWVARIABLE*, WORKFLOWEVENT*, ATTRIBUTE*, METADATAEXTENSION*)>
<!ATTLIST WORKLET
        NAME             CDATA       #REQUIRED
        DESCRIPTION      CDATA       #IMPLIED
        REUSABLE (YES|NO)            #REQUIRED
        ISVALID (YES|NO)               #IMPLIED
        PARENT           CDATA          #IMPLIED
        PARENT_TYPE (WORKLET | WORKFLOW) #IMPLIED
        VERSIONNUMBER   CDATA       #IMPLIED
>

<!ELEMENT ATTRIBUTE EMPTY>
<!ATTLIST ATTRIBUTE
        NAME            CDATA       #REQUIRED
        VALUE           CDATA       #REQUIRED
        PARTITIONNAME   CDATA       #IMPLIED
>

<!-- Sessions can be reusable or non-reusable -->
<!ELEMENT SESSION (TASK*, SESSTRANSFORMATIONINST*, CONFIGREFERENCE?, 
                   SESSIONCOMPONENT*, SESSIONEXTENSION*, ATTRIBUTE*, METADATAEXTENSION*,
                   (RESOURCEREFERENCE | TRANSFORMRESOURCEREF)*)>
<!ATTLIST SESSION
        NAME             CDATA       #REQUIRED
        DESCRIPTION      CDATA       #IMPLIED
        REUSABLE (YES|NO)            #REQUIRED
        ISVALID (YES|NO)             #IMPLIED
        MAPPINGNAME      CDATA       #REQUIRED
        MAPPINGVERSION   CDATA       #IMPLIED
        SORTORDER        CDATA       #IMPLIED
        PARENT           CDATA          #IMPLIED
        PARENT_TYPE (WORKLET | WORKFLOW) #IMPLIED
        VERSIONNUMBER   CDATA       #IMPLIED
>

<!ELEMENT CONFIGREFERENCE (ATTRIBUTE*)>
<!ATTLIST CONFIGREFERENCE
        REFOBJECTNAME    CDATA       #REQUIRED
        TYPE             CDATA       #REQUIRED
>

<!-- Sinstance identifies the usage and overriden attributes of a transformation instance used within a session task -->
<!ELEMENT SESSTRANSFORMATIONINST (SESSTRANSFORMATIONGROUP*, PARTITION*, HASHKEY*, FLATFILE*, ATTRIBUTE*)>
<!ATTLIST SESSTRANSFORMATIONINST
    SINSTANCENAME               CDATA       #REQUIRED
    TRANSFORMATIONNAME          CDATA       #REQUIRED
    TRANSFORMATIONTYPE          CDATA       #REQUIRED
    PARTITIONTYPE               CDATA       #IMPLIED
    ISREPARTITIONPOINT          (YES|NO)    #IMPLIED
    STAGE                       CDATA       #IMPLIED
    PIPELINE                    CDATA       #IMPLIED
>

<!ELEMENT SESSTRANSFORMATIONGROUP EMPTY>
<!ATTLIST SESSTRANSFORMATIONGROUP
    GROUP                       CDATA       #REQUIRED
    PARTITIONTYPE               CDATA       #IMPLIED
>

<!-- Hash keys are associated with a session instance -->
<!ELEMENT HASHKEY EMPTY>
<!ATTLIST HASHKEY
    NAME            CDATA       #REQUIRED
    GROUP           CDATA       #IMPLIED
>

<!ELEMENT PARTITION (KEYRANGE*)>
<!ATTLIST PARTITION 
        NAME            CDATA       #REQUIRED
        DESCRIPTION     CDATA       #IMPLIED
>

<!-- Key ranges associated with the partition -->
<!ELEMENT KEYRANGE EMPTY>
<!ATTLIST KEYRANGE
    NAME            CDATA       #REQUIRED
    STARTRANGE      CDATA       #IMPLIED
    ENDRANGE        CDATA       #IMPLIED
    SRCINSTANCENAME CDATA       #IMPLIED
    GROUP           CDATA       #IMPLIED
>

<!-- Config defines a list session properties, it can be reusable or non reusable -->
<!ELEMENT CONFIG (ATTRIBUTE*)>
<!ATTLIST CONFIG
        NAME            CDATA       #REQUIRED
        DESCRIPTION     CDATA       #IMPLIED
        ISDEFAULT (YES|NO)          #IMPLIED
        VERSIONNUMBER   CDATA       #IMPLIED
>

<!ELEMENT SESSIONCOMPONENT (TASK?, VALUEPAIR*, ATTRIBUTE*)>
<!ATTLIST SESSIONCOMPONENT
        TYPE            CDATA       #REQUIRED
        REFOBJECTNAME   CDATA       #REQUIRED
        REUSABLE (YES|NO)           #REQUIRED
        ISNONE (YES|NO) #IMPLIED
>

<!ELEMENT CONNECTIONREFERENCE (ATTRIBUTE*)>
<!ATTLIST CONNECTIONREFERENCE
        CNXREFNAME          CDATA       #REQUIRED
        CONNECTIONTYPE      CDATA       #REQUIRED
        CONNECTIONSUBTYPE   CDATA       #REQUIRED
        CONNECTIONNUMBER    CDATA       #REQUIRED
        CONNECTIONNAME      CDATA       #REQUIRED
        PARTITIONNAME       CDATA       #IMPLIED
        VARIABLE            CDATA       #IMPLIED
        COMPONENTVERSION    CDATA       #IMPLIED
>

<!ELEMENT SESSIONEXTENSION (CONNECTIONREFERENCE*, ATTRIBUTE*)>
<!ATTLIST SESSIONEXTENSION
        NAME                  CDATA       #REQUIRED
        TYPE                  CDATA       #REQUIRED
        SUBTYPE               CDATA       #REQUIRED
        SINSTANCENAME         CDATA       #REQUIRED
        TRANSFORMATIONTYPE    CDATA       #REQUIRED
        DSQINSTNAME           CDATA       #IMPLIED
        DSQINSTTYPE           CDATA       #IMPLIED
        COMPONENTVERSION      CDATA       #IMPLIED
>

<!-- Specifies a resource required by a session/command task instance, 
       or a transformation in session instance -->
<!ELEMENT RESOURCEREFERENCE EMPTY>
<!ATTLIST RESOURCEREFERENCE
   TYPE  CDATA #REQUIRED
   NAME  CDATA       #REQUIRED
>

<!ELEMENT TRANSFORMRESOURCEREF (RESOURCEREFERENCE+)>
<!ATTLIST TRANSFORMRESOURCEREF
   SINSTANCENAME         CDATA       #REQUIRED
   TRANSFORMATIONTYPE    CDATA       #REQUIRED
>

<!-- A workflow is a set of actions & rules on how and when to execute those actions. 
     every action can be defined as an instance of an executable object 
     workflow consists of reusable & non-reusable object instances -->
<!ELEMENT WORKFLOW (SCHEDULER?, TASK*, SESSION*, WORKLET*, TASKINSTANCE*, WORKFLOWLINK*, WORKFLOWVARIABLE*, WORKFLOWEVENT*, ATTRIBUTE*, METADATAEXTENSION*, CONWFRUNINFO*)>
<!ATTLIST WORKFLOW
        NAME             CDATA       #REQUIRED
        DESCRIPTION      CDATA       #IMPLIED
        SERVERNAME       CDATA       #IMPLIED
        SERVER_DOMAINNAME   CDATA    #IMPLIED
        SUSPENSION_EMAIL CDATA       #IMPLIED
        SCHEDULERNAME    CDATA       #IMPLIED
        REUSABLE_SCHEDULER (YES|NO)  #IMPLIED
        ISVALID (YES|NO)             #IMPLIED
        ISENABLED (YES|NO)           #IMPLIED
        SUSPEND_ON_ERROR  ( YES | NO )    #IMPLIED
        TASKS_MUST_RUN_ON_SERVER (YES|NO)   #IMPLIED
        VERSIONNUMBER   CDATA       #IMPLIED
        ISSERVICE (YES|NO)         #IMPLIED
        ISRUNNABLESERVICE (YES|NO)    #IMPLIED
        SERVICELEVELNAME CDATA        #IMPLIED
>

<!-- Instance of the task used within a workflow instance has attributes overriden ;
     if the instance is of type session it has additional overrides as such SESSIONCOMPONENTs 
     and sessions -->
<!ELEMENT TASKINSTANCE (ATTRIBUTE*, WORKFLOWVARIABLE*, VALUEPAIR*, CONFIGREFERENCE?, SESSIONCOMPONENT*, SESSIONEXTENSION*, (RESOURCEREFERENCE | TRANSFORMRESOURCEREF)*)>
<!ATTLIST TASKINSTANCE
        NAME            CDATA       #REQUIRED
        DESCRIPTION     CDATA       #IMPLIED
        TASKTYPE        CDATA       #REQUIRED
        TASKNAME        CDATA       #REQUIRED
        ISENABLED (YES|NO)          #IMPLIED
        REUSABLE (YES|NO)           #REQUIRED
        TREAT_INPUTLINK_AS_AND  (YES|NO) #IMPLIED
        FAIL_PARENT_IF_INSTANCE_FAILS (YES|NO)  #IMPLIED
        FAIL_PARENT_IF_INSTANCE_DID_NOT_RUN (YES|NO) #IMPLIED
        SERVER_OVERRIDE CDATA       #IMPLIED
>

<!-- A link represents the flow of execution from one object instance to the other -->
<!ELEMENT WORKFLOWLINK (EXPRMACRODEPENDENCY*)>
<!ATTLIST WORKFLOWLINK
        FROMTASK        CDATA       #REQUIRED
        TOTASK          CDATA       #REQUIRED
        CONDITION       CDATA       #IMPLIED
>

<!-- Variables are placeholders for recording information like status of an object -->
<!ELEMENT WORKFLOWVARIABLE EMPTY>
<!ATTLIST WORKFLOWVARIABLE
        NAME            CDATA       #REQUIRED
        DESCRIPTION     CDATA       #IMPLIED
        USERDEFINED (YES|NO)        #REQUIRED
        DATATYPE        CDATA       #IMPLIED
        DEFAULTVALUE    CDATA       #IMPLIED
        ISPERSISTENT (YES|NO)   #IMPLIED
        ISNULL (YES|NO)   #IMPLIED
>

<!-- An event is a notification that occurs in response to an action. users may want to -->
<!-- start the execution of an object instance based on an event -->
<!ELEMENT WORKFLOWEVENT  EMPTY>
<!ATTLIST WORKFLOWEVENT
        NAME            CDATA           #REQUIRED
        DESCRIPTION     CDATA           #IMPLIED
>

<!ELEMENT EXPRMACRO (MACROARGUMENT*, MACRODEPENDENCY*)>
<!ATTLIST EXPRMACRO
    NAME CDATA #REQUIRED
    DESCRIPTION CDATA #IMPLIED
    OBJECTVERSION CDATA #IMPLIED
    PROTOTYPE CDATA #IMPLIED
    EXPRESSION CDATA #REQUIRED
    MACROTYPE (Public | Private) #IMPLIED
    RETURNTYPE CDATA       #IMPLIED
    VERSIONNUMBER CDATA #IMPLIED
>

<!ELEMENT MACROARGUMENT EMPTY>
<!ATTLIST MACROARGUMENT
    NAME CDATA #REQUIRED
    DATATYPE CDATA #IMPLIED
    PRECISION CDATA #IMPLIED
    SCALE CDATA #IMPLIED
    ARGORDER CDATA #IMPLIED
>

<!ELEMENT MACRODEPENDENCY EMPTY>
<!ATTLIST MACRODEPENDENCY
    NAME CDATA #REQUIRED
>

<!ELEMENT EXPRMACRODEPENDENCY EMPTY>
<!ATTLIST EXPRMACRODEPENDENCY
    NAME CDATA #REQUIRED
>
