B.1. 카탈로그의 작성과 수정

SGML은 식별이름(identifier)을 사용합니다. 식별이름라는 것은, 필요한 정보가 담겨있는 파일의 위치를 상징적으로 가리키고 있는 문자열들입니다.

식별이름에는 공식 식별이름(public identifier)과 시스템 식별이름(system identifier)이 있습니다. 공식 식별이름은 파일에 대한 정보를 규정에 따라 추상적으로 표현합니다. 이를 사용하면 어떤 종류의 시스템에서든지 같은 파일을 가리킬 수가 있습니다. 반면에, 시스템 식별이름은 파일의 위치를 지시하기 위해 시스템 상의 경로명을 그대로 사용하는 것이 보통입니다. 시스템 식별이름은 어떤 특정한 규정에 따르지 않으며, sgml 문서를 처리하는 프로그램에 의해 인식이 가능하기만 하면 됩니다.

공식 식별이름들이 가리키고 있는 파일의 구체적인 위치들은 별개의 파일에 정의되어 있는데, 이 파일을 카탈로그(catalogue)라고 합니다. SGML 문서를 처리하는 프로그램들은 이 카탈로그 파일에 의존해 SGML 문서 상에서 공식 식별이름들을 인식해내고 이들의 의미를 번역해냅니다.

또한, 카탈로그를 이용하면 여러가지 SGML 관련 파일들을 편리한 곳에 넣어두고 일괄적으로 관리할 수 있습니다( 예를 들어, 자신의 홈 디렉토리나, /usr/local/sgml, 그 밖에 어떤 장소라도.. ). 문서를 직접 작성하지 않고 문서의 프로세싱과 "컴파일"만을 하는 주로 하는 경우라 하더라도 이런 기능은 편리한 점이 있습니다.

예 B-1. 카탈로그의 한 예

       -- Catalogue for the Conectiva Styles --            (1)

       OVERRIDE YES
 
       PUBLIC "-//Conectiva SA//DTD books V1.0//EN" "/home/ldp/styles/books.dtd" (2)


       DELEGATE "-//OASIS" "/home/ldp/SGML/dtds/catalog.dtd"

       DOCTYPE BOOK /home/ldp/SGML/dtds/docbook/db31/docbook.dtd
                                                           (3)
       -- EOF -- 
          
(1)
주석. 주석은 "--"로 시작과 끝을 맺습니다.
(2)
공식 식별이름 "-//Conectiva SA//DTD books V1.0//EN"은 시스템 식별이름 /home/ldp/styles/books.dtd 에 해당된다는 뜻입니다.
(3)
파일의 끝을 나타내는 주석입니다.

위에 나타낸 예와 같이 카탈로그 파일이 작성되어 있다면, 다음과 같은 절차를 통해 식별이름과 해당 파일을 연관시키게 됩니다.

  1. 문서 상에서 PUBLIC과 같은 지시어를 우선 인식합니다. 지시어는 뒤따르는 문자열이 식별이름임을 알려줍니다.

  2. 식별이름의 유형을 파악합니다. 위의 경우처럼 PUBLIC이란 지시자에 뒤따르는 식별이름은 공식 식별이름입니다.

  3. 공식 식별이름이 지시하고 있는 파일의 구체적인 경로명을 카탈로그에서 확인합니다.