>> Edit article
이름
메일
제목
패스워드
: : 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 등 관련 표준에 대한 연구가 병행되어야 할 것이다.
Copyleft
1999-2026 by
JSBoard Open Project
Theme Designed by
IDOO
All right reserved