<!--Copyright 1999 The HR-XML Consortium -->
<!-- JobPosting content model -->
<!ELEMENT JobPosting  (JobPostingID* , PostDetail? , HiringOrg , PrincipalEmployer? , JobInformation )>
<!ATTLIST JobPosting  name  CDATA  #IMPLIED
                      class CDATA  #IMPLIED
                      id    ID     #IMPLIED >
<!ELEMENT Link  (#PCDATA )>
<!ATTLIST Link  name    CDATA  #IMPLIED
                class   CDATA  #IMPLIED
                mailTo  CDATA  #IMPLIED
                linkEnd CDATA  #IMPLIED
                refId   ID     #IMPLIED >
<!ELEMENT Img EMPTY>
<!ATTLIST Img  name   CDATA  #IMPLIED
               class  CDATA  #IMPLIED
               id     ID     #IMPLIED
               src    CDATA  #REQUIRED
               width  CDATA  #IMPLIED
               height CDATA  #IMPLIED
               alt    CDATA  #IMPLIED >
<!ELEMENT Object EMPTY>
<!ATTLIST Object  name      CDATA  #IMPLIED
                  class     CDATA  #IMPLIED
                  id        ID     #IMPLIED
                  src       CDATA  #REQUIRED
                  width     CDATA  #IMPLIED
                  height    CDATA  #IMPLIED
                  alt       CDATA  #IMPLIED
                  mediaType CDATA  #IMPLIED
                  parm      CDATA  #IMPLIED >
<!-- date markup, must include year -->
<!ELEMENT Date  ( (Month , Day? , Year ) |  (Day , Month , Year ) |  (Year ) )>
<!ATTLIST Date  name  CDATA  #IMPLIED
                class CDATA  #IMPLIED
                id    ID     #IMPLIED >
<!--ATTLIST date  e-dtype NMTOKEN  #FIXED 'date' -->
<!ELEMENT Month  (#PCDATA )>
<!ATTLIST Month  name  CDATA  #IMPLIED
                 class CDATA  #IMPLIED
                 id    ID     #IMPLIED >
<!ELEMENT Day  (#PCDATA )>
<!ATTLIST Day  name    CDATA    #IMPLIED
               class   CDATA    #IMPLIED
               id      ID       #IMPLIED
               e-dtype NMTOKEN  #FIXED 'int' >
<!ELEMENT Year  (#PCDATA )>
<!ATTLIST Year  name    CDATA    #IMPLIED
                class   CDATA    #IMPLIED
                id      ID       #IMPLIED
                e-dtype NMTOKEN  #FIXED 'int' >
<!ELEMENT StartDate  (Date , Comment? )>
<!ATTLIST StartDate  name  CDATA  #IMPLIED
                     class CDATA  #IMPLIED
                     id    ID     #IMPLIED >
<!ELEMENT EndDate  ( (Date | CurrentPosition ) , Comment? )>
<!ATTLIST EndDate  name  CDATA  #IMPLIED
                   class CDATA  #IMPLIED
                   id    ID     #IMPLIED >
<!ELEMENT CurrentPosition EMPTY>
<!ATTLIST CurrentPosition  name  CDATA  #IMPLIED
                           class CDATA  #IMPLIED
                           id    ID     #IMPLIED >
<!-- Person name and jobtitle -->
<!ELEMENT Name  (Prefix? , First , Middle? , Last , Suffix? , Nickname? )>
<!ATTLIST Name  name  CDATA  #IMPLIED
                class CDATA  #IMPLIED
                id    ID     #IMPLIED >
<!ELEMENT Prefix  (#PCDATA )>
<!ATTLIST Prefix  name  CDATA  #IMPLIED
                  class CDATA  #IMPLIED
                  id    ID     #IMPLIED >
<!ELEMENT First  (#PCDATA )>
<!ATTLIST First  name  CDATA  #IMPLIED
                 class CDATA  #IMPLIED
                 id    ID     #IMPLIED >
<!ELEMENT Middle  (#PCDATA )>
<!ATTLIST Middle  name  CDATA  #IMPLIED
                  class CDATA  #IMPLIED
                  id    ID     #IMPLIED >
<!ELEMENT Last  (#PCDATA )>
<!ATTLIST Last  name  CDATA  #IMPLIED
                class CDATA  #IMPLIED
                id    ID     #IMPLIED >
<!ELEMENT Suffix  (#PCDATA )>
<!ATTLIST Suffix  name  CDATA  #IMPLIED
                  class CDATA  #IMPLIED
                  id    ID     #IMPLIED >
<!ELEMENT Nickname  (#PCDATA )>
<!ATTLIST Nickname  name  CDATA  #IMPLIED
                    class CDATA  #IMPLIED
                    id    ID     #IMPLIED >
<!ELEMENT JobTitle  (#PCDATA )>
<!ATTLIST JobTitle  name  CDATA  #IMPLIED
                    class CDATA  #IMPLIED
                    id    ID     #IMPLIED >
<!-- Contact Information -->
<!ELEMENT Contact  (Name , JobTitle? , Address? , PhoneNumbers , Website? , Email* )>
<!ATTLIST Contact  name  CDATA  #IMPLIED
                   class CDATA  #IMPLIED
                   id    ID     #IMPLIED >
<!ELEMENT Email  (#PCDATA )>
<!ATTLIST Email  name  CDATA  #IMPLIED
                 class CDATA  #IMPLIED
                 id    ID     #IMPLIED >
<!ELEMENT Website  (#PCDATA )>
<!ATTLIST Website  name  CDATA  #IMPLIED
                   class CDATA  #IMPLIED
                   id    ID     #IMPLIED >
<!-- Post Detail -->
<!ELEMENT PostDetail  (StartDate , EndDate? , PostedBy? )>
<!ATTLIST PostDetail  name  CDATA  #IMPLIED
                      class CDATA  #IMPLIED
                      id    ID     #IMPLIED >
<!ELEMENT PostedBy  (Contact )>
<!ATTLIST PostedBy  name  CDATA  #IMPLIED
                    class CDATA  #IMPLIED
                    id    ID     #IMPLIED >
<!-- Emphasis -->
<!ELEMENT Emph  (#PCDATA )>
<!ATTLIST Emph  face   (b | i | bi | u | bu | iu )  'b'
                name  CDATA  #IMPLIED
                class CDATA  #IMPLIED
                id    ID     #IMPLIED >
<!-- TBD is an acronym for 'to be determined.' 
A comment is optionally allowed within tbd to 
provide explanation. 

		-->
<!ELEMENT TBD  ( (Comment )? )>
<!ATTLIST TBD  name  CDATA  #IMPLIED
               class CDATA  #IMPLIED
               id    ID     #IMPLIED >
<!ELEMENT Comment  (#PCDATA )>
<!ATTLIST Comment  name  CDATA  #IMPLIED
                   class CDATA  #IMPLIED
                   id    ID     #IMPLIED >
<!--Ordered List-->
<!ELEMENT ol  (li+ )>
<!ATTLIST ol  name  CDATA  #IMPLIED
              class CDATA  #IMPLIED
              id    ID     #IMPLIED >
<!--Unodered List-->
<!ELEMENT ul  (li+ )>
<!ATTLIST ul  name  CDATA  #IMPLIED
              class CDATA  #IMPLIED
              id    ID     #IMPLIED >
<!--List Item-->
<!ELEMENT li  (#PCDATA | Emph | Link | StartDate | EndDate | Date | Img | Object )*>
<!ATTLIST li  name  CDATA  #IMPLIED
              class CDATA  #IMPLIED
              id    ID     #IMPLIED >
<!--Definition List-->
<!ELEMENT dl  (dt , dd )>
<!ATTLIST dl  name  CDATA  #IMPLIED
              class CDATA  #IMPLIED
              id    ID     #IMPLIED >
<!ELEMENT dt  (#PCDATA | Emph | Link | StartDate | EndDate | Date | Img | Object )*>
<!ATTLIST dt  name  CDATA  #IMPLIED
              class CDATA  #IMPLIED
              id    ID     #IMPLIED >
<!ELEMENT dd  (#PCDATA | Emph | Link | StartDate | EndDate | Date | Img | Object )*>
<!ATTLIST dd  name  CDATA  #IMPLIED
              class CDATA  #IMPLIED
              id    ID     #IMPLIED >
<!-- Paragraph -->
<!ELEMENT p  (#PCDATA | Emph | Link | StartDate | EndDate | Date | Img | Object )*>
<!ATTLIST p  name  CDATA  #IMPLIED
             class CDATA  #IMPLIED
             id    ID     #IMPLIED >
<!--Elements shared between candidate
    profile and job posting
		-->
<!ELEMENT Degree  (#PCDATA | Comment )*>
<!ATTLIST Degree  name  CDATA  #IMPLIED
                  class CDATA  #IMPLIED
                  id    ID     #IMPLIED >
<!ELEMENT Major  (#PCDATA | Comment )*>
<!ATTLIST Major  name  CDATA  #IMPLIED
                 class CDATA  #IMPLIED
                 id    ID     #IMPLIED >
<!ELEMENT Minor  (#PCDATA | Comment )*>
<!ATTLIST Minor  name  CDATA  #IMPLIED
                 class CDATA  #IMPLIED
                 id    ID     #IMPLIED >
<!-- markup for information  about the hiring organization.

		-->
<!ELEMENT HiringOrg  (OrgName , Website? , BusType? , EmployerDesc? , Contact* )>
<!ATTLIST HiringOrg  type        (agent | principal | unspecified )  'unspecified'
                     distribute  (external | internal | restricted )  'external'
                     name       CDATA  #IMPLIED
                     class      CDATA  #IMPLIED
                     id         ID     #IMPLIED >
<!ELEMENT PrincipalEmployer  (OrgName , Website? , BusType? , EmployerDesc? , Contact* )>
<!ATTLIST PrincipalEmployer  distribute  (external | internal | restricted )  'external'
                             name       CDATA  #IMPLIED
                             class      CDATA  #IMPLIED
                             id         ID     #IMPLIED >
<!ELEMENT OrgName  (#PCDATA )>
<!ATTLIST OrgName  distribute  (external | internal | restricted )  'external'
                   name       CDATA  #IMPLIED
                   class      CDATA  #IMPLIED
                   id         ID     #IMPLIED >
<!ELEMENT SIC  (#PCDATA )>
<!ATTLIST SIC  distribute  (external | internal | restricted )  'external'
               name       CDATA    #IMPLIED
               class      CDATA    #IMPLIED
               id         ID       #IMPLIED
               e-dtype    NMTOKEN  #FIXED 'int' >
<!ELEMENT BusType  (#PCDATA | SIC )*>
<!ATTLIST BusType  distribute  (external | internal | restricted )  'external'
                   name       CDATA  #IMPLIED
                   class      CDATA  #IMPLIED
                   id         ID     #IMPLIED >
<!ELEMENT EmployerDesc  (#PCDATA | p | ol | ul | dl | Img | Object )*>
<!ATTLIST EmployerDesc  distribute  (external | internal | restricted )  'external'
                        name       CDATA  #IMPLIED
                        class      CDATA  #IMPLIED
                        id         ID     #IMPLIED >
<!ELEMENT JobInformation  (ClassifDetail? , JobTitle , Location? , Description , HowToApply+ , EEOStatement? )>
<!ATTLIST JobInformation  name       CDATA  #IMPLIED
                          class      CDATA  #IMPLIED
                          id         ID     #IMPLIED
                          distribute  (external | internal | restricted )  'external' >
<!ELEMENT Description  ( (Comment | JobPurpose | EssentialFunctions | QualifRequired | WrkEnvironment | Preferences | Compensation | p | ol | ul | dl | Img | Object )* )>
<!ATTLIST Description  name       CDATA  #IMPLIED
                       class      CDATA  #IMPLIED
                       id         ID     #IMPLIED
                       distribute  (external | internal | restricted )  'external' >
<!ELEMENT ClassifDetail  (Grade? , Classification? , ApprovedBy? , ApprovedDate? )>
<!ATTLIST ClassifDetail  name       CDATA  #IMPLIED
                         class      CDATA  #IMPLIED
                         id         ID     #IMPLIED
                         distribute  (external | internal | restricted )  'external' >
<!ELEMENT Compensation  ( (Comment | p | ol | ul | dl | Img | Object )+ )>
<!ATTLIST Compensation  name       CDATA  #IMPLIED
                        class      CDATA  #IMPLIED
                        id         ID     #IMPLIED
                        distribute  (external | internal | restricted )  'external' >
<!-- The DTD permits more than one
       "how to apply." By using the "Distribute"
       attribute,  separate HowToApply 
       instructions could be prepared for 
       internal and external applicants 
		-->
<!ELEMENT HowToApply  ( (Comment | p | ol | ul | dl | Img | Object )+ )>
<!ATTLIST HowToApply  name       CDATA  #IMPLIED
                      class      CDATA  #IMPLIED
                      id         ID     #IMPLIED
                      distribute  (external | internal | restricted )  'external' >
<!ELEMENT Grade  (#PCDATA | Comment )*>
<!ATTLIST Grade  name       CDATA  #IMPLIED
                 class      CDATA  #IMPLIED
                 id         ID     #IMPLIED
                 distribute  (external | internal | restricted )  'external' >
<!-- Many employers include an EEO statement
      in their job postings. Some government 
      employers and contractors may be required
      to include such a statement when 
      advertising a job. 
		-->
<!ELEMENT EEOStatement  ( (p | ol | ul | dl | Img | Object )+ )>
<!ATTLIST EEOStatement  name       CDATA  #IMPLIED
                        class      CDATA  #IMPLIED
                        id         ID     #IMPLIED
                        distribute  (external | internal | restricted )  'external' >
<!ELEMENT JobPurpose  ( (Comment | p | ol | ul | dl | Img | Object )+ )>
<!ATTLIST JobPurpose  name       CDATA  #IMPLIED
                      class      CDATA  #IMPLIED
                      id         ID     #IMPLIED
                      distribute  (external | internal | restricted )  'external' >
<!ELEMENT EssentialFunctions  ( (Comment | p | ol | ul | dl | Img | Object )+ )>
<!ATTLIST EssentialFunctions  name       CDATA  #IMPLIED
                              class      CDATA  #IMPLIED
                              id         ID     #IMPLIED
                              distribute  (external | internal | restricted )  'external' >
<!ELEMENT WrkEnvironment  ( (Comment | p | ol | ul | dl | Img | Object )+ )>
<!ATTLIST WrkEnvironment  name       CDATA  #IMPLIED
                          class      CDATA  #IMPLIED
                          id         ID     #IMPLIED
                          distribute  (external | internal | restricted )  'external' >
<!ELEMENT Preferences  ( (Comment | p | ol | ul | dl | Img | Object )+ )>
<!ATTLIST Preferences  name       CDATA  #IMPLIED
                       class      CDATA  #IMPLIED
                       id         ID     #IMPLIED
                       distribute  (external | internal | restricted )  'external' >
<!ELEMENT ApprovedBy  (#PCDATA | Comment )*>
<!ATTLIST ApprovedBy  name       CDATA  #IMPLIED
                      class      CDATA  #IMPLIED
                      id         ID     #IMPLIED
                      distribute  (external | internal | restricted )  'external' >
<!ELEMENT ApprovedDate  (Date )>
<!ATTLIST ApprovedDate  name       CDATA  #IMPLIED
                        class      CDATA  #IMPLIED
                        id         ID     #IMPLIED
                        distribute  (external | internal | restricted )  'external' >
<!ELEMENT Classification  (PositionType? , Schedule? , Duration? , OTStatus? )>
<!ATTLIST Classification  name       CDATA  #IMPLIED
                          class      CDATA  #IMPLIED
                          id         ID     #IMPLIED
                          distribute  (external | internal | restricted )  'external' >
<!ELEMENT PositionType  ( (DirectHire | Contract | TBD ) , Comment? )>
<!ATTLIST PositionType  name       CDATA  #IMPLIED
                        class      CDATA  #IMPLIED
                        id         ID     #IMPLIED
                        distribute  (external | internal | restricted )  'external' >
<!ELEMENT OTStatus  ( (Exempt | Nonexempt | TBD ) , Comment? )>
<!ATTLIST OTStatus  name       CDATA  #IMPLIED
                    class      CDATA  #IMPLIED
                    id         ID     #IMPLIED
                    distribute  (external | internal | restricted )  'external' >
<!ELEMENT Schedule  ( (FullTime | PartTime | TBD ) , Comment? )>
<!ATTLIST Schedule  name       CDATA  #IMPLIED
                    class      CDATA  #IMPLIED
                    id         ID     #IMPLIED
                    distribute  (external | internal | restricted )  'external' >
<!ELEMENT Duration  ( (Temporary | Regular | TBD ) , Comment? )>
<!ATTLIST Duration  name       CDATA  #IMPLIED
                    class      CDATA  #IMPLIED
                    id         ID     #IMPLIED
                    distribute  (external | internal | restricted )  'external' >
<!ELEMENT Exempt EMPTY>
<!ATTLIST Exempt  name       CDATA  #IMPLIED
                  class      CDATA  #IMPLIED
                  id         ID     #IMPLIED
                  distribute  (external | internal | restricted )  'external' >
<!ELEMENT Nonexempt EMPTY>
<!ATTLIST Nonexempt  name       CDATA  #IMPLIED
                     class      CDATA  #IMPLIED
                     id         ID     #IMPLIED
                     distribute  (external | internal | restricted )  'external' >
<!ELEMENT DirectHire EMPTY>
<!ATTLIST DirectHire  name       CDATA  #IMPLIED
                      class      CDATA  #IMPLIED
                      id         ID     #IMPLIED
                      distribute  (external | internal | restricted )  'external' >
<!ELEMENT Contract EMPTY>
<!ATTLIST Contract  name       CDATA  #IMPLIED
                    class      CDATA  #IMPLIED
                    id         ID     #IMPLIED
                    distribute  (external | internal | restricted )  'external' >
<!ELEMENT FullTime  ( (HoursPerWeek | Comment )+ )>
<!ATTLIST FullTime  name       CDATA  #IMPLIED
                    class      CDATA  #IMPLIED
                    id         ID     #IMPLIED
                    distribute  (external | internal | restricted )  'external' >
<!ELEMENT PartTime  ( (HoursPerWeek | Comment )+ )>
<!ATTLIST PartTime  name       CDATA  #IMPLIED
                    class      CDATA  #IMPLIED
                    id         ID     #IMPLIED
                    distribute  (external | internal | restricted )  'external' >
<!ELEMENT HoursPerWeek  (#PCDATA | Comment )*>
<!ATTLIST HoursPerWeek  name       CDATA  #IMPLIED
                        class      CDATA  #IMPLIED
                        id         ID     #IMPLIED
                        distribute  (external | internal | restricted )  'external' >
<!ELEMENT Temporary  ( (TermLength | Comment )+ )>
<!ATTLIST Temporary  name       CDATA  #IMPLIED
                     class      CDATA  #IMPLIED
                     id         ID     #IMPLIED
                     distribute  (external | internal | restricted )  'external' >
<!ELEMENT TermLength  (#PCDATA | Comment )*>
<!ATTLIST TermLength  name       CDATA  #IMPLIED
                      class      CDATA  #IMPLIED
                      id         ID     #IMPLIED
                      distribute  (external | internal | restricted )  'external' >
<!ELEMENT Regular EMPTY>
<!ATTLIST Regular  name       CDATA  #IMPLIED
                   class      CDATA  #IMPLIED
                   id         ID     #IMPLIED
                   distribute  (external | internal | restricted )  'external' >
<!ELEMENT QualifRequired  ( (Comment | SkillRequired | ExperienceRequired | SoftwareRequired | PrgmLangRequired | EducationRequired | LicenseRequired | CertificationRequired | HardwareRequired | EquipmntRequired | OtherRequired | DegreeRequired )+ )>
<!ATTLIST QualifRequired  name       CDATA  #IMPLIED
                          class      CDATA  #IMPLIED
                          id         ID     #IMPLIED
                          distribute  (external | internal | restricted )  'external' >
<!ELEMENT HardwareRequired  (#PCDATA )>
<!ATTLIST HardwareRequired  YearsOfExperience CDATA  #IMPLIED
                            level              (1 | 2 | 3 | 4 | 5 )  #IMPLIED
                            interest           (1 | 2 | 3 | 4 | 5 )  #IMPLIED
                            name              CDATA  #IMPLIED
                            class             CDATA  #IMPLIED
                            id                ID     #IMPLIED
                            distribute         (external | internal | restricted )  'external' >
<!ELEMENT EquipmntRequired  (#PCDATA )>
<!ATTLIST EquipmntRequired  YearsOfExperience CDATA  #IMPLIED
                            level              (1 | 2 | 3 | 4 | 5 )  #IMPLIED
                            interest           (1 | 2 | 3 | 4 | 5 )  #IMPLIED
                            name              CDATA  #IMPLIED
                            class             CDATA  #IMPLIED
                            id                ID     #IMPLIED
                            distribute         (external | internal | restricted )  'external' >
<!ELEMENT SkillRequired  (#PCDATA )>
<!ATTLIST SkillRequired  YearsOfExperience CDATA  #IMPLIED
                         level              (1 | 2 | 3 | 4 | 5 )  #IMPLIED
                         interest           (1 | 2 | 3 | 4 | 5 )  #IMPLIED
                         name              CDATA  #IMPLIED
                         class             CDATA  #IMPLIED
                         id                ID     #IMPLIED
                         distribute         (external | internal | restricted )  'external' >
<!ELEMENT ExperienceRequired  (#PCDATA )>
<!ATTLIST ExperienceRequired  YearsOfExperience CDATA  #IMPLIED
                              level              (1 | 2 | 3 | 4 | 5 )  #IMPLIED
                              interest           (1 | 2 | 3 | 4 | 5 )  #IMPLIED
                              name              CDATA  #IMPLIED
                              class             CDATA  #IMPLIED
                              id                ID     #IMPLIED
                              distribute         (external | internal | restricted )  'external' >
<!ELEMENT SoftwareRequired  (#PCDATA )>
<!ATTLIST SoftwareRequired  YearsOfExperience CDATA  #IMPLIED
                            level              (1 | 2 | 3 | 4 | 5 )  #IMPLIED
                            interest           (1 | 2 | 3 | 4 | 5 )  #IMPLIED
                            name              CDATA  #IMPLIED
                            class             CDATA  #IMPLIED
                            id                ID     #IMPLIED
                            distribute         (external | internal | restricted )  'external' >
<!ELEMENT PrgmLangRequired  (#PCDATA )>
<!ATTLIST PrgmLangRequired  YearsOfExperience CDATA  #IMPLIED
                            level              (1 | 2 | 3 | 4 | 5 )  #IMPLIED
                            interest           (1 | 2 | 3 | 4 | 5 )  #IMPLIED
                            name              CDATA  #IMPLIED
                            class             CDATA  #IMPLIED
                            id                ID     #IMPLIED
                            distribute         (external | internal | restricted )  'external' >
<!ELEMENT EducationRequired  (#PCDATA | Degree | Major | Minor )*>
<!ATTLIST EducationRequired  YearsOfExperience CDATA  #IMPLIED
                             level              (1 | 2 | 3 | 4 | 5 )  #IMPLIED
                             interest           (1 | 2 | 3 | 4 | 5 )  #IMPLIED
                             name              CDATA  #IMPLIED
                             class             CDATA  #IMPLIED
                             id                ID     #IMPLIED
                             distribute         (external | internal | restricted )  'external' >
<!ELEMENT CertificationRequired  (Certification )>
<!ATTLIST CertificationRequired  YearsOfExperience CDATA  #IMPLIED
                                 level              (1 | 2 | 3 | 4 | 5 )  #IMPLIED
                                 interest           (1 | 2 | 3 | 4 | 5 )  #IMPLIED
                                 name              CDATA  #IMPLIED
                                 class             CDATA  #IMPLIED
                                 id                ID     #IMPLIED
                                 distribute         (external | internal | restricted )  'external' >
<!ELEMENT LicenseRequired  (LicenseName )>
<!ATTLIST LicenseRequired  YearsOfExperience CDATA  #IMPLIED
                           level              (1 | 2 | 3 | 4 | 5 )  #IMPLIED
                           interest           (1 | 2 | 3 | 4 | 5 )  #IMPLIED
                           name              CDATA  #IMPLIED
                           class             CDATA  #IMPLIED
                           id                ID     #IMPLIED
                           distribute         (external | internal | restricted )  'external' >
<!ELEMENT OtherRequired  (#PCDATA )>
<!ATTLIST OtherRequired  YearsOfExperience CDATA  #IMPLIED
                         level              (1 | 2 | 3 | 4 | 5 )  #IMPLIED
                         interest           (1 | 2 | 3 | 4 | 5 )  #IMPLIED
                         name              CDATA  #IMPLIED
                         class             CDATA  #IMPLIED
                         id                ID     #IMPLIED
                         distribute         (external | internal | restricted )  'external' >
<!ELEMENT DegreeRequired  (Degree )>
<!ATTLIST DegreeRequired  YearsOfExperience CDATA  #IMPLIED
                          level              (1 | 2 | 3 | 4 | 5 )  #IMPLIED
                          interest           (1 | 2 | 3 | 4 | 5 )  #IMPLIED
                          name              CDATA  #IMPLIED
                          class             CDATA  #IMPLIED
                          id                ID     #IMPLIED
                          distribute         (external | internal | restricted )  'external' >
<!ELEMENT Certification  (#PCDATA )>
<!ATTLIST Certification  name       CDATA  #IMPLIED
                         class      CDATA  #IMPLIED
                         id         ID     #IMPLIED
                         distribute  (external | internal | restricted )  'external' >
<!ELEMENT LicenseName  (#PCDATA )>
<!ATTLIST LicenseName  name       CDATA  #IMPLIED
                       class      CDATA  #IMPLIED
                       id         ID     #IMPLIED
                       distribute  (external | internal | restricted )  'external' >
<!-- hr-phon.mod is module containing declarations
      for elements used to markup telephone information.

		-->
<!ELEMENT PhoneNumbers  ( (Voice | Fax | Pager )+ )>
<!ATTLIST PhoneNumbers  name       CDATA  #IMPLIED
                        class      CDATA  #IMPLIED
                        id         ID     #IMPLIED
                        distribute  (external | internal | restricted )  'external' >
<!ELEMENT IntlCode  (#PCDATA )>
<!ATTLIST IntlCode  name       CDATA    #IMPLIED
                    class      CDATA    #IMPLIED
                    id         ID       #IMPLIED
                    distribute  (external | internal | restricted )  'external'
                    e-dtype    NMTOKEN  #FIXED 'int' >
<!ELEMENT AreaCode  (#PCDATA )>
<!ATTLIST AreaCode  name       CDATA    #IMPLIED
                    class      CDATA    #IMPLIED
                    id         ID       #IMPLIED
                    distribute  (external | internal | restricted )  'external'
                    e-dtype    NMTOKEN  #FIXED 'int' >
<!ELEMENT TelNumber  (#PCDATA )>
<!ATTLIST TelNumber  name       CDATA  #IMPLIED
                     class      CDATA  #IMPLIED
                     id         ID     #IMPLIED
                     distribute  (external | internal | restricted )  'external' >
<!ELEMENT Extension  (#PCDATA )>
<!ATTLIST Extension  name       CDATA    #IMPLIED
                     class      CDATA    #IMPLIED
                     id         ID       #IMPLIED
                     distribute  (external | internal | restricted )  'external'
                     e-dtype    NMTOKEN  #FIXED 'int' >
<!ELEMENT Voice  ( (IntlCode? , AreaCode? , TelNumber , Extension? ) )>
<!ATTLIST Voice  name       CDATA  #IMPLIED
                 class      CDATA  #IMPLIED
                 id         ID     #IMPLIED
                 distribute  (external | internal | restricted )  'external' >
<!ELEMENT Fax  ( (IntlCode? , AreaCode? , TelNumber , Extension? ) )>
<!ATTLIST Fax  name       CDATA  #IMPLIED
               class      CDATA  #IMPLIED
               id         ID     #IMPLIED
               distribute  (external | internal | restricted )  'external' >
<!ELEMENT Pager  ( (IntlCode? , AreaCode? , TelNumber , Extension? ) )>
<!ATTLIST Pager  name       CDATA  #IMPLIED
                 class      CDATA  #IMPLIED
                 id         ID     #IMPLIED
                 distribute  (external | internal | restricted )  'external' >
<!-- hr-addr.mod is module containing declarations
      for elements used to markup address information.

		-->
<!ELEMENT Location  (#PCDATA | Comment )*>
<!ATTLIST Location  name       CDATA  #IMPLIED
                    class      CDATA  #IMPLIED
                    id         ID     #IMPLIED
                    distribute  (external | internal | restricted )  'external' >
<!ELEMENT Address  (AddressLine+ , City ,  (State | Province ) , PostalCode , Country? )>
<!ATTLIST Address  name       CDATA  #IMPLIED
                   class      CDATA  #IMPLIED
                   id         ID     #IMPLIED
                   distribute  (external | internal | restricted )  'external' >
<!ELEMENT AddressLine  (#PCDATA )>
<!ATTLIST AddressLine  name       CDATA  #IMPLIED
                       class      CDATA  #IMPLIED
                       id         ID     #IMPLIED
                       distribute  (external | internal | restricted )  'external' >
<!ELEMENT City  (#PCDATA )>
<!ATTLIST City  name       CDATA  #IMPLIED
                class      CDATA  #IMPLIED
                id         ID     #IMPLIED
                distribute  (external | internal | restricted )  'external' >
<!ELEMENT State  (#PCDATA )>
<!ATTLIST State  name       CDATA  #IMPLIED
                 class      CDATA  #IMPLIED
                 id         ID     #IMPLIED
                 distribute  (external | internal | restricted )  'external' >
<!ELEMENT Province  (#PCDATA )>
<!ATTLIST Province  name       CDATA  #IMPLIED
                    class      CDATA  #IMPLIED
                    id         ID     #IMPLIED
                    distribute  (external | internal | restricted )  'external' >
<!ELEMENT PostalCode  (#PCDATA )>
<!ATTLIST PostalCode  name       CDATA  #IMPLIED
                      class      CDATA  #IMPLIED
                      id         ID     #IMPLIED
                      distribute  (external | internal | restricted )  'external' >
<!ELEMENT Country  (#PCDATA )>
<!ATTLIST Country  name       CDATA  #IMPLIED
                   class      CDATA  #IMPLIED
                   id         ID     #IMPLIED
                   distribute  (external | internal | restricted )  'external' >
<!ELEMENT JobPostingID  (#PCDATA )>
<!ATTLIST JobPostingID  idOwner     (HiringOrg | PrincipalOrg )  'HiringOrg'
                        name       CDATA  #IMPLIED
                        class      CDATA  #IMPLIED
                        id         ID     #IMPLIED
                        distribute  (external | internal | restricted )  'external' >
