정부전자문서 유통 표준(2014.11)

2019. 3. 4. 17:07스터디

행정기관간 문서유통을 위한 표준(안)


행정업무용 표준

eGOV-C01.005

                                 제정일  1999년 10월 15일

개정일  2010년  9월  3일

                                                           개정일  2014년 11월 25일







정부전자문서 유통 표준

<행정자치부 고시 제2014-1호, 2014.11.25>










2014. 11










행 정 자 치 부

목    차


Ⅰ. 일반사항

  1. 목적                                                                    1

 2. 적용범위                                                               1

 3. 근거 및 관련표준                                                     1

  4. 표준 관리 주체                                                        1

  5. 표준 관리 방안                                                        1

  6. 용어정의                                                               2

Ⅱ. 중계 전송용 통합파일 표준

  1. 전송용 통합파일 형식                                                 3

  2. 전송용 통합파일 표준 DTD                                          4

  3. 전송용 통합파일 헤더                                                9

  4. 전송용 통합파일 본문                                               10

    4.1 공문서 정의 DTD 구조 테이블                                  13

  5. 전송용 통합파일 명명                                               14

  6. XML DTD 유지 관리                                                15

Ⅲ. 정부전자문서유통지원센터 중계 구성

  1. 중계시스템 구성도                                                   16

  2. 중계시스템 기능                                                     16

    2.1 문서중계 처리과정                                               17

    2.2 송․수신 확인                                                    18

    2.3 전송용 통합파일의 보관 관리                                   18

    2.4 계정관리                                                          19

    2.5 장애감지 및 처리                                                 20

    2.6 통계관리                                                          20

  3. 전자문서시스템 기능                                                 21

    3.1 표준 송․수신 중계모듈 탑재                                   21

    3.2 수신처 지정 기능                                                 21

    3.3 전송용 통합파일 생성 시 유의사항                             22

    3.4 전자서명 적용 기능                                              22

    3.5 전자문서시스템 기능 분류표                                     23

Ⅳ. 기타                                                                  24


붙임 1. 전송용 통합파일 정의(pack.dtd)                                 25

붙임 2. 공문서 문서형 정의                                              26

붙임 3. 전자문서시스템의 정부디렉토리시스템 적용지침               43

붙임 4. 정부전자문서유통을 위한 전자서명 적용지침                   47

붙임 5. 전결의 대결 처리예제                                            51

Ⅰ. 일반사항

 

1. 목 적

  전자문서 유통에 의한 문서관리 체계의 정착을 위해 각 기관에서 사용하고 있는 서로 다른 전자문서시스템 간의 안정적인 문서유통이 가능하도록 필요한 기능 및 관련 표준들을 정의하는데 목적이 있다.


2. 적용범위

  본 표준은 정부전자문서유통지원센터(이하 “전자문서유통센터”라 한다)를 이용하는 기관 간 전자문서 유통 시 적용된다.


3. 근거 및 관련표준

  ○ 사무관리규정(대통령령 제22151호, 2010.5)

  ○ 사무관리규정 시행규칙(행정자치부령 제1호, 2014.11.25)

  ○ 전자정부법(법률 제10303호, 2010.5)

  ○ 전자정부법 시행령(대통령령 제22151호, 2010.5)

  ○ 행정기관의 전자문서시스템 규격(2014.11 개정)

  ○ 전자문서시스템과 행정정보시스템간 연계표준(2014.11 개정)

  ○ 업무관리시스템과 행정정보시스템간 문서관리카드 연계표준(2014.11 개정)

  ○ 행정기관의 업무관리시스템 규격(행정자치부 고시 2014-1호) 등


4. 표준 관리 주체

  본 표준은 행정자치부에서 유지․관리한다.


5. 표준 관리 방안

  본 표준을 적용하는데 있어 각종 행정업무의 변화, 관련 법령의 개정, 또는 기술의 발전 등에 의해 개정이 필요할 경우 개정 발의자는 행정안전부에 개정을 요청하고 이에 대해 행정안전부는 개정의 필요성과 타당성에 대해 전문기술지원기관 등으로 하여금 연구를 수행하게 하고, 개정(안)을 마련하여 관련 기관의 의견 수렴을 거쳐 개정․고시한다.



6. 용어정의

용 어

용어정의

전자문서

컴퓨터 등 정보처리능력을 가진 장치에 의하여 전자적인 형태로 작성, 송․수신 또는 저장된 문서

전자문서시스템

문서의 기안․ 검토․협조․결재․등록․시행․분류․편철․보관․보존․이관․접수․배부․공람․검색․활용 등 문서의 모든 처리절차가 전자적으로 처리되는 시스템

행정정보시스템

행정기관이 행정정보를 생산․수집․가공․저장․검색․제공․송신․수신 및 활용하기 위하여 하드웨어․소프트웨어․데이터베이스와 처리절차 등을 통합한 시스템

업무관리시스템

행정기관이 업무처리의 전 과정을 과제관리카드 및 문서관리카드 등을 이용하여 전자적으로 관리하는 시스템

문서처리과

문서 수신이 가능한 일반 처리과

중계본문

타 기관으로 발송되는 통합시행문 공문서 포맷을 전자문서시스템에서 XML 형태로 변환한 문서

행정전자서명

기안자·검토자·협조자·결재권자 또는 발신명의인의 신원과 전자문서의 변경여부를 확인할 수 있도록 당해 전자문서에 첨부되거나 논리적으로 결합된 전자적 형태의 정보로서 인증을 받은 것

전자이미지서명

기안자․검토자․협조자․결재권자 또는 발신명의인이 전자문서상에 전자적인 이미지 형태로 자기의 성명을 표시하는 것

전자이미지관인

관인의 인영을 컴퓨터 등 정보처리능력을 가진 장치에 전자적인 이미지 형태로 입력하여 사용하는 관인

전자문서 중계

기관 간의 공문서를 전자적으로 유통하는 것을 의미하며, 전자문서유통센터에서 운영하는 중계센터를 이용하는 형태의 전자문서 유통을 의미함

중계시스템

전자문서유통센터에서 기관 간 공문서 유통을 위해 운영하는 중계센터 및 각 기관에 배포ㆍ설치된 중계모듈을 통칭함

중계센터

전자문서유통센터에서 운영하는 중계서버에 탑재되어 전송된 공문서의 유통을 처리하는 시스템을 통칭함

중계모듈

각 기관의 전자문서시스템이 설치된 서버에 탑재되어 공문서 유통에 관련된 기능을 담당하는 daemon 프로그램

Ⅱ. 중계 전송용 통합파일 표준


1. 전송용 통합파일 형식

  중계센터를 이용하여 타 기관으로 발송되는 전송용 통합파일은 중계본문 및 붙임문서에 헤더정보가 Packing 된 형태이며, Packing 시기는 중계본문에 대한 XML검증이 적용 완료된 이후이다.

  ※ 행정전자서명(이하 ‘전자서명’이라 함)의 주요 기능은 전자서명 및 검증, 암․복호화, 본인확인, 시점확인 등이며, 전자서명의 적용을 위한 표준은 ‘행정기관 전자서명 인증기반(GPKI) 상호연동 기술표준’(행정자치부, 2001.3)을 적용한다.

  

       * 시행문 붙임문서(attach_body)는 시행문의 내용을 붙임으로 구성할 경우 포함됨

       * 중계에 사용되는 모든 파일은 확장자를 반드시 포함하여야 함.


  중계본문 및 붙임문서는 텍스트 형식으로 인코딩하여 전송용 통합파일에 포함하고, 수신처에서 이를 디코딩하여 사용하도록 하며, 인코딩 방식 표준으로는 Base64 인코딩 방식을 사용한다.

2. 전송용 통합파일 표준 DTD

  (1) Packing 파일 형태

     - 헤더정보 + 중계본문 + 전자이미지관인 + 붙임문서 등

     - 헤더정보 + 전자서명 및 암호화가 적용된 파일

     - 헤더정보 + 전자서명만 적용된 파일

 <!ELEMENT pack (header, contents)>

 <!ATTLIST pack filename CDATA #REQUIRED >

 

 <!ELEMENT header (send-orgcode, send-id, send-name, receive-id,

 date, title, doc-id, doc-type, send-gw, dtd-version, xsl-version)>

 <!ELEMENT send-orgcode (#PCDATA)>

 <!ELEMENT send-id (#PCDATA)>

 <!ELEMENT send-name (#PCDATA)>

 <!ELEMENT receive-id (#PCDATA)>

 <!ELEMENT date (#PCDATA)>

 <!ELEMENT title (#PCDATA)>

 <!ELEMENT doc-id (#PCDATA)>

 <!ELEMENT doc-type EMPTY>

 <!ATTLIST doc-type type (send|fail|arrive|receive| accept|return|resend| req-resend|normal-resend| distribute|request|redistribute|affair|charger|      transfer|via) #REQUIRED>

 <!ATTLIST doc-type dept CDATA #REQUIRED>

 <!ATTLIST doc-type name CDATA #REQUIRED>

 <!ELEMENT send-gw (#PCDATA)>

 <!ELEMENT dtd-version (#PCDATA)>

 <!ELEMENT xsl-version (#PCDATA)>

 <!ELEMENT contents (content)*>

 <!ELEMENT content (#PCDATA)>

 <!ATTLIST content content-role (pubdoc|attach|attach_body|seal|gpki|fail|sign|symbol|logo)

   #REQUIRED >

 <!ATTLIST content content-transfer-encoding      CDATA "base64" >

 <!ATTLIST content filename      CDATA #REQUIRED >

 <!ATTLIST content content-type  CDATA #REQUIRED >

 <!ATTLIST content charset  CDATA #REQUIRED >

  


    ※ base64로 Encoding 해야할 부분

       - header의 send-name, title, send-gw 의 내용(#PCDATA) 및

         doc-type의 어트리뷰트 dept, name의 내용(#PCDATA)

       - content의 내용(#PCDATA) 및 어트리뷰트 filename의 내용(#PCDATA)

    ※ base64로 Encoding할 경우에는 76자 단위로 인코딩함을 권고함.



  (2) 전송용 통합파일 개별 엘리먼트

엘리먼트

설   명

비고

속성사용 

pack

전송용 통합파일의 최상위 엘리먼트

필수

O

header

헤더정보를 포함하는 엘리먼트

필수

X

send-orgcode

송신기관의 기관코드(7자리)

필수

X

send-id

송신부서의 부서코드(7자리)

필수

X

send-name

송신기관의 기관명

필수

X

receive-id

수신부서의 부서코드(7자리)

필수

X

date

발송시간, 도달시간, 수신시간, 접수시간

재전송시간(YYYY-MM-DD hh:mm:ss)

필수

X

title

문서의 제목

필수

X

doc-id

문서 고유ID

필수

X

doc-type

문서 종류

(send, fail, arrive, receive, accept, req-resend, resend, normal-resend)

필수

O

send-gw

송신기관 그룹웨어 및 버전

필수

X

dtd-version

문서 XML 본문이 참조한 DTD 버전

필수

X

xsl-version

문서 XML 본문이 참조한 XSL 버전

필수

X

contents

중계본문을 포함하는 엘리먼트

필수

X

content

개별파일에 해당하는 엘리먼트로 예를 들면 붙임문서 하나는 하나의 content 엘리먼트로 표시된다.(중계본문 XML, 전자이미지관인, 전자이미지서명, 붙임문서 등)

선택

O





     - doc-type에 따른 전송용 통합파일 생성주체 및 시점


doc-type

생성주체

발생시점

send(발송) 

전자문서시스템

(송신)

- 전자문서시스템에서 최초 문서 발송 시 생성

fail(발송실패)

전자문서시스템

(수신)

- 수신기관의 전자문서시스템에 수신부서코드가 등록되어 있지 않은 경우

- 이미 접수 처리한 문서를 다시 수신한 경우

- 그 외 수신한 문서를 정상적으로 처리할 수 없는 경우 등

중계센터

- 중계센터에서 관련시스템 참조 중 오류가 발생한 경우

- 수신부서의 코드가 LDAP에 없는 경우

- 수신부서가 문서처리과가 아닌 경우

중계모듈(송신)

- 중계모듈에서 XML Parsing 오류가 발생한 경우

- 전자서명 및 암호화 과정에서 오류가 발생한 경우
-
암호화 후 전송용 통합파일의 크기제한을 초과한    경우

- 중계센터로 문서발송 과정에서 오류가 발생한 경우

중계모듈(수신)

- 복호화 및 전자서명 검증과정에서 오류가 발생한 경우

- 수신기관의 중계모듈에서 수신과정 중 오류가 발생한 경우

arrive(도달)

중계모듈(수신)

- 수신기관의 중계모듈이 전송용 통합파일을 임시수신함(receivetemp)에 저장한 후 생성

receive(수신) 

전자문서시스템

(수신)

- 수신기관의 전자문서시스템이 중계모듈의 임시수신함(receivetemp)에 수신된 문서를 가져가는 작업 완료 후 생성

accept(접수)

전자문서시스템

(수신)

- 수신기관의 문서담당자가 수신한 문서에 대한 접수 또는 배부처리 후 생성

- 수신기관에서 문서를 정상적으로 최초 확인 (접수 및 배부) 했음을 의미함

req-resend

(재발송요청)

전자문서시스템

(수신)

- 수신기관의 문서담당자가 특정 문서의 재발송이 필요한 경우 송신기관에 재발송 요청 시 생성

resend(재발송)

전자문서시스템

(송신)

- 송신기관의 문서담당자가 특정 문서에 대한 req-resend 문서를 수신했을 경우, 문서 재발송 시 생성

   - 업무관리시스템에서만 사용하는 전송용 통합파일 생성주체 및 시점

doc-type

생성주체

발생시점

distribute(배부) 

업무관리시스템 에서 생성되며,

업무관리시스템

간 유통에만

사용됨

- 문서 접수 후 실제 처리부서로 배부 시 발생

request

(재배부요청)

- 배부된 문서를 재배부할 필요가 있을 경우 발생

redistribute

(재배부)

- request에 따른 재배부 시 발생

affair

(업무관리자

문서처리)

- 업무관리자가 문서를 처리할 경우 발생

charger

(업무담당자

문서처리)

- 업무담당자가 문서를 처리할 경우 발생

transfer(이송)

- 접수한 문서를 타 기관으로 이송할 경우 발생

via(경유)

- 접수한 문서가 타 부서/기관으로 경유 처리되는 경우 발생

return(반송)

- 잘못 발송된 문서를 접수 후 원 발송기관으로 반송할 경우 발생

- return type은 기존 표준에도 정의되어 있었으나 실제로 사용되지 않았고, 업무관리시스템에서 재정의하여 사용함


     - fail(발송실패) 발생에 대한 오류 메시지 

fail 종류

기본 오류 메시지

 전자문서시스템에서 생성하는

 fail 문서

 각 오류에 해당하는 메시지 (특정한 형태 없음)

 중계센터에서 관련시스템 참조 중 오류가 발생한 경우

전송용 통합파일명 + “의 수신부서 코드 ” +

오류발생 수신부서코드 + “를 처리하는 중

 오류가 발생하였습니다 “ + 발생한 오류 내역

 수신부서의 코드가 LDAP에 없는 경우

전송용 통합파일명 + “의 수신부서 코드 ” +

오류발생 수신부서코드 + “를 LDAP에서 찾을

 수 없습니다“

 수신부서가 문서처리과가 아닌 경우

전송용 통합파일명 + “의 수신부서 코드 ” +

오류발생 수신부서코드 + “는 문서처리과가

 아닙니다.“

 중계모듈에서 XML Parsing 오류가 발생한 경우

전송용 통합파일명 + “에서 XML Validation

 오류가 발생하였습니다 ” + 발생한 오류 내역

전자서명 및 암호화 과정에서 오류가 발생한 경우

전송용 통합파일명 + 헤더정보 + 오류코드 +

 “에서 GPKI 암호화 오류가 발생하였습니다. (fail처리함)”

암호화 후 전송용 통합파일의 크기제한을 초과한 경우

전송용 통합파일명 + “의 크기가 제한크기

 이상입니다.“

중계센터로 문서발송 과정에서 오류가 발생한 경우

전송용 통합파일명 + 오류내용

복호화 및 전자서명 검증과정에서 오류가 발생한 경우

전송용 통합파일명 + “ 복호화 및 전자서명 검증에 실패하였습니다.“

 수신기관의 중계모듈에서 수신과정 중 오류가 발생한 경우

전송용 통합파일명 + 오류내용


     - Ack 정보 Content(붙임문서) 구성요소

Ack정보 종류

생성주체

Content 구성

arrive(도달) 

중계모듈

 별도의 붙임문서 없음

receive(수신) 

전자문서시스템

 별도의 붙임문서 없음

accept(접수) 

전자문서시스템

 별도의 붙임문서 없음

fail(발송실패) 

전자문서시스템

중계모듈

 발생한 오류에 대한 메시지를 return.txt 파일 형태로 기록함

req-resend

(재발송요청) 

전자문서시스템

 재발송 요청에 대한 이유를 return.txt 파일 형태로 기록함

 


  (3) 개별 어트리뷰트

어트리뷰트

상위 엘리먼트

내 용

필수여부

기본값

filename

pack

전송용 통합파일의 파일명

O

없음

type

doc-type

문서의 종류

O

없음

dept

doc-type

발송자 및 접수자의 부서명

O

없음

name

doc-type

발송자 및 접수자 성명

O

없음

content-role

content

content내용의 의미를 나타냄

O

없음

content-transefer-encoding

content

인코딩 방식

O

base64

filename

content

파일이름

O

없음

content-type

content

내용의 형식(MIME)

O

없음

charset

content

내용의 charset

O

없음

   ※ 발송실패, 수신에 대해서는 dept, name을 공백 처리할 수 있다


  (4) content-role의 값에 따른 content 의미

content-role 값

content 의미

 pubdoc

 발송문서(XML)

 attach

 일반 붙임문서

 attach_body

 본문부 붙임파일(표제부, 본문부 사용 서식일 경우,

 separate = true)

 seal

 전자이미지관인

 gpki

 전자서명이 적용된 암호화

 fail

 전자문서시스템․중계센터․중계모듈에서 발송실패 내용

 sign

 결재자, 협조자 전자이미지서명 파일

 symbol

 기관의 심볼 이미지파일

 logo

 기관의 로고 이미지파일


   ※ content-role 값이 sign일 경우 어트리뷰트 filename 값과 발송문서(xml) signimage의 img 어트리뷰트 src 값이 일치하여야 한다.

       (붙임2 공문서 문서형정의 참조)


      예) 어트리뷰트 filename 값이 “position1image.gif" 일 경우

           <signimage>

                <img src="position1image.gif" />

           </signimage>

   ※ content의 filename은 반드시 확장자를 포함한 전체 파일명을 base64로 인코딩한 값을 가져야 함.

   ※ content-role 값이 pubdoc인 경우에는 filename을 pubdoc.xml로 설정하고 base64로 인코딩하여 적용함.

      - content content-role="pubdoc" filename="cHViZG9jLnhtbA=="임.   


3. 전송용 통합파일 헤더

  중계센터를 이용하여 문서유통을 할 경우에, XML정의가 필요한 헤더정보는 송신기관, 수신기관 등의 송․수신 관련 정보이다.

  ○ send-orgcode(송신기관코드)

     정부디렉토리시스템에서 사용되는 기관코드(7자리)로서 송신기관을 위한 엘리먼트이다.

  ○ send-id(송신부서코드)

     정부디렉토리시스템에서 사용되는 부서코드(7자리)로서 송신부서를 위한 엘리먼트이다.

     ※ 행정표준코드가 아닌 부서코드를 사용하는 경우에는 송신부서코드에 송신기관의 행정표준코드를 사용한다.

  ○ send-name(송신기관명)

     송신기관의 기관명을 위한 엘리먼트이다.

     ※ 소속기관에서 문서를 발송하는 경우, send-name은 문서상의 발신기관장명, send-orgcode는 문서를 발신하는 담당자가 속한 기관코드를 입력함.

        즉, 발신기관장명이 상위기관장인 경우 send-name은 상위기관장명을 입력하고, send-orgcode는 해당기관(소속기관) 코드를 입력함.

  ○ receive-id(수신부서코드)

     정부디렉토리시스템을 이용해서 전자문서시스템에서 지정한 수신자(7자리 코드)를 위한 엘리먼트이다. 수신자가 다수일 경우에는 ‘;’ 구분자를 사용하여 수신자코드를 넣는다.(※ 수신자는 기관 또는 처리과임)

     ※ 동일 문서가 한 기관(시스템)의 2개 이상의 부서로 수신되는 경우, 수신시스템은 XML 파일 이름을 분석하여 문서를 처리하며, pack.dtd의 receive-id로 처리하지 않도록 함. 

  ○ date(날짜)

     전송용 통합파일을 발송할 때에는 발송시각, 도달할 때에는 도달시각, 수신할 때에는 수신시각, 접수할 때에는 접수시각을 위한 엘리먼트이다.        (YYYY-MM-DD hh:mm:ss)

  ○ title(문서제목)

     문서의 제목을 나타내는 엘리먼트이다.

  ○ doc-id(문서고유번호)

     문서의 고유번호를 위한 엘리먼트이다.

     송신기관의 전자문서시스템에서 생성되는 문서의 고유ID이다

  ○ doc-type(문서종류)

     문서종류를 나타내는 엘리먼트이다.

     "send" : 발송, "fail" : 발송실패, "arrive" : 도달, "receive" : 수신,

     "accept" : 접수, "req-resend" : 재발송요청, "resend" : 재발송

  ○ send-gw(송신기관 그룹웨어명 및 버전)

     송신기관의 그룹웨어명 및 버전을 위한 엘리먼트이다.

     업무관리시스템인 경우 ON-NARA BPS로 입력된다.

  ○ dtd-version(DTD 버전)

     문서 XML 본문이 참조한 DTD 버전을 위한 엘리먼트이다.

  ○ xsl-version(XSL 버전)

     문서 XML 본문이 참조한 XSL 버전을 위한 엘리먼트이다.


4. 전송용 통합파일 본문

   전송용 통합파일 본문내용은 두문, 본문, 결문, 붙임으로 구성된다.


  ◆ 두문

     ○ organ (기관명)

        기관명을 위한 엘리먼트이다. #PCDATA

     ○ recipient (수신자 및 참조)

        수신자 및 참조를 위한 엘리먼트이다.

        수신자 및 참조를 나타내는 <rec>로 구성된다.

     ○ via (경유)

        경유를 위한 엘리먼트이다. #PCDATA


  ◆ 본문

     사용서식(통합서식, 표제부․본문부 서식)을  나타내기 위한 separate 속성을 가지며, 값은 true와 false 중 선택하여야 하고, 기본값으로 false를 갖는다. true 값은 표제부․본문부 서식, false 값은 통합서식을 위한 값이다. 또한 true 값일 경우에는 본문내용(content)은 없다.

     ○ title (제목)

        문서제목을 위한 엘리먼트이다. #PCDATA

     ○ content (본문내용)

        본문을 위한 엘리먼트이다. 목록을 위한 <list>, 표를 위한 <table>,  글자의 속성을 나타내는 <b>, <i>, <u>, <sup>, <sub>, 문단을 위한 <p>로 구성된다.


  ◆ 결문

     ○ sendername (발신명의)

        발신명의를 위한 엘리먼트이다, #PCDATA

     ○ seal (전자이미지관인날인)

        전자이미지관인날인을 위한 엘리먼트이다. 기관의 전자이미지 관인이 들어가며, 이미지로 처리한다. 관인생략을 위한 omit 속성을 가지며, 값은 true와 false 중 선택하여야 하고, 기본값으로 관인을 생략하지 않는 false를 갖는다.

     ○ approval (결재자)

        결재자를 위한 엘리먼트이다. 결재자순위(1,2,3,...final)를 나타내는 <order>, 결재유형(기안,검토,결재,대결,전결)을 나타내는 <type>, 결재자 직위직급을 나타내는 <signposition>, 전자이미지서명을 나타내는 <signimage>, 문자서명을 나타내는<name>, 결재일자를 나타내는 <date> 와 결재시간을 나타내는 <time>으로 구성된다.

          ※ 전결의 대결처리 기능은 <붙임 5> 참조

     ○ assist (협조자)

        협조자를 위한 엘리먼트이다.

        <order> <type> <signposition> <signimage> <name> <date> <time>으로 구성된다.

      * 결재자와 협조자의 order 값은 결재자 순서와 협조자 순서가 독립적으로 부여되어야 한다

     ○ regnumber (등록번호)

        등록번호(생산부서명+“-”+일련번호)를 위한 엘리먼트이다.#PCDATA

        처리기관코드가 포함된 등록번호를 위한 속성 <regnumbercode>으로 구성된다. (처리기관코드7자리+일련번호)

     ○ enforcedate (시행일자)

        시행일자를 위한 엘리먼트이다. #PCDATA

     ○ receipt (접수)

        문서접수를 위한 엘리먼트이다. 접수일자를 위한 <date>, 접수시간을 위한 <time>, 접수번호를 위한 <number>등으로 구성된다.

     ○ zipcode (우편번호)

        우편번호를 위한 엘리먼트이다. #PCDATA

     ○ address (주소)

        주소를 위한 엘리먼트이다. #PCDATA

     ○ homeurl (홈페이지주소)

        홈페이지 주소를 위한 엘리먼트이다. #PCDATA

     ○ telephone (전화번호)

        전화번호를 위한 엘리먼트이다. #PCDATA

     ○ fax (전송)

        전송번호를 위한 엘리먼트이다. #PCDATA

     ○ email (담당자 E-mail)

        담당자 E-mail을 위한 엘리먼트이다. #PCDATA

     ○ publication (공개여부)

        공개여부를 위한 엘리먼트이다. #PCDATA

        내부 공개여부 코드를 위한 속성<code>으로 구성된다.

     ○ symbol (심볼)

        심볼 이미지를 나타내기 위한 엘리먼트이다. 이미지를 위한 <img> 엘리먼트로 구성된다.

     ○ logo (로고)

        로고 이미지를 나타내기 위한 엘리먼트이다. 이미지를 위한 <img> 엘리먼트로 구성된다.

      * symbol. logo 등에 사용되는 image의 크기를 반드시 정의함. (붙임 2, 30페이지 참조)

     ○ headcampaign (머리표제)

        종이문서상 문서의 상단에 위치한 표제를 위한 엘리먼트이다. #PCDATA

     ○ footcampaign (바닥표제)

        종이문서상 문서의 하단에 위치한 표제를 위한 엘리먼트이다. #PCDATA

  

  ◆ 붙임

     ○ attach (붙임)

        붙임을 위한 엘리먼트이다. 문서제목을 위한 <title>의 반복으로 구성된다.



4.1 공문서 정의 DTD 구조 테이블

엘리먼트명

횟수

설명

 pubdoc

 

1

루트

 

 head

1

두문

 

 

 organ

 

1

기관명

 

 

 receiptinfo

 

1

수신

 

 

 

receipient(re

fer)

1

수신 및 수신자참조

 

 

 

 

 rec

1

수신자 및 참조

 

 

 

 via

0..1

경유

 

 body(sep

ertate)

1

본문

 

 

 title

 

1

본문의 제목

 

 

 content

 

1

본문의 내용

 

 foot

1

결문

 

 

 sendername

 

1

발신명의

 

 

 seal(omit)

 

1

전자이미지관인 날인

 

 

 

 img

0..1

전자이미지 관인

 

 

 approvalinfo

 

1

결재선 정보

 

 

 

approval(ord

er)

1..n

기안,검토,최종결재자 정보

 

 

 

 

 signposition

1

결재 직위 직책

 

 

 

 

 type

1

결재유형

 

 

 

 

 signimage

0..1

결재자의 전자 이미지서명

 

 

 

 

 name

1

결재자의 문자 서명

 

 

 

 

 date

1

결재일자

 

 

 

 

 time

0..1

결재시간

 

 

 

assist(order)

 

0..n

협조자 정보

 

 

 

 

 signposition

1

결재 직위 직책

 

 

 

 

 type

1

결재유형

 

 

 

 

 signimage

0..1

결재자의 전자 이미지서명

 

 

 

 

 name

0..1

결재자의 문자 서명

 

 

 

 

 date

1

결재일자

 

 

 

 

 time

0..1

결재시간

 

 

 processinfo

 

1

문서 처리 정보

 

 

 

regnumber(r

egnumbercode)

1

문서의 생산등록번호

 

 

 

 enforcedate

 

1

시행일자

 

 

 

 receipt

 

0..1

문서의 접수정보

 

 

 

 

 number

1

문서의 접수등록번호

 

 

 

 

 date

1

문서의 접수일자

 

 

 

 

 time

0..1

문서의 접수시간

 

 

 sendinfo

 

1

발신 정보

 

 

 

 zipcode

 

1

우편번호

 

 

 

 address

 

1

주소

 

 

 

 homeurl

 

0..1

홈페이지 주소

 

 

 

 telephone

 

1

전화번호

 

 

 

 fax

 

1

모사전송번호

 

 

 

 email

 

0..1

전자우편 주소

 

 

 

 publication

(code)

1

공개구분

 

 

 

 symbol

 

0..1

심볼 이미지

 

 

 

 logo

 

0..1

로고 이미지

 

 

 campaign

 

0..1

캠페인

 

 

 

 headcampai

gn 

0..1

머리 캠페인

 

 

 

footcampai

gn 

0..1

꼬리 캠페인

 

 attach

0..1

붙임

 

 

 title

 

1..n

붙임 제목

  

   ○ 1   : 반드시 한번 사용(필수)  

   ○ 0..1 : 한번 사용하거나 사용하지 않아도 됨(선택)

   ○ 1..n : 반드시 한번이상 사용(필수)

   ○ 0..n : 사용하지 않아도 되나 횟수제한 없음(선택)



5. 전송용 통합파일 명명

   전송용 통합파일은 전자문서시스템의 지정된 폴더에 Packing된 형태로 저장된다. 이때 Packing된 문서는 지정된 폴더 내에서 다른 파일 이름과 중복되지 않는  유일한 이름으로 저장되어야 한다. 유일한 이름으로 파일 이름을 지정하기 위해 아래와 같은 파일 명명(Naming)규칙을 적용한다.


   <명명규칙>

              송신부서코드 + 수신부서코드 + 시간스탬프(YYYYMMDDhhmmss)

                 +  일련번호 + 확장자(.xml)



   예) 송신 : 1311337(행정자치부 협업행정과)

       수신 : 1570368(미래창조과학기술부 인터넷정책과)

       발송일자 : 2010년 7월 12일 오후 2시 30분 21초

        ⇒ 131133715703682010071214302101.xml


      * 수신부서가 다수일 경우 수신부서코드는 해당 수신부서들 중 첫 번째로 기록된 부서코드를 사용한다.

6. XML DTD 유지 관리

   XML DTD를 각 기관의 전자문서시스템에서 관리할 경우 XML 파싱관련 오류가 발생할 수 있으므로, 이를 방지하기 위하여 행정안전부에서는 XML DTD 변경절차를 통하여 확정된 DTD를 모든 전자문서시스템에서 공통적으로 반영할 수 있도록 통합 관리한다.

   이와 관련하여 XML DTD의 오류를 검증할 수 있는 XML Parser는 중계모듈에 탑재하여 행정안전부에서 제작 및 보급한다.


<XML DTD 변경절차>

   

Ⅲ. 정부전자문서유통지원센터 중계 구성


1. 중계시스템 구성도



2. 중계시스템 기능

  (1) 중계센터는 기관 간 전자문서 유통 및 송․수신 내역의 확인,  송․수신 가능 상태를 확인하는 기능 등을 수행한다.

○ 문서중계

○ 송․수신 확인

○ 전송용 통합파일의 로그 관리

○ 계정관리

○ 문서 유통현황 관리

○ 장애감지 및 처리

○ 통계관리

 

  (2) 중계모듈은 전송용 통합파일의 송․수신과 검증, 전자서명 및 검증, 암호화/복호화, 로그 기록, 오류 처리 등의 기능을 수행한다.

○ 전송용 통합파일 송․수신

○ 전송용 통합파일 검증

○ 전자서명 및 암호화

○ 복호화 및 전자서명 검증

○ 전자문서유통에 대한 로그 기록

○ 오류에 대한 처리



2.1 문서중계 처리과정

   중계센터를 통하여 기관 간 전자문서가 유통되는 과정은 다음과 같다.


   가. 송신기관의 전자문서시스템은 전송용 통합파일을 생성하고 중계모듈의 지정된 디렉토리(sendtemp)에 위치시킨다.

       가-1) 수신처가 업무관리시스템 사용기관일 경우 본문을 문서관리카드 형태를 생성하고, 표준 전자문서시스템 사용기관일 경우에는 통합시행문 형태로 생성한다.

       가-2) 수신처의 시스템 사용 정보는 정부디렉토리시스템(LDAP)의 문서유통정보에서 4번째 항목이 'B'로 입력된 경우는 업무관리시스템 사용기관이라고 판단한다.

       가-3) 업무관리시스템에서 생성된 문서는 헤더정보의 <send-gw> 항목이 ON-NARA BPS 로 입력되어야 한다.

   나. 송신기관의 중계모듈은 전송용 통합파일의 정합성 검증 및 컴퓨터용 인증서를 사용한 전자서명 및 암호화 후 중계센터로 전송한다.

   다. 전송용 통합파일의 송신과정에서 오류가 발생한 경우, 중계모듈은 fail 문서를 생성하여 임시수신함(receivetemp)에 기록하고, 오류가 발생하지 않은 경우 중계센터의 메시징 엔진은 전송된 전송용 통합파일을 수신하고 처리한다.

   라. 중계센터는 수신한 전송용 통합파일의 복호화 및 전자서명 검증작업을 수행하고, 전송용 통합파일 헤더정보의 송․수신 내역을 확인한 후 송․수신 내역을 로그에 기록․보관한다.

   마. 중계센터는 정부디렉토리시스템(LDAP)에서 수신처 정보를 확인하고 각 수신처 별로 전송용 통합파일의 전자서명 및 암호화 작업을 수행한 후 전송용 통합파일을 수신기관의 중계모듈로 전송한다. 이 때 수신처가 복수일 경우 각각의 수신처로 동보발송한다.

      마-1) 중계센터는 수신처 정보 확인 시 현재 처리중인 문서의 발신 시스템 정보와 수신처의 업무관리시스템 사용여부 정보를 조합하여 문서관리카드가 표준 전자문서시스템 사용기관으로 전송되지 못하도록 한다.

   바. 중계센터는 전송용 통합파일 처리과정에서 관련시스템 참조 중 오류가 발생한 경우 fail(발송실패) 문서를 생성하여 송신기관으로 전송하고, 오류가 발생하지 않은 경우 수신기관의 중계모듈에 전송용 통합파일을 전송한다. 수신기관 중계모듈은 수신된 전송용 통합파일에 복호화 및 전자서명 검증 등의 처리과정을 수행한 후 임시수신함(receivetemp)으로 가져가며, 이에 대한 arrive(도달) 문서를 생성하여 전송한다.

   사. 수신기관의 중계모듈은 전자문서시스템으로부터 receive(수신) 및 accept(접수) 문서를 받아 중계센터로 전송한다.

   아. 중계센터는 수신된 receive(수신) 및 accept(접수) 문서를 기록하고 송신기관의 중계모듈로 전송하며, 송신기관의 중계모듈은 수신한 문서를 전자문서시스템으로 전송한다.

   자. 수신기관의 문서담당자가 수신된 전자문서를 처리할 수 없을 경우,  req-resend(재발송요청) 문서를 생성하여 송신기관으로 전송하며,  req-resend 문서를 수신한 송신기관의 문서담당자는 resend(재발송) 문서를 생성하여 재전송한다.

   차. 업무관리시스템의 경우에는 접수처리(accept) 후 distribute(배부). request(재배부요청), redistribute(재배부요청), affair(업무관리자 문서처리), charger (업무담당자 문서처리), transfer(이송), via(경유), return(반송) 정보가 생성되어 유통처리될 수 있다.



2.2 송․수신 확인

   전송용 통합파일의 송․수신 확인을 위하여 다음과 같은 기준으로 송․수신 관련정보를 기록하고 관리한다.


   가. send(발송)는 송신기관의 전자문서시스템이 문서를 발송할 때를 기준으로 생성된다.

   나. arrive(도달)는 수신기관의 중계모듈이 전송용 통합파일을 수신하여 지정된 디렉토리(receivetemp)에 저장할 때를 기준으로 생성된다.

   다. receive(수신)지정된 디렉토리(receivetemp)에 있는 전송용 통합파일을 전자문서시스템이 가져갈 때를 기준으로 생성된다.

   라. accept(접수)는 수신기관의 문서담당자가 문서를 접수하는 시각을 기준으로 생성된다.

     라-1) 업무관리시스템의 경우, 문서접수(accept) 후 배부업무 수행 시 distribute(배부) 정보가 생성되며 배부된 문서에 대해 재배부요청 시 request, 재배부 시 redistribute 정보가 생성된다.

     라-2) 업무관리시스템의 경우, 배부된 문서의 업무담당자가 문서를 처리했을 경우 charger(업무담당자 문서처리), 업무관리자가 문서를 처리했을 경우 affair(업무관리자 문서처리) 정보가 생성된다.

     라-3) 업무관리시스템의 경우, 접수된 문서에 대해 transfer(이송), via(경유). return(반송) 업무를 진행하고 정보를 생성할 수 있다.

   마. req-resend(재발송요청)는 수신기관의 문서담당자가 문서의 접수를 정상적으로 수행할 수 없을 경우 재발송 요청 할 때를 기준으로 생성된다.

   바. resend(재발송)는 송신기관의 문서담당자가 재발송요청 받은 문서를 재발송할 때를 기준으로 생성된다.



2.3 전송용 통합파일의 보관 관리

   중계센터는 전송용 통합파일의 송․수신 내역을 기록, 관리함과 동시에 전송용 통합파일 자체를 배달증명에 필요한 증적관리기간(1년 이내) 동안 보관할 수 있다.



2.4 계정관리

   중계센터는 정부디렉토리시스템의 계정정보 관리 기능을 제공한다. 정부디렉토리시스템의 문서유통관련 계정정보는 다음과 같다.  


<정부디렉토리시스템 내의 계정정보>

구 분

설   명

대외문서 송신여부

○전자결재 대외문서 수신지정 시 수신기관(참조)여부를 설정하는 항목으로 최상위기관 또는 소속기관(관인을 소유하여 독자적 문서 송·수신이 가능한 기관)은 대외문서송신여부를 Yes로 설정하며, 실·본부 및 일반부서는 No로 설정

문서처리과 여부

○전자문서의 송·수신이 가능한 일반 처리과(문서 송․수신이 불가능한 관·본부 제외) 문서 송·수신이 가능한 소속기관 및 처리과는 모두 Yes로 설정

발신명의

○전자결재에서 수신 지정시에 수신(참조)자에 입력되는 값으로 일반처리과는 부서의 부서장명을 입력하며, 대외문서송신여부가 Yes인 기관 중에서 발신명의가 타시·도와 구별이 필요한 기관은 [해당기관명 + 부서장명]을 입력

공문서 수신메일

주소

○중앙행정기관 및 서울·경기·인천·강원·외부

   - center@gdocsj.korea.go.kr

○지방자치단체(서울·경기·인천·강원 제외)

   - center@gcc.korea.go.kr

문서유통 일반정보

(DocSystemInfo)

○전자문서유통에 필요한 일반정보

  - 기관서버 IP Address 또는 Domain정보

    (‘/’를 구분자로 하여 최대 3개까지 관리 가능)

  - 기관서버의 컴퓨터용 인증서 CN

  - 사용하는 센터의 지역정보

    (광주(S)/대전(D)/광주외부(T)/대전외부(X))

  - 중계모듈이 사용하는 프로토콜 정보

    (ebMS(E)/MQ(M)/ebMS & 업무관리시스템(B))

  - 인증서 사용에 대한 구분

    ㆍo=Public of Korea의 인증서정보 사용

      : PUB (일부 공공기관만 해당)

    ㆍ교육과학기술부에서 발급한 인증서 사용 : EDU



2.5 장애감지 및 처리

   ○ 중계센터는 모니터링 기능을 통하여 각 기관의 전자문서 송․수신 가능 여부를 확인할 수 있는 기능을 제공한다. 장애 발생 시에는 장애 관련 로그를 기록하고 기관 담당자에게 통보한다.

   ○ ebMS 기반의 중계모듈은 기관 담당자에게 다음과 같은 기능을 제공한다.

      - 송․수신 문서 이력 관리 기능

      - 장애가 발생한 문서에 대한 장애내역 조회 기능

      - 중계모듈의 상태 조회 및 제어(실행/중지) 기능

      


2.6 통계관리

   중계센터는 기관 간 문서유통현황 및 전자문서시스템의 장애현황을 체계적으로 관리하기 위하여 통계관리 기능을 제공한다.


   ※ 중계센터가 제공하는 통계정보의 예

     ○ 기관별/기간별 송수신 내역 현황

     ○ 기관별/기간별 문서 유통량

     ○ 기관별/기간별 장애 현황 및 이력

     ○ 기관별 송신대비 수신율



3. 전자문서시스템 기능


3.1 표준 송․수신 중계모듈 탑재

   각 기관의 전자문서시스템은 타 기관과의 문서유통을 위하여 행정안전부에서 제작하여 보급하는 표준 송·수신 중계모듈을 탑재하여야 한다. 표준 송·수신 중계모듈은 각 기관의 전자문서시스템과 중계센터를 연결하여 전자문서의 송ㆍ수신 기능을 수행한다.


3.2 수신처 지정 기능

   기관 간 전자문서 유통 시 전자문서시스템에서 수신기관의 정보를 지정하기 위하여 정부표준 LDAP API(행정자치부 제공) 또는 공개된 LDAP API를 이용하여 정부디렉토리시스템으로 직접 접근하여 실시간 조직정보를 가져온다.


<정부디렉토리시스템의 조직정보 이용처리 절차>


 ※ 전자문서시스템에서는 정부디렉토리시스템 접속 시 기존의 행정 디렉토리 (o=Government of Korea) 뿐 아니라 공공(o=Public of Korea)/민간 (o=Private of Korea) 디렉토리에도 접속 가능하도록 기능을 제공하여야 한다.

3.3 전송용 통합파일 생성 시 유의사항

   ○ 각 기관의 전자문서시스템에서는 전송용 통합파일의 DTD 정합성 검증을 수행하여 전송용 통합파일의 생성에 문제가 없는 지 확인하여야 한다.

   ○ 각 기관의 전자문서시스템이 중계모듈의 지정된 디렉토리에 전송용 통합파일을 기록할 때 파일의 기록이 종료된 후에 중계센터로 전송하기 위하여 임시 확장자(.tmp 등)로 기록하고, 기록이 종료된 후에 확장자를 .xml로 변경해 주어야한다. 또한 확장자의 변경이 제대로 이루어 졌는지 확인하여야 한다.



3.4 전자서명 적용 기능

   기관 간 전자문서 유통 시 전자서명을 적용하기 위해서는 ‘행정전자서명인증표준보안API’(행정자치부 제공)를 이용하며, 상세 사항은 ‘행정전자서명인증표준보안API사용지침(행정자치부, 2005.6.3)’을 따른다.

   또한 전자문서시스템에서는 전자서명만을 적용하거나, 문서의 보안 유지 등의 목적으로 암호화를 같이 적용하는 것에 대한 사용자의 선택 기능을 제공하여야 한다.

3.5 전자문서시스템 기능 분류표

기 능 별

세 부 기 능 항 목

구분

표준 송수신

중계모듈

 - 중계모듈 탑재

 - 중계모듈에서 지정한 특정위치로 문서 전달

 - 중계모듈에서 지정한 특정 위치로부터 문서를 수신

 - 중계센터로부터 송․수신 및 접수정보를 수신 후 해당 문서의 유통 상태 변경

 - 전자문서시스템에서 문서를 수신할 경우 수신문서를 생성하여 특정위치에 저장

 - 문서담당자가 문서를 접수할 경우 접수 문서를 생성하여 특정위치에 저장

필수

수신처

지정

- 정부표준 LDAP API 또는 공개된 LDAP API

 - 정부디렉토리시스템에서 분류된 행정/공공/민간 디렉토리에 모두 접근 가능하도록 구성하여야 함

   ① 행정 디렉토리 : o=Government of Korea, c=kr

   ② 공공 디렉토리 : o=Public of Korea, c=kr

   ③ 민간 디렉토리 : o=Private of Korea, c=kr

필수

전자서명

적용

 - 행정전자서명인증관리센터에서 제공하는 전자서명  기반의 API 적용

 - 전자서명 또는 전자서명과 암호화를 선택할 수 있는 기능

필수


Ⅳ. 기타

  ○ 전자문서유통센터를 이용하는 기관의 전자문서시스템은 사무관리규정 및 동 규정 시행규칙을 따라야 하며, 또한 본 표준과「행정기관의 전자문서시스템 규격」,「행정기관의 업무관리시스템 규격」을 준수해야 한다.

  ○ 비표준 전자문서시스템을 사용하는 기관의 경우, 정부전자문서유통지원센터와 협의하여 전자문서유통에 필요한 제반 기능을 구현 후 전자문서유통 테스트를 실시하여 이상이 없을 시 전자문서유통 서비스를 이용할 수 있다.


<붙임 1>

전송용 통합파일 정의 (pack.dtd, version : 1.0)

 <!--

 filename:         pack.dtd

  Typical usage:

          <?XML version="1.0" encoding="euc-kr" ?>

          <!DOCTYPE pack SYSTEM "pack.dtd">

          <pack> ... </pack>

 -->

 <!ELEMENT pack (header, contents)>

 <!ATTLIST pack filename CDATA #REQUIRED >


 <!ELEMENT header (send-orgcode, send-id, send-name, receive-id,

 date, title, doc-id, doc-type, send-gw, dtd-version, xsl-version)>

 <!ELEMENT send-orgcode (#PCDATA)>

 <!ELEMENT send-id (#PCDATA)>

 <!ELEMENT send-name (#PCDATA)>

 <!ELEMENT receive-id (#PCDATA)>

 <!ELEMENT date (#PCDATA)>

 <!ELEMENT title (#PCDATA)>

 <!ELEMENT doc-id (#PCDATA)>

 <!ELEMENT doc-type EMPTY>

 <!ATTLIST doc-type type (send|fail|arrive|receive|accept|return|resend|req-resend|normal-resend|  distribute|request|redistribute|affair|charger|transfer|via) #REQUIRED>

 <!ATTLIST doc-type dept CDATA #REQUIRED>

 <!ATTLIST doc-type name CDATA #REQUIRED>

 <!ELEMENT send-gw (#PCDATA)>

 <!ELEMENT dtd-version (#PCDATA)>

 <!ELEMENT xsl-version (#PCDATA)>

 <!ELEMENT contents (content)*>

 <!ELEMENT content (#PCDATA)>

 <!ATTLIST content content-role (pubdoc|attach|attach_body|seal|gpki|fail|sign|symbol|logo) #REQUIRED >

 <!ATTLIST content content-transfer-encoding      CDATA "base64" >

 <!ATTLIST content filename      CDATA #REQUIRED >

 <!ATTLIST content content-type  CDATA #REQUIRED >

 <!ATTLIST content charset  CDATA #REQUIRED >

<붙임 2>

공문서 문서형 정의

1. 일반 문서형 정의(pubdoc.dtd, version : 2.0)


<?xml version="1.0" encoding="euc-kr"?>

<!--

     대한민국 정부 공문서 문서형 정의


     This DTD module is identified by the PUBLIC and SYSTEM identifiers:


     PUBLIC "-//KORGOVERN//DTD PUBDOC 2.0//EN"

     SYSTEM "pubdoc.dtd"


-->

<!-- XHTML 1.0 for pubdoc -->

<!ENTITY % xhtml4pubdoc.mod PUBLIC "-//KORGOVERN//ENTITIES XHTML 1.0 for pubdoc//EN"

     "xhtml4pubdoc.mod">

%xhtml4pubdoc.mod;

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

<!--=====          공문서 공통 엘리먼트 집합 정의          =====-->

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

<!--  공통 엘리먼트 정의 -->

<!-- 번호 -->

<!ELEMENT number (#PCDATA)>

<!-- 시간 -->

<!ELEMENT time (#PCDATA)>

<!-- 날짜,일자,연도 -->

<!ELEMENT date (#PCDATA)>

<!-- 등록번호 -->

<!ELEMENT regnumber (#PCDATA)>

<!ATTLIST regnumber regnumbercode CDATA #REQUIRED>

<!-- 시행일자 -->

<!ELEMENT enforcedate (#PCDATA)>

<!-- 공개여부 -->

<!ELEMENT publication (#PCDATA)>

<!ATTLIST publication code CDATA #REQUIRED>

<!-- 제목 -->

<!ELEMENT title (#PCDATA)>

<!-- 머리표제 -->

<!ELEMENT headcampaign (#PCDATA)>

<!-- 바닥표제 -->

<!ELEMENT footcampaign (#PCDATA)>

<!-- 성명, 이름 -->

<!ELEMENT name (#PCDATA)>

<!-- 기관, 기관명 -->

<!ELEMENT organ (#PCDATA)>

<!-- 직위, 직급 -->

<!ELEMENT position (#PCDATA)>

<!-- 우편번호 -->

<!ELEMENT zipcode (#PCDATA)>

<!-- 주소 -->

<!ELEMENT address (#PCDATA)>

<!-- 전화번호 -->

<!ELEMENT telephone (#PCDATA)>

<!-- 전송 -->

<!ELEMENT fax (#PCDATA)>

<!-- 수신, 참조 -->

<!ELEMENT recipient (rec)>

<!-- 수신자 참조 -->

<!ATTLIST recipient

        refer (true | false) "false"

>

<!--  수신자 및 참조 -->

<!ELEMENT rec (#PCDATA)>

<!-- 경유 -->

<!ELEMENT via (#PCDATA)>

<!-- 발신명의 -->

<!ELEMENT sendername (#PCDATA)>

<!-- 결재 유형 -->

<!ELEMENT type (#PCDATA)>

<!-- 붙임 -->

<!ELEMENT attach (title)+>

<!-- 관인날인 -->

<!ELEMENT seal (img?)>

<!-- 관인생략 -->

<!ATTLIST seal

        omit (true | false) "false"

>

<!-- 본문 -->

<!ELEMENT content (%flow;)*>

<!-- 홈페이지주소 -->

<!ELEMENT homeurl (#PCDATA)>

<!-- 담당자 E-mail -->

<!ELEMENT email (#PCDATA)>

<!-- 결재자 -->

<!ELEMENT approval (signposition, type, signimage?, name, date, time?)>

<!-- 결재순서 -->

<!ATTLIST approval

        order CDATA #REQUIRED

>


<!-- 협조자 -->

<!ELEMENT assist (signposition, type, (signimage | name)?, date, time?)>

<!-- 협조순서 -->

<!ATTLIST assist

        order CDATA #REQUIRED

>

<!-- 결재자협조자 직위직급 -->

<!ELEMENT signposition (#PCDATA)>

<!-- 결재자협조자 이미지서명 -->

<!ELEMENT signimage (img)>

<!-- 기관의 심볼이미지 -->

<!ELEMENT symbol (img)>

<!-- 기관의 로고이미지 -->

<!ELEMENT logo (img)>

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

<!--=====              기안문(시행문 겸용)                   =====-->

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

<!-- 공문서 -->

<!ELEMENT pubdoc (head, body, foot, attach?)>

<!-- 두문 -->

<!ELEMENT head (organ, receiptinfo)>

<!-- 본문 -->

<!ELEMENT body (title, content)>

<!ATTLIST body

        separate (true | false) "false"

>

<!-- 결문 -->

<!ELEMENT foot (sendername, seal?, approvalinfo, processinfo, sendinfo, campaign?)>


<!-- 수신정보 -->

<!ELEMENT receiptinfo (recipient, via?)>

<!-- 결재정보 -->

<!ELEMENT approvalinfo (approval+, assist*)>

<!-- 처리정보 -->

<!ELEMENT processinfo (regnumber, enforcedate, receipt?)>

<!-- 발신정보 -->

<!ELEMENT sendinfo (zipcode, address, homeurl?, telephone, fax, email?, publication, symbol?, logo?)>

<!-- 접수정보 -->

<!ELEMENT receipt (number, date, time?)>

<!-- 캠페인정보-->

<!ELEMENT campaign (headcampaign?, footcampaign?)>





2. 공문서 본문구조 정의(xhtml4pubdoc.mod)


<?xml version="1.0" encoding="euc-kr"?>


<!ENTITY % HTMLlat1 PUBLIC

   "-//W3C//ENTITIES Latin 1 for XHTML//EN"

   "xhtml-lat1.ent">

%HTMLlat1;


<!ENTITY % HTMLsymbol PUBLIC

   "-//W3C//ENTITIES Symbols for XHTML//EN"

   "xhtml-symbol.ent">

%HTMLsymbol;


<!ENTITY % HTMLspecial PUBLIC

   "-//W3C//ENTITIES Special for XHTML//EN"

   "xhtml-special.ent">

%HTMLspecial;



<!ENTITY % coreattrs

 "id         ID             #IMPLIED

  class    CDATA     #IMPLIED"

  >


<!ENTITY % lists    "ul | ol">


<!ENTITY % inline  "#PCDATA | a | img | i | b | u | sub | sup">


<!ENTITY % block  "p | %lists; | table ">


<!ENTITY % flow    "%inline; | %block;">


<!ELEMENT sub   (%inline;)*>

<!ATTLIST sub      %coreattrs;>


<!ELEMENT sup   (%inline;)*>

<!ATTLIST sup     %coreattrs;>


<!ELEMENT i       (%inline;)*>

<!ATTLIST i         %coreattrs;>


<!ELEMENT b      (%inline;)*>

<!ATTLIST b        %coreattrs;>


<!ELEMENT u      (%inline;)*>

<!ATTLIST u        %coreattrs;>


<!ELEMENT p       (%flow;)*>

<!ATTLIST p

  %coreattrs;

  style     CDATA     #IMPLIED

  align (left|center|right|adjust) #IMPLIED

  >


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


<!-- Unordered list -->


<!ELEMENT ul (li)+>

<!ATTLIST ul

  %coreattrs;

  >


<!-- Ordered (numbered) list -->


<!ELEMENT ol (li)+>

<!ATTLIST ol

  %coreattrs;

  >


<!-- list item -->


<!ELEMENT li (%flow;)*>

<!ATTLIST li

  %coreattrs;

  >


<!--================== The Anchor Element ================================-->


<!ELEMENT a (#PCDATA | img | i | b | u | sub | sup)*>

<!ATTLIST a

  %coreattrs;

  name     CDATA            #IMPLIED

  href        CDATA            #IMPLIED

  rel          CDATA            #IMPLIED

  rev         CDATA            #IMPLIED

  >


<!--=================== Images ===========================================-->


<!ELEMENT img EMPTY>

<!ATTLIST img

  %coreattrs;

  src            CDATA       #REQUIRED

  alt             CDATA       #REQUIRED

  name        CDATA        #IMPLIED

  longdesc   CDATA        #IMPLIED

  height        CDATA       #IMPLIED

  width         CDATA       #IMPLIED

  align         (top|middle|bottom|left|right)     #IMPLIED

  border       CDATA       #IMPLIED

  hspace      CDATA       #IMPLIED

  vspace      CDATA       #IMPLIED

  >



<!--======================= Tables =======================================-->


<!ENTITY % cellhalign

  "align      (left|center|right|justify|char) #IMPLIED

   char       CDATA                                #IMPLIED

   charoff    CDATA                                #IMPLIED"

   >


<!ENTITY % cellvalign

  "valign     (top|middle|bottom|baseline) #IMPLIED"

  >


<!ELEMENT table       (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>

<!ELEMENT caption    (%inline;)*>

<!ELEMENT thead      (tr)+>

<!ELEMENT tfoot        (tr)+>

<!ELEMENT tbody      (tr)+>

<!ELEMENT colgroup  (col)*>

<!ELEMENT col          EMPTY>

<!ELEMENT tr            (th|td)+>

<!ELEMENT th           (%flow;)*>

<!ELEMENT td           (%flow;)*>


<!ATTLIST table

  %coreattrs;

  summary     CDATA                #IMPLIED

  width           CDATA                #IMPLIED

  height          CDATA                #IMPLIED

  border         CDATA                 #IMPLIED

  cellspacing  CDATA                 #IMPLIED

  cellpadding  CDATA                 #IMPLIED

  align           (left|center|right|adjust)   #IMPLIED

  >


<!ATTLIST caption

  %coreattrs;

  align           (top|bottom|left|right)       #IMPLIED

  >


<!ATTLIST colgroup

  %coreattrs;

  span           CDATA       "1"

  width           CDATA      #IMPLIED

  %cellhalign;

  %cellvalign;

  >


<!ATTLIST col

  %coreattrs;

  span           CDATA       "1"

  width           CDATA       #IMPLIED

  %cellhalign;

  %cellvalign;

  >

<!ATTLIST thead

  %coreattrs;

  %cellhalign;

  %cellvalign;

  >


<!ATTLIST tfoot

  %coreattrs;

  %cellhalign;

  %cellvalign;

  >


<!ATTLIST tbody

  %coreattrs;

  %cellhalign;

  %cellvalign;

  >


<!ATTLIST tr

  %coreattrs;

  %cellhalign;

  %cellvalign;

  >


<!ATTLIST th

  %coreattrs;

  abbr          CDATA                                  #IMPLIED

  axis          CDATA                                  #IMPLIED

  headers     IDREFS                                  #IMPLIED

  scope       (row|col|rowgroup|colgroup)   #IMPLIED

  rowspan    CDATA                                  "1"

  colspan     CDATA                                  "1"

  %cellhalign;

  %cellvalign;

  nowrap      (nowrap)                               #IMPLIED

  width         CDATA                                  #IMPLIED

  height        CDATA                                  #IMPLIED

  >


<!ATTLIST td

  %coreattrs;

  abbr           CDATA                                 #IMPLIED

  axis           CDATA                                  #IMPLIED

  headers      IDREFS                                 #IMPLIED

  scope        (row|col|rowgroup|colgroup)   #IMPLIED

  rowspan     CDATA                                  "1"

  colspan      CDATA                                  "1"

  %cellhalign;

  %cellvalign;

  nowrap       (nowrap)                               #IMPLIED

  width          CDATA                                  #IMPLIED

  height         CDATA                                  #IMPLIED

  >

<!--  End of Definition -->

3. 기안문/시행문을 위한 외형정보(siheng.xsl, version : 2.0)


<?xml version="1.0" encoding="euc-kr"?>


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

<!--          시행문         -->

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

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">    

<xsl:template match="/">

<DIV STYLE="width:175mm">

  <table width="100%" border="0" height="20">

    <tr>

      <td rowspan="2" width="10%">    <!-- sendinfo / logo -->

        <xsl:if test="pubdoc/foot/sendinfo/logo/img/@src[.!='']">

            <IMG>

              <xsl:attribute name="src"><xsl:value-of select="pubdoc/foot/sendinfo/logo/img/@src"/></xsl:attribute>

              <xsl:attribute name="alt"><xsl:value-of select="pubdoc/foot/sendinfo/logo/img/@alt"/></xsl:attribute>

              <xsl:attribute name="style">width:<xsl:value-of select="pubdoc/foot/sendinfo/logo/img/@width"/>;height:

              <xsl:value-of select="pubdoc/foot/sendinfo/logo/img/@height"/>;</xsl:attribute>

            </IMG>          

        </xsl:if> 

            

      </td>

      <td width="80%">      <!-- 머리 표제 -->

        <xsl:if test="pubdoc/foot/campaign/headcampaign[.!='']">

          <DIV STYLE="font-size:10pt; font-family:바탕체; width:100%; margin-bottom:2mm">

            <P ALIGN="CENTER"><xsl:value-of select="pubdoc/foot/campaign/headcampaign"/></P>

          </DIV>     

        </xsl:if>  

      </td>

      

        <td rowspan="2" width="10%">       <!-- symbol -->

          <xsl:if test="pubdoc/foot/sendinfo/symbol/img/@src[.!='']">

            <IMG>

               <xsl:attribute name="src"><xsl:value-of select="pubdoc/foot/sendinfo/symbol/img/@src"/></xsl:attribute>

               <xsl:attribute name="alt"><xsl:value-of select="pubdoc/foot/sendinfo/symbol/img/@alt"/></xsl:attribute>

               <xsl:attribute name="style">width:<xsl:value-of select="pubdoc/foot/sendinfo/symbol/img/@width"/>;height:

               <xsl:value-of select="pubdoc/foot/sendinfo/symbol/img/@height"/>;</xsl:attribute>

            </IMG>          

          </xsl:if>    

        </td>

    </tr>

    <tr><td>

      <!-- 행정 기관명 -->

      <DIV STYLE="font-size:20pt; font-family:바탕체; width:100%; margin-bottom:2mm">

        <P ALIGN="CENTER"><xsl:value-of select="pubdoc/head/organ"/></P>

      </DIV>

    </td></tr>

  </table>


  <!-- 수신 -->

  <table width="100%">

    <TR>

      <TD VALIGN="BOTTOM" align="left" WIDTH="60" STYLE="font-size:12pt; font-family:바탕체">수신자</TD>

      <TD VALIGN="BOTTOM" align="left" STYLE="font-size:12pt; font-family:바탕체">

         <xsl:choose>

            <xsl:when test="pubdoc/head/receiptinfo/recipient/@refer[.='false']">

               <xsl:value-of select="pubdoc/head/receiptinfo/recipient/rec"/>

            </xsl:when>

            <xsl:otherwise>

               수신자 참조

            </xsl:otherwise>

         </xsl:choose>

      </TD>

    </TR>

    <!-- 경유(via) -->

    <xsl:if test="pubdoc/head/receiptinfo/via[.!='']">

      <TR>

        <TD VALIGN="BOTTOM" align="left" WIDTH="60" STYLE="font-size:12pt; font-family:바탕체">(경유)</TD>

        <TD VALIGN="BOTTOM" align="left" STYLE="font-size:12pt; font-family:바탕체">

           <xsl:value-of select="pubdoc/head/receiptinfo/via"/>

        </TD>        

      </TR>

    </xsl:if>

    <!-- 제목(title) -->

      <TR>

        <TD VALIGN="BOTTOM" align="left" WIDTH="60" STYLE="font-size:12pt; font-family:바탕체">제<font color="white">--</font>목</TD>

        <TD  VALIGN="BOTTOM" align="left" STYLE="font-size:12pt; font-family:바탕체">

            <xsl:value-of select="pubdoc/body/title"/>

        </TD>

     </TR>

  </table>

  <HR width="100%" ></HR>

<!-- 본문 -->

<table border="0" width="100%" cellspacing="0" cellpadding="0">

    <tr><td height="450" valign="top" >

        <xsl:if test="pubdoc/body/@separate[.='true']">

            <center><br/><p STYLE="font-size:12pt; font-family:바탕체">(본문 내용) 본문부 참조</p></center>

        </xsl:if>

        <xsl:if test="pubdoc/body/@separate[.='false']">           

            <xsl:apply-templates select="pubdoc/body/content"/>

        </xsl:if>

        

    </td></tr>

</table>


<table width="100%">

    <tr><td width="28%" align="left" valign="top"></td>

    <td width="44%" valign="center" align="center" height="40">

      <!-- 발신명의 -->

        <DIV STYLE="font-size:20pt; font-family:바탕체;">

            <xsl:value-of select="pubdoc/foot/sendername"/>

        </DIV>

    </td>

    <td width="28%" align="left" valign="top">

    <!-- seal -->

        <xsl:if test="pubdoc/foot/seal/@omit[.='true']">

          <DIV STYLE="font-size:12pt; font-family:바탕체; width:100%; margin-bottom:2mm" ALIGN="CENTER">

            <P STYLE="border:1px solid black; padding:1pt 1pt 1pt 1pt;width:40mm" ALIGN="CENTER" VALIGN="MIDDLE">관 인  생 략</P>

          </DIV>

        </xsl:if>

        <xsl:if test="pubdoc/foot/seal/@omit[.='false']">

          <IMG>

             <xsl:attribute name="src"><xsl:value-of select="pubdoc/foot/seal/img/@src"/></xsl:attribute>

             <xsl:attribute name="alt"><xsl:value-of select="pubdoc/foot/seal/img/@alt"/></xsl:attribute>

             <xsl:attribute name="style">width:<xsl:value-of select="pubdoc/foot/seal/img/@width"/>;height:

             <xsl:value-of select="pubdoc/foot/seal/img/@height"/>;</xsl:attribute>

          </IMG>          

        </xsl:if> 

    </td></tr>

    <tr>

        <td VALIGN="middle" align="left" colspan="3" STYLE="font-size:12pt; font-family:바탕체">

            <xsl:if  test="pubdoc/head/receiptinfo/recipient/@refer[.='true']">

                수신자: <xsl:value-of select="pubdoc/head/receiptinfo/recipient/rec"/>

            </xsl:if>      

        </td>

    </tr>              

</table>


<TABLE width="100%">

    <TR>

        <TD colspan="2"><HR noshade="noshade" size="4"></HR></TD>  

    </TR>

    <TR><td colspan="2">

    <!-- 결재 정보 -->

    <xsl:for-each select="pubdoc/foot/approvalinfo/approval">

      <xsl:choose>

      <xsl:when test="@order[.='1']">

      <xsl:value-of select="signposition"/>

      <xsl:text disable-output-escaping="yes"> </xsl:text>

      <xsl:choose>

      <xsl:when test="signimage/img/@src[.!='']">

        <IMG>

           <xsl:attribute name="src"><xsl:value-of select="signimage/img/@src"/></xsl:attribute>

           <xsl:attribute name="alt"><xsl:value-of select="signimage/img/@alt"/></xsl:attribute>

           <xsl:attribute name="style">width:<xsl:value-of select="signimage/img/@width"/>;height:

           <xsl:value-of select="signimage/img/@height"/>;</xsl:attribute>

        </IMG>

        <xsl:text disable-output-escaping="yes"> </xsl:text>

      </xsl:when>

      <xsl:otherwise>

        <xsl:value-of select="name"/>

        <xsl:text disable-output-escaping="yes"> </xsl:text>

      </xsl:otherwise>

    </xsl:choose>

    </xsl:when>

                

    <xsl:when test="@order[.='final']">

      <xsl:value-of select="signposition"/>

      <xsl:text disable-output-escaping="yes"> </xsl:text>

      <xsl:if test="type[.='대결']">

        <b><xsl:value-of select="type"/></b>

        <xsl:text disable-output-escaping="yes"> </xsl:text>

      </xsl:if>

      <xsl:if test="type[.='전결']">

        <b><xsl:value-of select="type"/></b>

        <xsl:text disable-output-escaping="yes"> </xsl:text>

      </xsl:if>                          

      <xsl:if test="@opinion[.='yes']">

        의견붙임<xsl:text disable-output-escaping="yes"> </xsl:text>

      </xsl:if>

      <xsl:choose>

        <xsl:when test="signimage/img/@src[.!='']">

          <IMG>

            <xsl:attribute name="src"><xsl:value-of select="signimage/img/@src"/></xsl:attribute>

            <xsl:attribute name="alt"><xsl:value-of select="signimage/img/@alt"/></xsl:attribute>

            <xsl:attribute name="style">width:<xsl:value-of select="signimage/img/@width"/>;height:

            <xsl:value-of select="signimage/img/@height"/>;</xsl:attribute>

          </IMG>

          <xsl:text disable-output-escaping="yes"> </xsl:text>

        </xsl:when>

        <xsl:otherwise>

          <xsl:value-of select="name"/>

          <xsl:text disable-output-escaping="yes"> </xsl:text>

        </xsl:otherwise>

      </xsl:choose>

    </xsl:when>                


    <xsl:when test="@order[.='4']">

      <xsl:value-of select="signposition"/>

      <xsl:text disable-output-escaping="yes"> </xsl:text>

      <xsl:if test="type[.='대결']">

        <b><xsl:value-of select="type"/></b>

        <xsl:text disable-output-escaping="yes"> </xsl:text>

      </xsl:if>

      <xsl:if test="type[.='전결']">

        <b><xsl:value-of select="type"/></b>

        <xsl:text disable-output-escaping="yes"> </xsl:text>

      </xsl:if>                      

      <xsl:if test="@opinion[.='yes']">

        의견붙임<xsl:text disable-output-escaping="yes"> </xsl:text>

      </xsl:if> 

      <xsl:choose>

        <xsl:when test="signimage/img/@src[.!='']">

          <IMG>

            <xsl:attribute name="src"><xsl:value-of select="signimage/img/@src"/></xsl:attribute>

            <xsl:attribute name="alt"><xsl:value-of select="signimage/img/@alt"/></xsl:attribute>

            <xsl:attribute name="style">width:<xsl:value-of select="signimage/img/@width"/>;height:

            <xsl:value-of select="signimage/img/@height"/>;</xsl:attribute>

          </IMG>

          <xsl:text disable-output-escaping="yes"> </xsl:text>

        </xsl:when>

        <xsl:otherwise>

          <xsl:value-of select="name"/>

          <xsl:text disable-output-escaping="yes"> </xsl:text>

        </xsl:otherwise>

      </xsl:choose>

      <br/>

    </xsl:when>


    <xsl:when test="@order[.='8']">

      <xsl:value-of select="signposition"/>

      <xsl:text disable-output-escaping="yes"> </xsl:text>

      <xsl:if test="type[.='대결']">

        <b><xsl:value-of select="type"/></b>

        <xsl:text disable-output-escaping="yes"> </xsl:text>

      </xsl:if>

      <xsl:if test="type[.='전결']">

        <b><xsl:value-of select="type"/></b>

        <xsl:text disable-output-escaping="yes"> </xsl:text>

      </xsl:if>                      

      <xsl:if test="@opinion[.='yes']">

        의견붙임<xsl:text disable-output-escaping="yes"> </xsl:text>

      </xsl:if> 

      <xsl:choose>

        <xsl:when test="signimage/img/@src[.!='']">

          <IMG>

            <xsl:attribute name="src"><xsl:value-of select="signimage/img/@src"/></xsl:attribute>

            <xsl:attribute name="alt"><xsl:value-of select="signimage/img/@alt"/></xsl:attribute>

            <xsl:attribute name="style">width:<xsl:value-of select="signimage/img/@width"/>;height:

            <xsl:value-of select="signimage/img/@height"/>;</xsl:attribute>

          </IMG>

          <xsl:text disable-output-escaping="yes"> </xsl:text>

        </xsl:when>

        <xsl:otherwise>

          <xsl:value-of select="name"/>

          <xsl:text disable-output-escaping="yes"> </xsl:text>

        </xsl:otherwise>

      </xsl:choose>

      <br/>

    </xsl:when>

                

    <xsl:otherwise>                

      <xsl:value-of select="signposition"/>

      <xsl:text disable-output-escaping="yes"> </xsl:text>

      <xsl:if test="type[.='대결']">

        <b><xsl:value-of select="type"/></b>

        <xsl:text disable-output-escaping="yes"> </xsl:text>

      </xsl:if>

      <xsl:if test="type[.='전결']">

        <b><xsl:value-of select="type"/></b>

        <xsl:text disable-output-escaping="yes"> </xsl:text>

      </xsl:if>                      

      <xsl:if test="@opinion[.='yes']">

        의견붙임<xsl:text disable-output-escaping="yes"> </xsl:text>

      </xsl:if> 

      <xsl:choose>

        <xsl:when test="signimage/img/@src[.!='']">

          <IMG>

            <xsl:attribute name="src"><xsl:value-of select="signimage/img/@src"/></xsl:attribute>

            <xsl:attribute name="alt"><xsl:value-of select="signimage/img/@alt"/></xsl:attribute>

            <xsl:attribute name="style">width:<xsl:value-of select="signimage/img/@width"/>;height:

            <xsl:value-of select="signimage/img/@height"/>;</xsl:attribute>

          </IMG>

          <xsl:text disable-output-escaping="yes"> </xsl:text>

        </xsl:when>

        <xsl:otherwise>

          <xsl:value-of select="name"/>

          <xsl:text disable-output-escaping="yes"> </xsl:text>

        </xsl:otherwise>

      </xsl:choose>

    </xsl:otherwise>

                                    

    </xsl:choose>

    </xsl:for-each>

        

  </td></TR>

<!--  결재 정보 끝 -->

    <TR>

      <TD colspan="2">협조자

        <xsl:for-each select="pubdoc/foot/approvalinfo/assist">

          <xsl:value-of select="signposition"/>

          <xsl:text disable-output-escaping="yes"> </xsl:text>

          <xsl:choose>

          <xsl:when test="signimage/img/@src[.!='']">

            <IMG>

              <xsl:attribute name="src"><xsl:value-of select="signimage/img/@src"/></xsl:attribute>

              <xsl:attribute name="alt"><xsl:value-of select="signimage/img/@alt"/></xsl:attribute>

              <xsl:attribute name="style">width:<xsl:value-of select="signimage/img/@width"/>;height:

              <xsl:value-of select="signimage/img/@height"/>;</xsl:attribute>

            </IMG>

          </xsl:when>

          <xsl:otherwise>

            <xsl:value-of select="name"/>

          </xsl:otherwise>

          </xsl:choose>

        </xsl:for-each>

      </TD>

    </TR>

    <TR>

      <TD>시행 

        <xsl:value-of select="pubdoc/foot/processinfo/regnumber"/>

          (<xsl:value-of select="pubdoc/foot/processinfo/enforcedate"/>)</TD>

      <TD>

      <!-- 접수정보 -->

        <xsl:if test="pubdoc/foot/processinfo/receipt[.!='']">

          접수 <xsl:value-of select="pubdoc/foot/processinfo/receipt/number"/>   

          (<xsl:value-of select="pubdoc/foot/processinfo/receipt/date"/>)

        </xsl:if>           

      </TD>

    </TR>

    <TR>

      <TD colspan="2">우

        <xsl:value-of select="pubdoc/foot/sendinfo/zipcode"/>

        <xsl:value-of select="pubdoc/foot/sendinfo/address"/>

        / <xsl:value-of select="pubdoc/foot/sendinfo/homeurl"/></TD>

    </TR>

    <TR>

      <TD colspan="2">전화 <xsl:value-of select="pubdoc/foot/sendinfo/telephone"/>

      <font color="white">--</font>전송 <xsl:value-of select="pubdoc/foot/sendinfo/fax"/>

      / <xsl:value-of select="pubdoc/foot/sendinfo/email"/>

      / <xsl:value-of select="pubdoc/foot/sendinfo/publication"/></TD>

    </TR>

    

</TABLE>

<BR/>


<table width="100%"><tr><td>

  <!-- 꼬리 표제 -->

  <xsl:if test="pubdoc/foot/campaign/footcampaign[.!='']">

    <DIV STYLE="font-size:10pt; font-family:바탕체; width:100%; margin-bottom:2mm">

      <P ALIGN="CENTER"><xsl:value-of select="pubdoc/foot/campaign/footcampaign"/></P>

    </DIV>

  </xsl:if>

</td></tr></table>

</DIV>

</xsl:template>


  


  <!-- pubdoc Body -->

  <xsl:template match="pubdoc/body/content">

     <DIV STYLE="padding-top:20px; margin-bottom:2em; color:black; width:100%;">

      <xsl:apply-templates/>

     </DIV>

  </xsl:template>

  

  <xsl:template match="p">

    <P>

      <xsl:attribute name="id"><xsl:value-of select="./@id"/></xsl:attribute>

      <xsl:attribute name="class"><xsl:value-of select="./@class"/></xsl:attribute>

      <xsl:attribute name="align"><xsl:value-of select="./@align"/></xsl:attribute>

      <xsl:attribute name="style">margin:0cm;<xsl:value-of select="./@style"/></xsl:attribute>

      <xsl:apply-templates/>

    </P>

  </xsl:template>


  <xsl:template match="b">

    <B>

      <xsl:attribute name="id"><xsl:value-of select="./@id"/></xsl:attribute>

      <xsl:attribute name="class"><xsl:value-of select="./@class"/></xsl:attribute>     

      <xsl:apply-templates/>

    </B>

  </xsl:template>


  

  <xsl:template match="i">

    <I>

      <xsl:attribute name="id"><xsl:value-of select="./@id"/></xsl:attribute>

      <xsl:attribute name="class"><xsl:value-of select="./@class"/></xsl:attribute>     

      <xsl:apply-templates/>

    </I>

  </xsl:template>

  

  <xsl:template match="u">

    <U>

      <xsl:attribute name="id"><xsl:value-of select="./@id"/></xsl:attribute>

      <xsl:attribute name="class"><xsl:value-of select="./@class"/></xsl:attribute>     

      <xsl:apply-templates/>

    </U>

  </xsl:template>



  <xsl:template match="sub">

    <SUB>

      <xsl:attribute name="id"><xsl:value-of select="./@id"/></xsl:attribute>

      <xsl:attribute name="class"><xsl:value-of select="./@class"/></xsl:attribute>         

      <xsl:apply-templates/>

    </SUB>

  </xsl:template>

  


  <xsl:template match="sup">

    <SUP>

      <xsl:apply-templates/>

    </SUP>

  </xsl:template>

  

  <xsl:template match="ol">

    <DIV STYLE="font-size:14pt; font-family:바탕체">

      <OL>

        <xsl:attribute name="id"><xsl:value-of select="./@id"/></xsl:attribute>

        <xsl:attribute name="class"><xsl:value-of select="./@class"/></xsl:attribute>

        <xsl:for-each select="li">

          <LI>

            <xsl:attribute name="id"><xsl:value-of select="./@id"/></xsl:attribute>

            <xsl:attribute name="class"><xsl:value-of select="./@class"/></xsl:attribute>     

            <xsl:apply-templates/>

          </LI>

        </xsl:for-each>

      </OL>

    </DIV>

  </xsl:template>


  <xsl:template match="ul">

    <DIV STYLE="font-size:14pt; font-family:바탕체">

      <UL>

        <xsl:attribute name="id"><xsl:value-of select="./@id"/></xsl:attribute>

        <xsl:attribute name="class"><xsl:value-of select="./@class"/></xsl:attribute>

        <xsl:for-each select="li">

          <LI>

            <xsl:attribute name="id"><xsl:value-of select="./@id"/></xsl:attribute>

            <xsl:attribute name="class"><xsl:value-of select="./@class"/></xsl:attribute>     

            <xsl:apply-templates/>

          </LI>

        </xsl:for-each>

      </UL>

    </DIV>

  </xsl:template>


  <!-- Image -->

  <xsl:template match="img">

    <DIV STYLE="margin-top:1em; margin-bottom:1em;">

        <IMG>

         <xsl:attribute name="id"><xsl:value-of select="./@id"/></xsl:attribute>

         <xsl:attribute name="class"><xsl:value-of select="./@class"/></xsl:attribute>     

          <xsl:attribute name="src"><xsl:value-of select="./@src"/></xsl:attribute>

          <xsl:attribute name="alt"><xsl:value-of select="./@alt"/></xsl:attribute>

          <xsl:attribute name="name"><xsl:value-of select="./@name"/></xsl:attribute>

          <xsl:attribute name="longdesc"><xsl:value-of select="./@longdesc"/></xsl:attribute>

          <xsl:attribute name="style">width:<xsl:value-of select="./@width"/>;height:<xsl:value-of select="./@height"/>;</xsl:attribute>

          <xsl:attribute name="align"><xsl:value-of select="./@align"/></xsl:attribute>

          <xsl:attribute name="border"><xsl:value-of select="./@border"/></xsl:attribute>

          <xsl:attribute name="hspace"><xsl:value-of select="./@hspace"/></xsl:attribute>

          <xsl:attribute name="vspace"><xsl:value-of select="./@vspace"/></xsl:attribute>

        </IMG>

    </DIV>

  </xsl:template>


  <!-- HTML Table -->

  <xsl:template match="table">

    <TABLE>

      <xsl:attribute name="style">width:<xsl:value-of select="./@width"/>;height:<xsl:value-of select="./@height"/>;margin-top:1em; margin-bottom:1em; color:black; font-size:14pt; font-family:바탕체;</xsl:attribute>

      <xsl:attribute name="id"><xsl:value-of select="./@id"/></xsl:attribute>

      <xsl:attribute name="class"><xsl:value-of select="./@class"/></xsl:attribute>

      <xsl:attribute name="summary"><xsl:value-of select="./@summary"/></xsl:attribute>

      <xsl:attribute name="border"><xsl:value-of select="./@border"/></xsl:attribute>

      <xsl:attribute name="cellspacing"><xsl:value-of select="./@cellspacing"/></xsl:attribute>

      <xsl:attribute name="cellpadding"><xsl:value-of select="./@cellpadding"/></xsl:attribute>

      <xsl:attribute name="align"><xsl:value-of select="./@align"/></xsl:attribute>

      <xsl:for-each select="caption">

        <CAPTION>

          <xsl:attribute name="id"><xsl:value-of select="./@id"/></xsl:attribute>

          <xsl:attribute name="class"><xsl:value-of select="./@class"/></xsl:attribute>

          <xsl:apply-templates/>

        </CAPTION>

      </xsl:for-each>

      <xsl:for-each select="col">

        <COL>

          <xsl:attribute name="style">width:<xsl:value-of select="./@width"/>;</xsl:attribute>

          <xsl:attribute name="id"><xsl:value-of select="./@id"/></xsl:attribute>

          <xsl:attribute name="class"><xsl:value-of select="./@class"/></xsl:attribute>

          <xsl:attribute name="span"><xsl:value-of select="./@span"/></xsl:attribute>

          <xsl:attribute name="align"><xsl:value-of select="./@align"/></xsl:attribute>

          <xsl:attribute name="char"><xsl:value-of select="./@char"/></xsl:attribute>

          <xsl:attribute name="charoff"><xsl:value-of select="./@charoff"/></xsl:attribute>

          <xsl:attribute name="valign"><xsl:value-of select="./@valign"/></xsl:attribute>

        </COL>

      </xsl:for-each>

      <xsl:for-each select="colgroup">

        <COLGROUP>

          <xsl:attribute name="style">width:<xsl:value-of select="./@width"/>;</xsl:attribute>

          <xsl:attribute name="id"><xsl:value-of select="./@id"/></xsl:attribute>

          <xsl:attribute name="class"><xsl:value-of select="./@class"/></xsl:attribute>

          <xsl:attribute name="span"><xsl:value-of select="./@span"/></xsl:attribute>

          <xsl:attribute name="align"><xsl:value-of select="./@align"/></xsl:attribute>

          <xsl:attribute name="char"><xsl:value-of select="./@char"/></xsl:attribute>

          <xsl:attribute name="charoff"><xsl:value-of select="./@charoff"/></xsl:attribute>

          <xsl:attribute name="valign"><xsl:value-of select="./@valign"/></xsl:attribute>

        </COLGROUP>

      </xsl:for-each>

      <xsl:for-each select="thead">

        <THEAD>

          <xsl:attribute name="id"><xsl:value-of select="./@id"/></xsl:attribute>

          <xsl:attribute name="class"><xsl:value-of select="./@class"/></xsl:attribute>

          <xsl:attribute name="align"><xsl:value-of select="./@align"/></xsl:attribute>

          <xsl:attribute name="char"><xsl:value-of select="./@char"/></xsl:attribute>

          <xsl:attribute name="charoff"><xsl:value-of select="./@charoff"/></xsl:attribute>

          <xsl:attribute name="valign"><xsl:value-of select="./@valign"/></xsl:attribute>

          <xsl:for-each select="tr">

            <TR>

              <xsl:attribute name="id"><xsl:value-of select="./@id"/></xsl:attribute>

              <xsl:attribute name="class"><xsl:value-of select="./@class"/></xsl:attribute>

              <xsl:attribute name="align"><xsl:value-of select="./@align"/></xsl:attribute>

              <xsl:attribute name="char"><xsl:value-of select="./@char"/></xsl:attribute>

              <xsl:attribute name="charoff"><xsl:value-of select="./@charoff"/></xsl:attribute>

              <xsl:attribute name="valign"><xsl:value-of select="./@valign"/></xsl:attribute>

                       

              <xsl:apply-templates/>

              

            </TR>

          </xsl:for-each>

        </THEAD>

      </xsl:for-each>

      <xsl:for-each select="tfoot">

        <TFOOT>

          <xsl:attribute name="id"><xsl:value-of select="./@id"/></xsl:attribute>

          <xsl:attribute name="class"><xsl:value-of select="./@class"/></xsl:attribute>

          <xsl:attribute name="align"><xsl:value-of select="./@align"/></xsl:attribute>

          <xsl:attribute name="char"><xsl:value-of select="./@char"/></xsl:attribute>

          <xsl:attribute name="charoff"><xsl:value-of select="./@charoff"/></xsl:attribute>

          <xsl:attribute name="valign"><xsl:value-of select="./@valign"/></xsl:attribute>

          <xsl:for-each select="tr">

            <TR>

              <xsl:attribute name="id"><xsl:value-of select="./@id"/></xsl:attribute>

              <xsl:attribute name="class"><xsl:value-of select="./@class"/></xsl:attribute>

              <xsl:attribute name="align"><xsl:value-of select="./@align"/></xsl:attribute>

              <xsl:attribute name="char"><xsl:value-of select="./@char"/></xsl:attribute>

              <xsl:attribute name="charoff"><xsl:value-of select="./@charoff"/></xsl:attribute>

              <xsl:attribute name="valign"><xsl:value-of select="./@valign"/></xsl:attribute>

              

              <xsl:apply-templates/>

              

            </TR>

          </xsl:for-each>

        </TFOOT>

      </xsl:for-each>

      <xsl:for-each select="tbody">

        <TBODY>

          <xsl:attribute name="id"><xsl:value-of select="./@id"/></xsl:attribute>

          <xsl:attribute name="class"><xsl:value-of select="./@class"/></xsl:attribute>

          <xsl:attribute name="align"><xsl:value-of select="./@align"/></xsl:attribute>

          <xsl:attribute name="char"><xsl:value-of select="./@char"/></xsl:attribute>

          <xsl:attribute name="charoff"><xsl:value-of select="./@charoff"/></xsl:attribute>

          <xsl:attribute name="valign"><xsl:value-of select="./@valign"/></xsl:attribute>

          <xsl:for-each select="tr">

            <TR>

              <xsl:attribute name="id"><xsl:value-of select="./@id"/></xsl:attribute>

              <xsl:attribute name="class"><xsl:value-of select="./@class"/></xsl:attribute>

              <xsl:attribute name="align"><xsl:value-of select="./@align"/></xsl:attribute>

              <xsl:attribute name="char"><xsl:value-of select="./@char"/></xsl:attribute>

              <xsl:attribute name="charoff"><xsl:value-of select="./@charoff"/></xsl:attribute>

              <xsl:attribute name="valign"><xsl:value-of select="./@valign"/></xsl:attribute>

              

              <xsl:apply-templates/>

              

            </TR>

          </xsl:for-each>

        </TBODY>

      </xsl:for-each>

    </TABLE>

  </xsl:template>

  

  <xsl:template match="td">

    <TD>

      <xsl:attribute name="style">width:<xsl:value-of select="./@width"/>;height:<xsl:value-of select="./@height"/>;padding:0cm;</xsl:attribute>

      <xsl:attribute name="id"><xsl:value-of select="./@id"/></xsl:attribute>

      <xsl:attribute name="class"><xsl:value-of select="./@class"/></xsl:attribute>     

      <xsl:attribute name="abbr"><xsl:value-of select="./@abbr"/></xsl:attribute>

      <xsl:attribute name="axis"><xsl:value-of select="./@axis"/></xsl:attribute>

      <xsl:attribute name="headers"><xsl:value-of select="./@headers"/></xsl:attribute>

      <xsl:attribute name="scope"><xsl:value-of select="./@scope"/></xsl:attribute>

      <xsl:attribute name="rowspan"><xsl:value-of select="./@rowspan"/></xsl:attribute>     

      <xsl:attribute name="colspan"><xsl:value-of select="./@colspan"/></xsl:attribute>

      <xsl:attribute name="align"><xsl:value-of select="./@align"/></xsl:attribute>

      <xsl:attribute name="char"><xsl:value-of select="./@char"/></xsl:attribute>

      <xsl:attribute name="charoff"><xsl:value-of select="./@charoff"/></xsl:attribute>

      <xsl:attribute name="valign"><xsl:value-of select="./@valign"/></xsl:attribute>

      <xsl:attribute name="nowrap"><xsl:value-of select="./@nowrap"/></xsl:attribute>

      <xsl:apply-templates/>

    </TD>   

  </xsl:template> 

  <xsl:template match="th">

    <TH>

      <xsl:attribute name="style">width:<xsl:value-of select="./@width"/>;height:<xsl:value-of select="./@height"/>;</xsl:attribute>

      <xsl:attribute name="id"><xsl:value-of select="./@id"/></xsl:attribute>

      <xsl:attribute name="class"><xsl:value-of select="./@class"/></xsl:attribute>     

      <xsl:attribute name="abbr"><xsl:value-of select="./@abbr"/></xsl:attribute>

      <xsl:attribute name="axis"><xsl:value-of select="./@axis"/></xsl:attribute>

      <xsl:attribute name="headers"><xsl:value-of select="./@headers"/></xsl:attribute>

      <xsl:attribute name="scope"><xsl:value-of select="./@scope"/></xsl:attribute>

      <xsl:attribute name="rowspan"><xsl:value-of select="./@rowspan"/></xsl:attribute>     

      <xsl:attribute name="colspan"><xsl:value-of select="./@colspan"/></xsl:attribute>

      <xsl:attribute name="align"><xsl:value-of select="./@align"/></xsl:attribute>

      <xsl:attribute name="char"><xsl:value-of select="./@char"/></xsl:attribute>

      <xsl:attribute name="charoff"><xsl:value-of select="./@charoff"/></xsl:attribute>

      <xsl:attribute name="valign"><xsl:value-of select="./@valign"/></xsl:attribute>

      <xsl:attribute name="nowrap"><xsl:value-of select="./@nowrap"/></xsl:attribute>

      <xsl:apply-templates/>

    </TH>   

  </xsl:template> 

</xsl:stylesheet>


<붙임 3>


전자문서시스템의 정부디렉토리시스템 적용 지침

1. 정부디렉토리시스템 접근 표준

   기관 간 전자문서 유통 시 전자문서시스템에서 수신기관의 정보를 지정하기 위하여 행정안전부에서 제공하는 정부표준 LDAP API나 공개 LDAP API를 이용하여 정부디렉토리시스템으로부터 실시간으로 조직 정보를 가져오도록 한다.


1.1 전자문서시스템에서 정부디렉토리시스템 조직정보 이용절차

   정부디렉토리시스템에서 조직정보를 이용하려고 하는 전자문서시스템은 다음의 사항을 준수하여야 한다.


   ○ 행정자치부에서 제공하는 정부표준 LDAP API 사용을 권장한다.

   ○ 기관 간 전자문서 유통 시 전자문서시스템에서 수신기관의 정보를 지정하기 위하여 디렉토리 정보를 전자문서시스템의 DB에 캐싱해서 사용할 수 없다.(정부디렉토리시스템으로 실시간 접근하도록 한다.)

   ○ 각 기관의 전자문서시스템은 지역별로 분산하여 해당 정부디렉토리시스템(통합전산센터, 대전청사, 외부)으로 설정, 접근하도록 한다.

<정부디렉토리시스템 조직정보 이용절차>


 ① 사용자가 전자문서시스템에서 타 기관으로 문서를 전송하기 위해 수신처 지정을 요구함

 ② 수신처 지정 요구시 정부디렉토리시스템에 접근하기 위해 LDAP API를 호출함

 ③ 각 기관이 지역별로 설정된 정부디렉토리시스템으로 접속함

 ④ 정부디렉토리시스템으로 연결 접속함

 ⑤ 정부디렉토리시스템에서 조직 정보를 검색함

 ⑥ 검색된 조직정보 중 해당 수신자(기관 또는 부서)를 지정할 수 있는 경우 ⑦을 수행

    검색된 조직정보 중 해당 수신자(기관 또는 부서)를 지정할 수 없는  경우 ①을 다시 수행

 ⑦ 검색된 조직 정보가 전자문서시스템에서 조직도 창으로 디스플레이 됨

 ⑧ 해당 수신자(기관 또는 부서)를 지정한 후 문서 발송함

 ⑨ 문서 발송 후 표준 LDAP API는 정부디렉토리시스템과 접속을 해제함



1.2 행정기관의 조직정보 변경 절차

   각 기관의 조직 정보가 변경이 이루어질 경우 변경 정보를 최종적으로 정부디렉토리시스템에 자동 반영 후 해당 기관의 전자문서시스템에서 실시간으로 이용


<조직정보 변경시 반영처리 절차>        


 ① 각 부처 조직담당자가 조직 변경 사항이 발생할 경우 조직 변경 사항을 정부조직관리정보시스템에 입력함

    각 시도, 시군구 조직담당자가 조직 변경 사항이 발생할 경우 조직 변경 사항을 지방행정정보은행시스템에 입력함

 ② 정부조직관리정보시스템에 입력 된 조직 변경 정보를 행정안전부 조직기획과에서 승인함

 ③ 입력된 조직 변경 정보가 행정표준코드관리시스템으로 자동 반영됨

 ④ 행정표준코드관리시스템에 자동 반영된 조직 변경 정보는 정부디렉토리시스템으로 1일1회 자동 전송됨

 ⑤ 각 기관 디렉토리 담당자는 자동 반영된 조직 변경 정보에 문서유통에 필요한 문서유통항목을 추가하여 사전승인함

    ※ 조직이 생성, 변경된 경우는 직제변경일에 자동반영 또는 사전승인을 수행하고 폐지된 경우에는 반드시 사전승인을 수행함

 ⑥ 자료변경 사항이 설정된 시간을 기준으로 정부디렉토리시스템에 자동 반영됨

 ⑦ 정부디렉토리시스템에 변경 반영된 조직 정보를 전자문서시스템에서 실시간으로 이용함

1.3 공공기관의 조직정보 변경 절차

   공공기관의 조직 정보가 변경이 이루어질 경우 변경 정보는 공공기관 디렉토리에 우선 반영된 후 복사 과정을 거쳐 행정기관 디렉토리에 반영되며 각 기관의 전자문서시스템에서 실시간으로 이용


<조직정보 변경시 반영처리 절차>

 ① 전자문서유통 개설 관련 신청서 접수

    각 신청서는 정부전자문서유통지원센터 홈페이지(http://gdoc.go.kr)→이용안내→이용신청서 참조)

    ㉮ 정부전자문서유통지원센터이용신청서(공공기관 전자문서시스템용) 1부

    ㉯ 행정표준기관코드신청서 1부

    ㉰ 행정전자서명신청서 - 개인용 및 기관용 각 1부

 ② 행정표준코드, 행정전자서명 신청서를 해당하는 부서로 전달(담당 공무원)

    ㉮ 행정표준기관코드신청서 : 행정표준코드관리센터

    ㉯ 행정전자서명신청서 : 행정전자서명인증관리센터

 ③ 행정표준코드관리시스템에서 기관코드 생성 확인

    ㉮ 생성된 기관코드는 익일(1일 1회) 설정된 시간을 기준으로 하여 공공기관용 디렉토리에 반영됨 (ou=생성된 기관코드,o=Public of Korea,c=kr)

    ㉯ 정부디렉토리시스템 운영부서에 공공기관 디렉토리에 등록된 기관코드 정보를 행정기관용 디렉토리 하위의 ‘정부산하기관및위원회’로 복사 요청 (ou=생성된 기관코드,ou=정부산하기관및위원회,o=Government of Korea,c=kr)

    ㉰ 정부디렉토리시스템 운영부서에서 기관코드 정보 복사

 ④ 기관 대표코드로만 전자문서유통을 실시하는 공공기관의 경우, 문서유통에 필요한 문서유통항목을 신청서 정보에 근거하여 정부전자문서유통지원센터 운영부서에서 입력함

    ※ 조직정보(대표 기관코드)가 변경된 경우에는 반드시 정부전자문서유통지원센터에 변경내용에 대해 사전 통보하여야 함

 ⑤ 정부디렉토리시스템에 변경 반영된 조직 정보를 전자문서시스템에서 실시간으로 이용함

1.4 표준 LDAP API 변경처리 절차

   행정자치부에서 각 기관 및 전자문서시스템 개발업체에 제공하는 표준 LDAP API에 대한 변경 사항 발생 시 다음과 같은 절차를 통하여 변경 관리하도록 한다.


<표준 LDAP API 변경처리 절차> 


   ① 표준으로 제공된 LDAP API에 대한 기능 추가 등 변경 발생함

   ② 변경 적용된 표준 LDAP API 및 지침 등을 각 기관및 관련 개발업체에 통보함

   ③ 통보 받은 각 기관은 전자문서시스템 개발업체에 변경된 LDAP API 적용을 요청함

   ④ 전자문서시스템 개발업체는 변경된 LDAP API를 전자문서시스템에 적용하며, 적용 후 ⑦을 수행함

   ⑤ 추가 개발이 필요할 경우 변경 표준 API 적용을 위하여 전자문서 시스템을 추가 개발함

   ⑥ 추가 개발을 완료한 후 변경된 표준 LDAP API를 적용하여 테스트 수행함

   ⑦ 추가 개발을 완료한 후 변경된 표준 LDAP API를 적용하여 전자문서시스템에 반영함

   ⑧ 변경된 표준 LDAP API를 전자문서시스템에 적용하였음을 행정안전부에 통보함

   ⑨ 행정안전부에서는 변경되는 LDAP API에 대한 이력을 관리함


2. 정부디렉토리시스템과 자체 구축 디렉토리시스템과 동기화 표준

   전자정부통합망 이용 기관과 이외의 망을 이용하는 기관은 정부디렉토리시스템에 접근하여 정보를 이용할 수 있다.  

   기관에서 자체 구축한 디렉토리시스템과  정부디렉토리시스템 간의 조직 및 사용자 정보 동기화가 필요하며, 구축 시 반드시 행정자치부와 협의를 거쳐야 한다.


<붙임 4>


정부 전자문서유통을 위한 전자서명 적용지침


1. 전자서명 적용흐름

 가. 송신 전자문서시스템

 

시행문 XML 변환

CONTENT 구성

(XML+전자이미지관인+

붙임+전자이미지서명)

전자서명

또는 암호화

전송용 통합파일

구성

 나. 송신측 중계모듈

 

전송용 통합파일의

전자서명 및

암호화

중계서버로 송신

 다. 중계센터

  

전송용 통합파일

수신

전송용 통합파일의

복호화 및

전자서명 검증

로그 기록

전송용 통합파일의

전자서명 및

암호화

수신기관으로

송신

 라. 수신측 중계모듈

 

전송용 통합파일

수신

전송용 통합파일의

복호화 및

전자서명 검증

 마. 수신 전자문서시스템

 

복호화 또는

전자서명검증

CONTENT 해체

(XML+전자이미지관인+

붙임+전자이미지서명)

수신기관 고유

Format으로 변환

기록물등록대장

등록

 바. 전자서명 적용범위

     문서유통 구조(Packing)는 Header와 Contents로 구성되어 있다.

     전자문서시스템에서는 전자서명 또는 암호화를 적용할 경우에는 Content 부분에 대해서만 적용하고, 중계모듈에서는 전체 전송용 통합파일에 대해 컴퓨터용 인증서에 의한 전자서명 및 암호화 과정을 수행한다.


------------------전송용 통합파일 헤더 ----------------------

<?xml version="1.0" encoding="euc-kr"?>

<!DOCTYPE pack SYSTEM "pack.dtd">

<pack filename="131001199900012002082719002101.xml">

<header>

 <send-orgcode>1310000</send-orgcode>

 <send-id>1310011</send-id>

 <send-name>행정자치부</send-name>

 <receive-id>9990001</receive-id>

 <date>2002-08-27 19:00:21</date>

 <title>유통테스트</title>

 <doc-id>05B679A1EB24A36E</doc-id>

 <doc-type type=“send” dept="행정정보화담당관실" name=“홍길동”/>

 <send-gw>GroupwareName(v3.3)</send-gw>

 <dtd-version>2.0</dtd-version>

 <xsl-version>2.0</xsl-version>

---------------------- 전송용 통합파일 Content ----------------------

(전자문서시스템에서 전자서명 또는 암호화 적용 가능)

<contents>

 <content content-role="pubdoc" filename="pubdoc.xml"     

  content-transfer-encoding="base64">

PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iZXVjLWtyIj8+Cjw/eG1sOnN0eWxlc2hlZXQg

dHlwZT0idGV4dC94c2wiIGhyZWY9InNpaGVuZy54c2wiPz4KPCFET0NUWVBFIHB1YmRvYyBTWVNU

RU0gInB1YmRvYy5kdGQiPgo8cHViZG9jPiJlbmZvcmNlIj4KIDxwcm9jZXNzaW5mbz4gCgk8cmVn

//중간생략

PgogICAgPC9ib2R5PgogPC9jb250ZW50PgogPGNhbXBhaWduPgogCTxoZWFkY2FtcGFpZ24+LSDI

sLHiwvkgu/3IsCAtPC9oZWFkY2FtcGFpZ24+CiAJPGZvb3RjYW1wYWlnbj4tIMfUsrLHz7TCIC08

L2Zvb3RjYW1wYWlnbj4KIDwvY2FtcGFpZ24+CjwvcHViZG9jPgo=

</content>

 <content content-role="attach" filename="attach.bmp"     

  content-transfer-encoding="base64">

PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iZXVjLWtyIj8+Cjw/eG1sOnN0eWxlc2hlZXQg

dHlwZT0idGV4dC94c2wiIGhyZWY9InNpaGVuZy54c2wiPz4KPCFET0NUWVBFIHB1YmRvYyBTWVNU

RU0gInB1YmRvYy5kdGQiPgo8cHViZG9jPiJlbmZvcmNlIj4KIDxwcm9jZXNzaW5mbz4gCgk8cmVn

//중간생략

PgogICAgPC9ib2R5PgogPC9jb250ZW50PgogPGNhbXBhaWduPgogCTxoZWFkY2FtcGFpZ24+LSDI

sLHiwvkgu/3IsCAtPC9oZWFkY2FtcGFpZ24+CiAJPGZvb3RjYW1wYWlnbj4tIMfUsrLHz7TCIC08

L2Zvb3RjYW1wYWlnbj4KIDwvY2FtcGFpZ24+CjwvcHViZG9jPgo=

</content>

</contents>

---------------------- 전송용 통합파일 전체 ----------------------

(중계모듈에서 전자서명 및 암호화 적용)

 

 : 암호화 영역

2. 전자서명이 적용된 전자문서유통 구조

  가. content-role

     - content-role=gpki : 전자서명 적용

  나. content-type

     - 전자서명 적용 : application/gcc-mime;smime-type=signed-data;

     - 전자서명 + 암호화  : application/gcc-mime;smime-type=signedandenveloped-data;

  다. 사용되는 파일의 확장자는 p7m

  라. 전자서명 적용 예제

<?xml version="1.0" encoding="euc-kr"?>

<!DOCTYPE pack SYSTEM "pack.dtd">

<pack filename="131050599900012005071519002101.xml">

<header>

 <send-orgcode>1310000</send-orgcode>

 <send-id>1310505</send-id>

 <send-name>행정자치부</send-name>

 <receive-id>9990001</receive-id>

 <date>20050715190021</date>

 <title>유통테스트</title>

 <doc-id>05B679A1EB24A36E</doc-id>

 <doc-type type=“send” dept="행정정보화팀" name=“홍길동”/>

 <send-gw>GroupwareName(v3.3)</send-gw>

 <dtd-version>2.0</dtd-version>

 <xsl-version>2.0</xsl-version>

<contents>

 <content content-role="gpki" filename="smime.p7m"     

  content-transfer-encoding="base64"

content-type:application/gcc-mime;smime-type=signedandenveloped-data; >

PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iZXVjLWtyIj8+Cjw/eG1sOnN0eWxlc2hlZXQg

sLHiwvkgu/3IsCAtPC9oZWFkY2FtcGFpZ24+CiAJPGZvb3RjYW1wYWlnbj4tIMfUsrLHz7TCIC08

L2Zvb3RjYW1wYWlnbj4KIDwvY2FtcGFpZ24+CjwvcHViZG9jPgo=

</content>

</contents>

  ※ 위의 사항을 최종메시지 형태에서 파일의 등록정보로 확인 가능해야 한다.


3. 기타사항

  가. 디렉토리에서의 수신기관/과의 인증서 저장장소

     - ObjectClass : ucOrg2

     - Attribute : UserCertificate

     -  수신기관의 인증서 유무를 확인하여 전자서명, 암호화 적용 여부를 판단한다. 

  나. 전자서명생성 및 검증, 암호화 및 복호화 작업관련은 WEB 버전과 C/S버전 모두 클라이언트에서 수행한다.

  다. 송신기관의 인증서의 유효기간을 확인하여 만료일로부터 100일 이내면 인증서 갱신 안내 메시지를 표시한다.

  라. 위에 언급되지 않은 사항은 ‘행정전자서명인증표준 보안 API 사용지침’, ‘행정기관 전자서명 인증기반(GPKI) 상호연동 기술표준’, ‘행정전자서명 인증업무준칙’, ‘행정전자서명 세부관리지침’ 및 ‘행정전자서명 사용관리지침’을 따른다.

<붙임 5>


전결의 대결에 대한 처리예제


1. 전결의 대결 처리

  ○ 전결의 대결에 대해서 수신측 접수문서에 전결정보(전결표시, 전결권자)을 표시해 주어야 하므로 송신측에서 아래와 같이 문서를 생성하여야 함.

<approval order="1">

<signposition>전산주사</signposition>

<type>기안</type>

<signimage><img src="name1.jpg" alt="" width="6mm" height="6mm"/>         

</signimage>

<date>2005-12-01</date>

<time>11:10:12</time>

</approval>

<approval order="2">

<signposition>서기관</signposition>

<type>대결</type>

<name>홍길동</name>

<date>2005-12-01</date>

<time>11:30:56</time>

</approval>

<approval order="final">

<signposition>정보유통과장</signposition>

<type>전결</type>

<signimage> </signimage> ==> 항목이 필요 없음

<date> </date> ==> 항목은 있으나 값이 없음

<time> </time> ==> 항목이 필요 없음

</approval>  

     


1 2 3 4 5 6 7 8 9 10