다음 이전 차례

2. sgml이란 무엇인가?

단순한 텍스트의 나열이 아닌 보기에도 좋고 깨끗한 문서를 만들기 위해 흔히들 워드 프로세서라 불리우는 프로그램을 사용한다. 요즘의 워드프로세서는 대부분 위지위그(눈에 보이는대로 출력물을 보면서 작성하는 방식) 방식을 채용하여 출력하기 전에 문서의 형태를 직접 보며 조작할 수 있어 문서작성의 편안함을 가져다준다. 그러나 동일한 포맷의 장,절 구분으로 나뉘어진 문서를 작성하는데 있어서는 단순한 작업을 반복 해야만 하는 불편함이 있다. 또한 여러 사람으로 나누어 문서를 작성할 경우에는 동일한 포맷을 유지하기가 그리 쉬운 일이 아니다. 마지막으로 해당 문서를 보기 위해서는 반드시 그 워드프로세서 프로그램이 필요하다는 점이 쉽게 문서를 보기에 여간 답답한 점이 아니다.

tex으로 대표되는 문서 포매터(document formatter) 혹은 문서 컴파일러(document compiler)는 위의 워드 프로세서와는 반대의 개념을 가지고 있다고 볼 수 있다. 이런 문서 컴파일러는 위지위그 방식이 아니기 때문에 실제로 출력되는 모습을 볼 수 없다. 태그(tag)라 불리우는 표시자를 이용하여 문서를 꾸미고 다듬는다. 동일한 형태가 반복되어 나올 때 반복되는 작업을 줄여주고 여러 사람이 문서를 나누어 작성할 경우에도 동일한 문서 형태를 유지해 줄 수 있다. 또한 작성은 단순한 텍스트 에디터에서 하는 것이기 때문에 때와 장소를 가리지 않고 작성이 가능하다는 것을 장점으로 들 수 있다. 아래는 tex문서의 예제이다.


\section{리눅스의 장점}
리눅스는 일반적인 다른 OS와 비교하여 다음과 같은 것들을 장점으로
내세울 수 있습니다.

\begin{enumerate}
\item 리눅스는 무료입니다. 리눅스 시스템을 꾸미고 사용하는데는 아무런
비용이 들지 않습니다. FTP를 통해서 리눅스의 모든 프로그램을 구할 수
있습니다.
\item 리눅스의 거의 대부분의 소스가 공개되어 있습니다. 10여년의 세월을
걸치면서 버그를 잡고, 안정성을 확보한 리눅스 시스템의 소스는 누구나
쉽게 얻을 수 있습니다. 

이러한 문서 컴파일러로는 tex이나 groff등이 대표적이며 리눅스의 매뉴얼인 man 형식이나 emacs 등에서 읽을 수 있는 info 형식 역시 문서 컴파일이나 문서 포매팅의 형태를 가지고 있다고 할 수 있다. 그러나 좀 더 유용하게 사용하기 위해서는 이런 다양한 형식이 서로 변환이 되어야 한다. 각각의 문서 포매팅 형태를 바꾸어주는 유틸리티들이 있지만 여전히 여러가지의 태그를 익혀야한다는 불편한 점이 있다. sgml(Standard Generalized Markup Language) 은 이런 여러가지 태그의 표준화 방안이다. 엄격히 말해 sgml은 문서 컴파일러라기 보다는 tex이나 groff등의 태그를 생성해주는 문서 전처리기라 할 수 있다. sgml은 이런 이유로 조판 언어(markup language)라고 불린다. 최근에는 sgml을 확장하여 더욱 유연한 문서를 작성할 수 있도록 해 주는 XML(Extensible Markup Language)이 나왔다. sgml 예제는 차츰 설명하도록 한다.

2.1 왜 sgml을 쓰는가?

위에 언급한 것처럼 sgml은 여러 문서 포매터의 태그를 생성해 주는 역할을 한다. 우리는 sgml 태그를 이용한 하나의 문서로부터 tex, html, gnu info, man, ascii등 다양한 포맷의 문서를 추출할 수 있다. 물론 여기에서 또 가지를 뻗어 나가면 ps나 pdf, dvi등 출력을 위한 여러 다양한 포맷을 얻을 수 있다. 단지 sgml의 태그를 익히는 것 만으로 충분하다.

2.2 그렇다면 sgml 태그는 쉬운가?

절대 그렇지 않다. 여러 태그의 표준이라면 얼마나 많고 다양한 태그를 지원하겠는가? 일반적인 태그는 문서를 장, 절로 구분하는 것에서 시작하여 문서를 꾸미거나 그림을 삽입하거나 인터넷 프로토콜을 연결해 주는 링크등 다양하다. sgml을 쓰기 위한 전용 프로그램도 어렵지 않게 만날 수 있을 정도이다.

2.3 그래도 sgml을 쓰라고 하는 이유는 무엇인가?

우리가 쓰려는 sgml은 쉽기 때문이다. 이 다양한 sgml 태그 중 특정 양식의 문서를 만들 때 쓰는 태그는 한정될 것이다. 이런 한정된 태그를 쓸 수 있도록 해 놓은 양식을 DTD라 하며 이것은 전체 sgml의 부분집합이 된다. 우리가 쓰는 DTD는 linuxdoc DTD이다. 여기에 있는 태그는 그 수가 적으며 사용하기에도 쉽다. linuxdoc DTD는 sgml-tools를 이용해 구현되며 현재 ftp://ftp.kr.FreeBsd.ORG/pub/users/cjh/sgml-tools-ko/에서 구할 수 있다. 특별히 우리가 쓰려는 프로그램은 한글이 가능해야 하므로 위의 링크에서 구하기 바란다. 최준호님께서 수고하여 한글 패치가 되어있다.

linuxdoc DTD는 리눅스 HOWTO 문서와 그밖의 문서의 표준 포맷이며 이 형식을 이용하여 여러 HOWTO 문서, mini HOWTO 문서등이 번역되었다. 우리나라에서도 번역본 HOWTO 문서의 표준포맷으로 sgml을 권장하고 있으며 본인 역시 리눅스 한글문서 프로젝트에 갔다가 거기 관리자인 권순선님의 권유로 sgml에 빠져들게 되었다.


다음 이전 차례