>> Read Reply from No. 4 article  
RE: RE: sgml에 대한 문서 - TXT로 변환했어요.

등록 1999-04-24 00:59:05     조회 152
이름 임채필    

: : sgml대해서 정리해 놓은 곳을 소개합니다.
: : www.tjmbc.co.kr/wow에 가시면 게시판이 있는데
: : 그곳에 보면 서기주님이 정리해놓은 sgml이 있읍니다.
: : 자세히는 되있지 않지만 그래도 한 번 들러보세요..
: : 참고로 저와 서기주님은 kaist에서 sgml에 대해서
: : 약 2개월정도 공부를 했거든요..
: : 비록 kaist에서 sgml을 중단해서 더 이상은 못했지만
: : 그래도 지금도 열심히 하고 있답니다..
: : 자세한 것은 저나 서기주씨에게 문의하세요..
:
: <a href="http://203.238.237.5/_PRIVATE/WOW/PDS/pdscont.asp?page=1&no=7&name=wowpds">
: sgml1.doc</a>라는 문서군요.
:
: M$ 워드 포맷인가요? 볼 수가 없네요.


==============================
S G M L

? Abstract :
  SGML(Standard Generalized Markup Language)은 멀티미디어 전자 문서를 이 기종
시스템들 간에 정보의 손실없이 효율적으로 전송, 저장 및 자동 처리의 목적으로 제정된 
국 제 표준이다. SGML은 개념적인 문서의 논리 구조와 내용 구조를 기술하기 위한 메타
언어로 현재 CALS(Commerce At the Light) 등 넓은 응용 분야에서 사용되고 있다.
아래에서 SGML의 개요, SGML 문서 구성, SGML 응용 분야, SGML 문서 처리 모델 등에
대해 살펴보고 특히 SGML 문서 구성중에서 문서의 형을 정의하는 DTD(Document Type
Definition) 생성에 대해 HTML(HyperText Markup Language) DTD의 예로 설명하기로
한다.

? 서  론
  고도의 정보화 사회에서 컴퓨터를 이용한 문서 처리와 문서를 이 기종간의 시스템에서
상호교환하는 정보 교환의 중요성이 날로 증대되고 있다. 이에 따라 텍스트, 그래픽스,
오디오 및 비디오 등을 포함하는 멀티미디어 문서들을 효율적으로 교환 및 저장하고, 응용
, 주변장치, 네트워크로부터 독립적으로 문서를 처리할 수 있는 환경이 요구되고 있다.
  이에 대해 ISO 8879인 SGML을 제정하였다. SGML의 개발은 처음에 공통 부호화가
1960년대 말 GCA(Graphic Communications Association)에서 연구가 시작되어
GenCode가 개발된 것이 시작이다. 1969년에 IBM의 Charles Goldfarb에 의해
GML(Generalized Markup Language)의 개발이 행해져, 문서형 정의 개념이 도입되었다.
1978년에 ANSI에서 문서 기술 언어의 표준화 활동이 시작되어 1980년에 최초의 SGML
규격 원안이 출판되었고, 1984년에는 ISO에 의한 표준화 활동이 시작되고 1985년에
출판된 규격 안은 EC 출판국에서 사용되었고, 미 출판국 등에서도 사용되었으며,
1986년에 ISO의 국제 규격이 되었다.
  이러한 SGML에 대한 연구 및 이용은 이미 미 국방성의 CALS 프로젝트의 기술
표준으로 채택된 데 이어 미국 출판 협회, 유럽 공동체 출판국, 옥스포드 대학 출판부
등에서 사용하고 있으며, 또한 미국 화학회, 수학회 등 많은 학회에서 사용하고 있다.
일본에 서는 이미 통산성의 주도에 의해 SGML의 일본 표준을 만들어 공표 하였으며,
1990년부 터 특허 공문의 전자화에 SGML을 채용하며, 학술 논문의 전자화에 관한
SGML에 의한 논문의 데이터베이스화의 검토가 시작되는 등 세계적으로 SGML의
본격적인 보급에 힘쓰고 있다.
  그러나 실제로 SGML 문서 작성시 문서형인 DTD 생성에 많은 어려움이 제안되고 있다.
이에 본 논문에서는 SGML 문서 구성요소를 기술하고, SGML 문서 작성 시에 요구 되는
DTD 생성을 중심으로 HTML의 실례로 이에 대해 설명한다.

? SGML 문서 구성
  SGML은 임의 형태 문서, 임의 응용에 대해 일반화 마크업을 정의하기 위한 방법을
표준화하는 메타 언어(meta language)이다. SGML 문서의 구성은 문서에서 사용될 언어 및
글자들의 집합을 선언하고, SGML 문서 요소의 수, 토큰 수 등의 값을 정하는 SGML
선언부, SGML 문서의 논리적, 계층적 구조를 표현하는 문서형 정의부, 그리고 실제내용을
포함하는 SGML 실제 문서부로 다음과 같이 세 부분으로 나눈다.

     SGML 선언부(SGML Declaration)
     문서형 정의부(DTD : Document Type Definition)
     SGML 문서(SGML Document)

 1. SGML 선언부
SGML 선언은 SGML 문서를 구성하는데 사용한 문자의 집합, 코딩 규칙 등을 정의한다.
이 선언은 컴퓨터내에서의 처리시에 참조되기도 하고, 인쇄된 형태로서 사람의 이해를
돕기도 한다. SGML 선언은 문서에서 사용할 문자 집합을 정의하는 부분, SGML 문서의
처리 능력에 대한 범위를 정의하는 부분, 주요 구체 구문(concrete syntax)을 정의하는
부분, 그리고 SGML 문서가 갖는 특수한 특성을 표현하는 부분등으로 구성된다.
구문 형식은 먼저 SGML 선언은 마크업 선언 개방("<!")으로 시작하고, 마크업 선언
폐쇄(">")로 끝난다. 그리고 첫 번째 행은 "SGML"로 시작하고 현재의 SGML 선언에서
적용한 SGML 표준의 번호와 그 표준의 발표시기를 문자열("ISO 8879-1986")로 기록한다.
다음으로 SGML 문서내에서 사용될 글자의 집합을 정의하는데 첫 번째 열에
"CHARSET"을 두고 다음 열에 "BASESET"과 "DESCSET"를 쓰는데 전자는 기본적인
문자 집합을 의미하는 것으로서 바로 우측에 표준이나 등록된 이름, 또는 숫자 등을
내용으로 하는 사람이 읽을 수 있는 문자열을 기록하여 문서를 수신시 이해하도록 한다.
후자는 다음행에 쓰며 우측으로 세개의 열로써 표현하는데 첫 번째 열은 사용할 문자의
2진 코드를 십진수로 바꾼 값이며, 다음열은 첫 번째 열의 십진 코드부터 연속하여
선언하고 있는 글자의 수효이며, 다음열은 문자에 대한 기술 내용이다.
  다음에는 CAPACITY가 오며 이는 엔티티(ENTITY) 정의의 한계, 엔티티 내의 글자
한계, 내용 모델내의 임의 레벨에서 갖을 수 있는 토큰 수, 속성 정의 수 등의 상한값을
정한 다. 다음으로 SCOPE 선언은 주요 구체구문이 문서전체에서 사용될
것인지(DOCUMENT), 문서의 텍스트에서만(INSTANCE) 사용될 지를 선언한다.
  다음으로 SYBTAX에서는 실제 사용할 구체구문을 선언하는데 위의 예에서는
PUBLIC으로 국제적으로 공인된 이름을 쓴다. 끝으로 FEATURES를 이용하여
SGML시스템이 갖추어야 할 기능 등을 표시한다. 또한 설명문은 "--"을 이용하여
첨가한다.

        <!SGML "ISO 8879:1986"
        BASESET      "ISO 646-1983//CHARSET
                        International Reference Version//ESC 2/5 4/0"
        DESCSET      0   9   UNSED
                        9   2   9
                        11  2   UNUSED
                        13  1   13
                        14  18  UNUSED
                        32  95  32
                        127 1   UNUSED

        CAPACITY     PUBLIC "ISO 8879-1986//CAPACITY Reference//EN"
        SCOPE         DOCUMENT
        SYNTAX       PUBLIC "ISO 8879-1986//SYNTAX Reference//EN"

                     FEATURES
        MINIMIZE DATATAG NO OMITTAG YES RANK NO  SHORTTAG YES
        LINK       SIMPLE   NO  IMPLICIT  NO   EXPLICIT  NO
        OTHER     CONCUR  NO  SUBDOC   NO   FORMAL  NO
        APPINFO  NONE>

                             그림 1. SGML 선언 예

 2. 문서형 정의부
  문서형 정의부는 문서 자체의 논리구조를 내포한다. 문서형 정의 기술은 ISO 8879의
문서형을 표현하기 위한 구문에 따라 표현된다. 문서형 정의에 선언되는 내용은 다음과
같다.

     문서형 선언부
     엘리먼트(element) 선언부
     엔티티(entity) 선언부
     속성 정의 선언부
     표기법 선언부
     주석 선언부

    2.1 문서형 선언부
  문서형 선언부는 MDO(Markup Declaration Open) 기호('<!')로 시작하여 MDC(Markup
Declaration Close) 기호('>')로 끝난다. MDO 기호 다음에 DOCTYPE이 라는 예약어와
정의중인 문서 형태에 대한 고유 이름인 공통 식별자(아래 예에서 'HTML')를 차례로
기술한다. 이어서 DSO(Declaration Subset Open) 기호('[')를 쓰고 엔티티, 엘리먼트, 속성,
표기법, 주석 등을 선언하고, DSC(Declaration Subset Close) 기호 (']')를 기입한 뒤 MDC
기호로 끝나게 된다. 예는 다음과 같다.

                        <!DOCTYPE HTML [
                                ......
                        ]>

    2.2 엔티티 선언부
  엔티티 선언은 문서에서 여러번 반복하여 입력할 필요가 있을 때 문서에서 참조할 수 있
는 엔티티들을 정의하여 사용한다. 엔티티는 크기와 형태가 다양하여 한두 글자를 갖는 엔
티티도 있고 한 문서의 일부분이나, 또는 하나의 완전한 SGML 문서도 엔티티로 볼 수
있다. SGML 문서에 포함된 엔티티에는 일반 엔티티와 매개변수 엔티티가 있다. 일반
엔티티는 그 교체될 문자로서 문서 구조상의 어떤 의미 등이 없는 단순한 문자들을 갖으며
, 매개변수 엔티티는 교체될 문자가 다른 엘리먼트의 공통 식별자 즉 엘리먼트 이름이 되
는 경우로서 문서형 정의부 내에서만 사용된다. 그리고 일반 엔티티의 경우 교체될 엔티티
문자가 현재 처리중인 SGML 문서 내에 존재하지 않는 엔티티를 외부 엔티티라고 한다. 이
외부 엔티티를 다시 한 시스템 내에서만 사용가능한 시스템 엔티티와 두개 이상의
시스템에 서 사용될 수 있도록 공적으로 선언된 공중 엔티티로 구분한다.
  여러 종류의 엔티티를 SGML 문서에서 사용하기 위해서는 엔티티 선언과 엔티티 참조가
필요한데, 그 방법이 엔티티 종류에 따라 다르다. 엔티티 선언은 엔티티의 내용을 정의하
고 엔티티 참조는 엔티티 내용이 문서내의 어디에 위치해야 할 지를 지시한다. 그리고 엔
티티 선언은 문서형 정의부내에 있어야 하며, 엔티티 참조는 문서내의 어디에나 올 수 있
으 며, 문서형 정의에서도 가능하다. 그러나 매개변수 엔티티는 문서형 정의에서만 참조할
 수 있다.   일반 엔티티와 매개변수 엔티티는 선언과 참조에서 그 마크업 방법이 다르다. 
일반 엔티 티 선언은 다음과 같다.

        <!ENTITY SGML "Standard Generalized Markup Language" >

이렇게 선언된 일반 엔티티를 참조시에는 "&SGML;"에 의해 참조된다.
  매개변수 엔티티를 선언하는 마크업은 마크업선언 개방자("<!"), ENTITY, '%', 엔티티
이름, 교체 문자, 마크업선언 종료자(>)로 마크업 한다. 그 선언과 참조의 예는 다음과 같
고, 참조는 엘리먼트 내에서나 본문내에서 사용 가능하다.

        <!ENTITY % html.content "HEAD, BODY+" -- 선언 예 -- >

        <!ELEMENT HTML O O (%html.content;) -- 참조 예 -- >

  이 중 "%html.content;" 부분이 엔티티 참조이며 이 부분에 "HEAD, BODY+"가 대신
들어간다. 여기서 "html.content"는 엔티티 이름이며, 엔티티 내용인 HEAD와 BODY는 이
문서내의 엘리먼트 이름들로서 엘리먼트 HTML의 부엘리먼트가 되는 것이다.
  결과적으로 HTML요소의 내용 부분은 (HEAD, BODY+)가 된다. 이 때 발생 지시자와
연결자를 사용하는데 발생지시자는 이름 바로 뒤에 쓰며, 발생지시자로는 opt(?), plus(+),
rep(*)가 있는데, opt는 부엘리먼트가 0번 아니면 1번을 의미하고, plus는 부엘리먼트가
선언중인 엘리먼트 가운데 1번이상 있을 수 있음을 의미하고, rep는 엘리먼트중에
0번이상 존재할 수 있음을 의미한다. 연결자는 한 부엘리먼트 이름과 다음 부엘리먼트
사이에 사용하며, seq(,)는 앞뒤의 부엘리먼트가 반드시 존재하되 이 모델 그룹에 등장한
순서에 따르는 것을 말하 고, or(|)는 연결자 전후의 부엘리먼트는 둘 중 어느 하나의
부엘리먼트만 있어도 되고, 둘 다 있어도 좋음을 의미한다. and(&)는 연결자 전후의
부엘리먼트는 순서에 상관없이 반드시 존재하여야 함을 의미한다. 위의 예에서 'HEAD'는
1번, 'BODY+'는 1번이상 발생함을 나 타내고, '(HEAD, BODY+)'는 두 요소가 반드시
와야되고 발생 순서는 'HEAD' 다음에 'BODY'가 와야 됨을 의미한다.
  공적으로 선언된 외부 엔티티 중에서도 문서형 정의에서 참조될 엔티티는 매개변수
엔티티로 선언되며

       <!ENTITY % 공중 엔티티명 PUBLIC "공적으로 선언된 문자열">

과 같은 형태이다. 여기서 PUBLIC은 공적으로 선언된 것임을 의미하는 예약어이고, 이는
문서형태 정의

        %공중 엔티티명;

의 형식으로 참조된다. 이러한 방법에 의해 공적으로 선언된 문서를 문서형 정의에서 이용
할 수 있으며 이에 대한 예는 다음과 같다.

        <!ENTITY % HTMLlat1 PUBLIC "-//IETF//ENTITIES Added Latin 1
                         for  HTML//EN">

    2.3 엘리먼트 선언부
  엘리먼트 선언부는 각 엘리먼트 내부에서 존재할 수 있는 부엘리먼트에 대한 공통
식별자를 순서에 따라 선언하며, 공통 식별자나 모델 그룹 등으로 이루어지는 엘리먼트
형부분과 엘리먼트의 실제 내용 또는 다른 부요소들에 대한 공통 식별자들로 구성되는
내용부분으로 구분된다.
  먼저 문서형 정의의 고유 이름인 공통 식별자를 선언하고, 이 선언의 내용부분에는 문서
의 구조상 상위 레벨에 있는 엘리먼트들의 공통 식별자들이 온다. 이 때 사용한 공통 식별
자들은 차례로 엘리먼트 선언을 하여야 하며, 임의의 엘리먼트 선언은 내용 부분에 다른 
엘 리먼트의 공통 식별자를 가질 수 있는데, 이 공통 식별자를 갖는 엘리먼트는 선언중인 
엘 리먼트의 부요소가 된다. 이 부요소에 대한 엘리먼트 선언도 필요하다. 결과적으로 트
리 형태의 구조를 갖는 문서형 정의부에 있는 엘리먼트 선언들에 의해 문서의 구조를 파악
할 수 있다.
  엘리먼트 선언에 관한 구문은 MDO('<!')로 시작하고, 예약어인 ELEMENT를 쓴다.
그리고 현재 선언중인 엘리먼트의 형태를 쓰는데 이는 하나의 공통 식별자일 수도 있으며,
복수개의 공통 식별자일 수도 있다. 복수개인 경우는 grpo(group open) 기호('(')를 먼저
쓰고 공통 식별자들을 컴머로 구분하며 열거한 후 grpc(group close) 기호(')')를 쓰며,
이러한 형태를 모델 그룹이라 한다.
  또한 SGML 문서에서 엘리먼트에 대한 시작 태그 밑 끝 태그를 생략 가능한 지에 대한
정보를 갖는 두 문자를 사용하는데 앞의 문자는 시작 태그에 대한 것이고, 뒤의 문자는 끝
태그에 대한 것으로 "-"와 "O"를 사용하는데 "-"는 생략할 수 없음을 의미하고, "O"는
생략이 가능함을 의미한다. 아래에 엘리먼트 선언 예를 보인다.





     <!ELEMENT HTML O O (%html.content) >
        <!ELEMENT TITLE - - (#PCDATA) >

예에서 'HTML'은 엘리먼트의 공통 식별자로서 '%html.content'을 갖는 엘리먼트들을
지칭하는 이름이며, 'O O'는 시작 태그와 끝 태그를 생략할 수 있음을 의미하며, 아래 예의
공통 식별자는 'TITLE'이고 식별자는 그 내용이 '#PCDATA'와 같음을 의미하고 시작
태그와 끝 태그가 생략가능하지 않음을 나타낸다.
  또한 두 가지 유형의 예외를 엘리먼트 선언에 사용할 수 있다. 예외는 포함(inclusions)과
제외(exclusions)가 있는데 이는 단독으로 혹은 동시에 사용될 수있다. 포함은 특정
엘리먼트내에 어디서나 부 엘리먼트가 발생할 수 있도록 지정하며, 제외는 특정
엘리먼트내에 부 엘리먼트를 포함하지 않아야 할 경우에 선언한다. 예를 들면 다음의 경우
'FORM' 엘리먼트내 어느 곳에서든 '(INPUT | SELECT | TEXTAREA)'이 발생할 수 있고,
'FORM' 엘 리먼트내에 다른 'FORM'이 올 수 없음을 나타낸다.

        <!ELEMENT FORM - - %body.content -(FORM)
                                          +(INPUT | SELECT | TEXTAREA) >

    2.4 속성 선언부
  속성 정의 선언부는 엘리먼트에 관련되어 특정될 수 있는 속성들과 그 속성들이 가질 수
있는 값들을 정의하는 것으로, 속성은 문서 혹은 엘리먼트의 상태, 문서의 텍스트가
출력되는 형식, 외부로부터의 데이터가 문서에 추가될 경우에 그 위치 및 크기 등을 알린
다. 속성 지정을 하기 위하여 속성은 속성의 이름과 속성의 값을 갖는다. 속성 선언은 문서
형 정의에서 관련되는 엘리먼트의 선언 아래부분에서 한다. 속성 선언의 일반 형식은
MDO('<!'), ATTLIST, 관계 엘리먼트명, 속성 선언 리스트, MDC('>')의 순서이며 속성 선언
리스트에는 각각 다른 특성을 지정할 수 있는 속성 정의가 리스트를 이루며, 하나의 속성
정의는 속성의 이름, 선언된 값, 디폴트값의 세 성분으로 구성된다.
  속성 정의중 세 번째 성분인 디폴트 값은 바로 앞의 선언된 값이 실제 속성 값의 후보로
된 경우는 그 중의 한 값으로 정할 수 있으며, 다른 예약어들이 올 수도 있다. 이
예약어들은 속성 값이 설정되는 상황을 말해준다. 표1과 표2에 속성 선언 값에 대한
예약어와 디폴트 값을 나타낸다.

             <!ELEMENT BODY O O %body.content>
             <!ATTLIST BODY
                           %attrs;
                           position (left | right | top | bottom | float) float
                           background %URI; #IMPLIED  >

위의 예에서 관련 엘리먼트는 'BODY'이고 3개의 속성을 갖으며, 'position'은 속성
이름이고 이에 대한 속성값은 left, right, top, bottom, float 중에 하나가 올 수 있으며,
예에서는 디폴트 값은 'float'로 정의되었다.

                        표 1 속성 선언값에 대한 예약어
--------------------------------------------------
  예약어                   쓰임새
==================================================
  CDATA 	  속성값이 문자 데이터로 구성
  ENTITY 	  속성값이 현재 선언된 부문서 또는 데이터 엔티티 이름이 될 수 있다
  ENTITIES 	  속성값이 부문서 또는 데이터 엔티티 이름들의 리스트로 구성
  ID 		  속성값은 엘리먼 트를 위한 고유한 식별자
  IDREF 	  속성값이 ID 참조값
  IDREFS 	  속성값이 ID 참조값 리스트
  NAME 	  속성값이 유효한 SGML 이름
  NAMES 	  속성값이 유효한 SGML 이름들의 리스트
  NMTOKEN 	  속성값이 이름 토큰
  NMTOKENS  속성값이 이름 토큰들의 리스트
  NOTATION   속성값이 괄호안에 notation 이름들의 리스트로 구성
  NUMBER 	  속성값이 한 숫자
  NUMBERS 	  속성값이 숫자 리스트
  NUTOKEN 	  속성값이 숫자 토큰
  NUTOKENS	  속성값이 숫자 토큰들의 리스트
---------------------------------------------------

                          표 2 디폴트값에 대한 예약어
---------------------------------------------------
  예약어                          쓰임새
===================================================
 #FIXED 	고정된 디폴트 속성값을 갖음
           	(시작 태그안에서 다른 속성값 의 정의를 하더라도 변할 수 없다)
 #REQUIRED 속성값을 반드시 엘리먼트의 시작 태그안에 입력 되어 있어야 한다
 #CURRENT 	시작 태그안에 속성값이 정의되어 있지 않으면 현재(마지막 입력된)
              값을 사용하게 된다.
 #IMPLIED 	속성값이 정의되지 않았다면 프로그램에서 그 값을 주도록 하는 것
 #CONREF 	상호참조 텍스트나 ID 참조값을 갖는 속성을 포함하는 엘리먼트내에서 선언
---------------------------------------------------

    2.5 표기법 선언부
  속성 값에 선언된 'NOTATION' 예약어는 특수한 부호와 표기법을 사용하여 입력된 내용
을 갖는 엘리먼트를 식별하는데 사용된다. 이 방법으로 선언된 속성은 엘리먼트의 내용을
문서형 선언부 집합에 포함되는 NOTATION들 중 하나와 연관시킬 수 있다. 예를 들면 다
음과 같다.

       <!ENTITY % style-notations "dsssl-lite">
       <!NOTATION dsssl-lite PUBLIC "-//ISO/DSSSL Lite ??//EN//">

       <!ELEMENT STYLES - - (STYLE*) >
       <!ATTLIST STYLES notation NOTATION(%style-notations;) #REQUIRED >

위의 예에서 'STYLES' 엘리먼트는 'dsssl-lite' 표기법으로 부호화됨을 나타낸다.

    2.6 주석 선언부
  주석부 선언부는 실제 문서의 구조나 내용과는 관계없이 설명을 요구하는 경우 사용한다
. 선언 형식은 "MDO, --, 주석문, --, MDC" 순으로 선언된다. 선언 예는 다음과 같다.

        <!-- html3.dtd Document Type Definition for the HyperText Markup
               Language(HTML) -->

 3. SGML 문서
이 부분은 실제 문서부로 많은 수의 상호 연결된 문서 요소들로 구성된다. 각 문서
요소는 특정한 목적을 갖는 문자들을 포함하고, 그 중 특수한 문자나 단어는 여러 다른
문서 요소의 구성 성분이 될 수도 있다. SGML 문서에 대한 마크업 기술 방법과 문서형
정의부에 따라서 SGML 문서를 작성하며, 우선 한 시스템이 여러 종류의 문서형 정의부를
갖고 있을 때, 그 중 어떤 문서형 정의부에 맞는 문서인지를 나타내기 위해 문서형 선언을
한다. 이것은 "MDO DOCTYPE 문서형 정의부 이름 PUBLIC 설명문 MDC"의 순서로 된
구문을 갖는다. 한 예로

        <!DOCTYPE HTML PUBLIC "-//IETF//DTD// HTML 3.0//EN">

를 들 수 있는데 여기서 HTML은 적용한 문서형 정의부의 이름이고, DOCTYPE과
PUBLIC은 예약어이다. 이후에는 엘리먼트들의 객체가 단위가 되어 문서형 정의부에서
정의 된 구조로 구성된다. 한 엘리먼트는 시작 태그 STAGO(<), 엘리먼트명, TAGC(>)로
마크업되고 끝 태그는 ETAGO(</), 엘리먼트명, TAGC(>)의 순서로 기술된다. 이 때 시작
태그와 끝 태그는 문서형 정의부내에서 정의된 정보에 따라 생략하는 것도 가능하다.
그리고 시작 태그와 끝 태그 사이의 내용은 다른 엘리먼트를 포함할 수도 있고, 그렇지
않고 일반적인 문자 데이터로 구성되기도 한다. 여기서 내용의 위치에 오는 엘리먼트를 부
엘리먼트라 하고, 이것도 상위의 엘리먼트와 동일한 구조로 마크업된다.

? SGML DTD 생성
  다음에서는 위의 설명을 바탕으로 실제 간단한 SGML DTD를 생성하고 이를 이용하여
SGML 실제 문서를 생성한다. 여기서 문서의 선언부는 생략하기로 한다.

 SGML DTD 생성
  처음에 DTD를 생성할 때 효율적으로 DTD를 생성하기 위해 다음과 같은 일반적인
순서에 의해 작성한다.

     문서 분석
     태그명을 결정
     엘리먼트들 관계를 결정
     태그 마크업 최소화에 대한 규칙을 정의
     각 태그에 허용된 속성들을 명세
     주어진 응용에 사용되도록 정의된 엔티티 집합을 정의
     마크업을 쉽게 입력할 수 있도록 임의 단축 참조 대응표를 결정
     허용된 표기법을 정의(예, 포스트스크립, CGM, 수학식)
     DTD 코딩
     DTD 시험

DTD를 생성에 대한 설명을 문서 예를 보인다.
--------------------------------------------------
       문서의 물리구조                                 문서의 논리구조
==================================================
    November 9. 1996
    Ref. 9600
    대전 서구 도마동 배재대학교
    컴퓨터공학과 Mr. Jung
    제 4 회 WWW-KR                          서언(날짜, 참조번호, 주소, 주제)
    안녕하십니까 ?

      첨부된 프로그램은 수정된 프로그램입니다.
    이 프로그램에는 각 발표자와 발표 시간이
    표시되어 있습니다.
      첨부된 발표자료 제출에 관한 안내를 참고
    하시어 아래의 제출 기한까지 자료가
    사무국으로 도착할 수 있도록 협조하여
    주십시오.                                          본문(인사말, 단락,...)

    감사합니다
    WWW 사무국
    사무국장                                          맺음말(끝인사, 발신, 직책)
--------------------------------------------------
                              그림 2 문서의 실례

  먼저 문서 분석 단계에서 문서의 적용 범위 등을 정한 뒤 엘리먼트 이름을 그림 2의
논리 구조에서의 이름과 같이 정한다. 이때 주의할 점은 문서형 이름의 길이가 SGML에
의해 8 자로 제한된 다는 점이다. 다음에 가능한 모든 논리적인 엘리먼트들의 목록을
작성하는데 여기에 각 엘리먼트에 대한 속성 및 엔티티도 포함된다. 작성하려는 문서의
실제 발생 형태를 분석하여 가능한 모든 엘리먼트들의 목록을 작성해야 한다. 추가로,
고려해야 될 사항은 문서의 응용 형태에 따라서 엘리먼트들이 달라질 수도 있고 부가 또는
삭제될 수도 있다. 그러나 가능한 모든 응용에 적용할 수 있는 엘리먼트 집합을 만드는데
노력을 해야 한다.
  다음에 문서 클래스에 대한 엘리먼트 집합이 결정되면 이들 간의 관계를 설정하여야
하는 데 서로간의 포함관계에 있는 엘리먼트들과 서로 이웃하는 엘리먼트들이 결정되면
엘리먼트 상호간의 트리 구조를 형성한다. 그러나 트리 구조가 엘리먼트 간의 모든 관계를
표현하지 는 못한다. 즉 엘리먼트 간의 발생 순서와 발생 횟수, 또는 어느 엘리먼트 밑에서
나타나서 는 안되는 엘리먼트의 지정과 어느 엘리먼트 밑에서는 항상 발생할 수 있는
엘리먼트의 지 정 등을 트리 구조를 가지고 표현하기는 불가능하다. 그래서 이러한 정보를
표현하기 위해 구조 다이어그램을 이용하여 표현하기도 한다.
  다음에 각 태그들에 대해 최소화에 대한 규칙을 정의하고, 각 태그에 허용된 속성들에
대한 명세를 결정하고, 허용된 표기법을 정의한 뒤, DTD를 코딩하고 이에 대한 시험을
수행한다. 그림 3에 위의 예에 대한 DTD를 나타낸다. 이러한 DTD는 초보자가
작성하기에는 어렵기 때문에 전문가가 작성하게 되는데 이 또한 어렵기 때문에 상용 DTD
편집기 도구를 이용하 여 작성하는 경우가 많다. 이렇게 생성된 DTD가 SGML에서
제공하는 규칙에 따라 작성 되었는지 파서 등을 통해 시험을 하여 오류가 없으면
DTD생성이 완료된다.

                <!-- DTD for simple office letter -->
                <!DOCTYPE 편지 [
                <!ENTITY WWW "World Wide Web">
                <!NOTATION tex PUBLIC "-//Local//NOTATION
                                                          Tex  Fomula//EN">
                <!NOTATION mat PUBLIC "-//addison-wesley//NOTATION
                                                                  math//EN">
                <!ELEMENT 편지 - O (서언, 본문, 맺음말)>
                <!ATTLIST 편지 STATUS (public|confiden) public>
                <!ELEMENT 서언 - O ((날짜 & 참조번호), 주소, 주제?)>
                <!ELEMENT 날짜 - O (#PCDATA)>
                <!ELEMENT 참조번호 - O (#PCDATA) -(참조번호)>
                <!ATTLIST 참조번호 refid IDREF #CONREF>
                <!ELEMENT 주소 - O (#PCDATA)>
                <!ELEMENT 주제 - O (#PCDATA)>
                <!ELEMENT 본문 - O (인사말, 단락+)>
                <!ELEMENT 인사말 - O (#PCDATA)>
                <!ELEMENT 단락 - O (#PCDATA|그림)>
                <!ELEMENT 그림 - O (#RCDATA)>
                <!ATTLIST 그림 유형 NOTATION (tex|mat)>
                <!ELEMENT 맺음말 - O (끝인사, 발신, 직책?)>
                <!ELEMENT 끝인사 - O (#PCDATA)>
                <!ELEMENT 발신 - O (#PCDATA)>
                <!ELEMENT 직책 - O (#PCDATA)>
                ]>

                           그림 3. 문서에 대한 DTD

위의 그림 3의 DTD를 이용하여 SGML 실제 문서 작성예를 그림 4에 보인다.

        <편지 STATUS="confiden">
                <서언>
                        <날짜>November 9. 1996</날짜>
                        <참조번호>Ref. 9600</참조번호>
                        <주소>대전 서구 도마동 배재대학교
                               컴퓨터공학과 Mr. Jung</주소>
                        <주제>제 4 회 WWW-KR</주제>
                </서언>
                <본문>
                        <인사말>안녕하십니까 ? </인사말>
                        <단락>첨부된 프로그램은 수정된 프로그램입니다. 이 프로그램
                               에는 각 발표자와 발표 시간이 표시되어 있습니다.
                               </단락>
                        <단락>첨부된 발표자료 제출에 관한 안내를 참고하시어 아래의
                               제출 기한까지 자료가 사무국으로 도착할 수 있도록 협조
                               하여 주십시오</단락>
                </본문>
                <맺음말>
                        <끝인사>감사합니다</끝인사>
                        <발신>WWW 사무국</발신>
                        <직책>사무국장</직책>
                </맺음말>
        </편지>

                        그림 4 SGML 실제 문서 작성 예

 DTD 생성시 참고사항
    1. DTD에서 엘리먼트, 속성, 엔티티 정의시 참고사항
  DTD에서 엘리먼트, 속성, 엔티티 정의시 다음의 원칙은 DTD 생성에 도움을 준다.

     다른 문서 부류사이에서 공통 엘리먼트를 사용 가능하도록 한다.
     다른 종류의 DTD사이 공통의 엘리먼트를 갖는다. 예를 들어 사무용 편지와
     메모가 첫 부분만 다르고 본체부 엘리먼트가 같다면 구분된 DTD에 공통
     엘리먼트를 위치하고 엔티티 참조에 의해 주 DTD에서 이를 참조할 수 있다.

     존재하는 DTD를 사용
     어떤 DTD는 이미 공공적으로 유용한데 이들은 이미 전문가에 의해 작성되고
     시험되 어 디버그된 상태이므로 새로운 DTD를 생성하는 것보다 기존의 DTD를
     사용함으로써 많 은 시간과 노력을 절약할 수 있다.

     DTD 생성보다 기존의 DTD를 변형하여 사용하는 것이 쉬울 때가 있다.
     문서를 분석해야 되지만 구조의 대부분이 이미 부호화되었고 이런 경우 본래
     DTD를 이용하여 정확히 분석된 문서는 변형된 DTD도 성공적으로 분석될 수
     있다는 의미에서 변 형된 DTD는 본래 DTD와 완전한 호환성을 갖는다.

     DTD는 엘리먼트들과 이들 최소화사이 관계와 같은 것들이 철저하게 설명되어야
     한 다.
     SGML 입력 시스템이 유용하지 못하고 사용자가 SGML 파일 생성시 문서화에
     의존한 다면 필수적이다.

     다른 플랫폼에서도 같은 DTD를 사용하여야 한다
     만일 같은 문서 부류를 기술시 다른 플랫폼에서도 같은 DTD가 사용되어야 한다.
     다른 DTD가 사용된다면 이식성이 없어 다른 시스템에서 처리될 수 없는 다른
     SGML 소스 파일 을 생성한다.

    2. DTD 개발시 유의사항
  DTD 개발시 다음과 같은 사항을 유의해야 한다.

     혼합된 내용 엘리먼트를 가질 때 유의 :
     혼합된 내용 엘리먼트는 분석될 문자 데이터(#PCDATA)와 다른 엘리먼트가
     혼합된다. 이 때 각 엘리먼트에서 항상 '|' 연결자를 사용한다.
     이식성을 저하시키므로 가능한 한 처리 명령을 쓰지 않는다.
     특정 포맷팅에 포함된 엘리먼트를 피해야 한다.
     사용자가 문서형 선언 부집합에서 자신의 선언들을 써넣을 수 있어야 한다.
     태그들의 수를 제한하지 않는다.
     최소화와 단축참조를 가능한 한 피한다.
     구조를 숨길 수 있으므로 파라메터 엔티티를 주의 깊게 사용한다.

 기존 DTD 소개
     MIL-M-28001 DTDS :
     미국방성의 DTD
     ISO 8879:1986의 부록 E의 DTD :
     문헌의 일반적인 엘리먼트들에 대해 기술
     ISO TR 9573:1988
     스프레드쉬트, 수학식 등을 위한 DTD를 기술
     ISO 12083:1993
     ANSI Z39.59:1988
     TEI(Text Encoding Initiative) DTD
     SNE/Cercle DTD(French Publishers)
     DocBook DTD
     HTML DTD
     ....

? SGML 문서 처리 모델
 그림 5에 SGML 문서 처리 모델의 개요를 보이고 있으며, 관련 표준은 다음과 같다. 이
처리 모델 개요는 텍스트 기술과 처리 시스템의 부시스템과 이들 간의 관계를 이해하는데
도움을 준다.


                     그림 5 SGML 문서 처리 모델 개요

  문서 편집 동작은 텍스트의 대화적 기록과 수정 방법을 제공하는 것으로 저자가 입력한
문서 데이터는 SGML에 의해 그 논리 구조를 형식적으로 기술한다. 즉, 제목, 저서명, 장,
절, 주 등의 문서 기술 내용의 논리 구조로 구분되고 이들 관계가 정의된다. 문서 스타일
에 대해서는 이들을 기술하는 요소간의 관계를 나타내고, 논리 요소와 대응되므로 DSSSL
이 사용된다. 여기에는 작성된 문서를 검증하기 위해 문서 구문 분석 동작을 포함하는데,
문서 구문 분석 동작은 편집기로부터 SGML 문서를 받아들인다. 또한 SGML 문서 교환
포맷(SDIF : SGML Document Interchange Format)으로 교환된 SGML 문서를 받아들인다.
DSSSL(Document Style Semantics and Specification Language)은 포맷팅에 필요한
정보를 지정하지만 포맷터와 같은 처리계를 규정하지는 않는다. 포맷된 문서는
SPDL(Standard Page Description Language)을 사용하여 장치에 의존하지 않는 것으로
기술되고 인쇄장치, 표시장치에 입력된다. 문서 생성계의 몇 단계에서 필요로 하는 폰트
정보는 폰트 기술, 행 렬, 형상 표현으로 구분된다. 문서 표시는 SPDL 문서를 받아들이고
이미징 출력장치 상에 최종 문서를 생성하는데 요구되는 이미지를 생성한다.

? 결  론
  개방 환경에서 멀티미디어 정보를 서로 다른 시스템 간의 효율적인 교환 및 처리를 위한
국제 표준인 SGML의 개념 및 특성, SGML 문서 구성, DTD 생성, SGML 문서 처리 모델
등에 대해 살펴 보았다. 더우기 SGML의 보급을 위해 DTD의 개발이 시급히 요구되고 있
다. 이에 본 논문에서는 DTD의 생성 과정을 실례로 설명하였다.
  SGML의 응용 분야는 자동차와 항공 산업분야, 출판, 원거리 통신, 데이터베이터 등 많
은 분야에서 요구되고 있으며, 세계 여러 나라에서 관련 프로젝트를 수행 중에 있다.
  앞으로 SGML을 실용화 하기 위해 SGML DTD 생성기 및 문서 편집기, SGML 파서,
SGML 시스템 적합성 시험기 등의 구현에 관한 연구가 계속되어야 하며, 하이퍼미이어 문
서 표현을 위한 SGML의 응용인 HyTime(Hypermedia/Timed-based Structuring
Language)과 SPDL, DSSSL 등 관련 표준에 대한 연구가 병행되어야 할 것이다.
이름
암호


>> 관련글
4 sgml에 대해  한준호  1999.04.19  ..251 
  답장 RE: sgml에 대한 문서  적수  1999.04.19  ..260 
  답장 RE: RE: sgml에 대한 문서 - TXT로 변환했어요.  임채필  1999.04.24  ..151 
  목록보기 윗글 아랫글
글쓰기
답장쓰기 수정 삭제
정규표현식 [ 상세 검색 ]
페이지로딩: [ 1.55 초 ] 작업시간: [ 0.09 초 ]

Copyleft 1999-2026 by JSBoard Open Project
Theme Designed by IDOO All right reserved
[TOP]

적수네 동네
+
| 적수네 동네
| 공부방
| 리눅스 잡지 서고
| LSN 소스
| 링크 모음
+---+
게시판
+
| 떠들어보세!
| 질문과 답변
| 새소식과 정보
| 1원짜리 팁?
| 대화방
+---+
칼럼?
+
| 세하 훔쳐보기
| Welcome2nite
| 혜진의 염장판
+---+
리눅스 상표권
+
| 반대 서명란
| 토론 게시판
+---+
GNU
+
| GNU 선언문
| GNU GPL
| GNU 미러 목록
+---+
프로젝트?
+
| 리눅스카운터
| RC5DES
| 실질헌법 제작
+---+
커널 소식
+
| 안정 버젼: 2.4.14
+---+
테마 선택
+
LSN 방송국?
+
| OFF AIR
+---+
회원
+
| 로그인
+---+
[ 적수네 동네 ] [ 리눅스 상표권 독점 반대 ] [ 한글 리눅스 문서 프로젝트 ] [ KrLine ] [ 사랑넷 ] [ Valid HTML 4.0! ] [ SlashDot ] [ Freshmeat ]
Copyleft (C) 1998-2001 Byeong-Chan Kim . License
TIME: 1791054063
System by WYZsoft, HDD by I.O.Linux, Mizi Research, Embryo, WOWLINUX, Domain by SarangNet, Network by KrLine.