멀티미디어방

docbook 기본 준수사항

벤허 2008. 1. 7. 10:26

미리 알아두기

DocBook은 XML 표준을 따른다.

  DocBook은 XML 표준을 따르는 문서입니다. XML 문서는 다음과 같이 시작해야 합니다.

 
  <?xml version="1.0" encoding="euc-kr"?>  
이렇게 <?로 시작해서 ?>로 끝나는 부분을 PI(Processing Instruction)이라고 합니다. 규약에 따르면 XML 문서가 꼭 이렇게 시작해야 하는 것은 아닙니다. 그러나 어플리케이션에 따라 이렇게 시작하지 않으면 에러를 일으키는 경우도 있으니 가급적 이렇게 시작하는 것이 좋습니다. 특히 한글을 사용해야 하는 경우라면 이곳에 인코딩 정보를 정확히 넣는 것이 중요합니다.

  encoding은 euc-kr과 utf-8 중에 선택할 수 있습니다. euc-kr은 흔히 사용되는 한글 완성형 코드를 뜻합니다. utf-8은 유니코드의 한 형태로 euc-kr에 들어있지 않은 이상한 받침을 가진 한글(아해ㅎ해ㅎ) 같은 것을 표현할 목적이라면 이것을 선택해야 합니다. utf-8을 사용하려면 텍스트 편집기가 또한 이것을 지원해야 합니다.

  또한 모든 SGML/XML 문서에는 문서 형식 선언(Document Type Declaration)이 있어야 합니다.

<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
                  "http://www.docbook.org/xml/4.1.2/docbookx.dtd"> 

  이 선언은 문서가 DocBook DTD 4.1.2 버전에 따른다는 점과 article 구조를 사용하고 있다는 점을 알려주고 있습니다. book 구조를 사용하는 경우라면 article 부분은 book으로 해주면 되겠습니다. 한편 이렇게 문서 형식 선언을 하면 지정된 URL에서 직접 DTD를 읽어오게 됩니다. 따라서 로컬에는 DTD가 깔려있지 않아도 됩니다. 혹시 인터넷에 연결할 수 없는 경우라면 다음과 같이 로컬에 깔려있는 DTD의 위치를 지정해 주면 됩니다.

 <?xml version="1.0" encoding="euc-kr"?>                   
 <!DOCTYPE article SYSTEM "docbkx412/docbookx.dtd">   

XML 문서는 태그를 사용한다.

  SGML/XML 표준을 따르는 문서는 태그를 사용해 작성됩니다. 태그란 꺽쇠(< >)로 구별되는 일종의 조판 기호입니다. 다음은 DocBook에서 가장 기본적인 태그 사용법을 보여줍니다.

 <para> 
   이 사이에 글을 적어 넣습니다.
 </para>

  para는 한 문단을 나타냅니다. <para>는 해당 범위를 여는 태그이며 </para>는 닫는 태그입니다. 한번 열린 태그는 꼭 닫는 태그로 닫아져야 하며, 태그는 소문자로 일관되도록 하는 것이 좋습니다. 태그 사이에서는 줄바꿈을 하거나 띄어쓰기를 여러번 해도 한번 띄어 쓴 효과만을 냅니다.

계층 구조를 표현하기

  XML에서 계층 구조는 태그를 중첩해 사용함으로써 구현됩니다. 다음은 DocBook 문서의 section을 para로 세분화하는 방법을 보여 줍니다.

 <section>
   <title>제목</title>
   <para>
    첫번째 문단입니다.
   </para>
   <para>
    두번째 문단입니다.
   </para>
 </section>

  절(section)은 꼭 제목(title)을 포함하고 있어야 하며 하나 이상의 문단(para)을 가지고 있어야 합니다. 위의 예에서도 한번 열린 태그는 상응하는 닫는 태그가 꼭 따라와야 한다는 점을 알 수 있습니다. 그러나 다음과 같이 태그의 영역이 서로 걸쳐지게 하여서는 안됩니다.

 틀림: <para><important>음냐음냐?</para></important>

  위의 경우에 <para>는 </para>로 닫힌 것처럼 보이고 <important>는 </important>로 닫힌 것처럼 보입니다. 그러나 important와 para의 영역이 서로 걸쳐지면서 구성 요소 간의 계층 관계를 알 수 없게 되어 버렸습니다. important는 중요한 부분을 강조하기 위해 텍스트 중간에 삽입되는 구성요소로서 para의 하위 구조이므로 다음과 같이 para 안으로 포함시켜야 올바르게 됩니다.

 맞음: <para><important>계층구조!</important></para>

닫을 필요가 없는 형태의 태그

  한편, 어떤 경우에는 아래와 같이 닫을 필요가 없는 특별한 형태의 태그도 사용이 가능합니다. xref는 문서 내부의 링크를 걸기 위해 사용되는데, 여는 태그와 닫는 태그 사이에 아무 내용이 들어갈 필요가 없이 태그 자체만이 의미를 갖습니다. SGML과의 호환성을 위해 />로 태그를 닫기 전에 꼭 한칸을 띄워두는 것이 좋습니다.

 <xref linkend="boots-and-shutdowns" />

  다음과 같이 명시적으로 태그를 닫아준다면 SGML과의 호환성 측면에서 더 유리한 점이 있습니다. 그러나 이 방식은 프로그램에 따라 에러를 일으키기도 합니다.

 <xref linkend="boots-and-shutdowns"></xref>
[Warning] 주의

  사실, 이상 열거한 이런 규칙들은 DocBook 뿐만이 아니라 모든 SGML, XML 문서에서 공통적으로 지켜져야 하는 것들입니다. DocBook에서 이 규칙을 지키는 것은 특히 SGML, XML 문서간의 호환성을 유지하기 위해서도 중요합니다.

  그러나 실제로는, 이런 규칙을 엄격히 지키지 않아도 문서를 작성하고 사용하는데 아무 문제가 없을 수도 있습니다. 예를 들어, 대부분의 웹 브라우저는 SGML, XML 규칙에 맞지 않게 작성된 HTML 문서도 군소리 없이 잘 보여줍니다. 하지만 그렇다고 해서 위의 규칙을 무시한다면 언젠가는 모든 문서를 일일이 뜯어 고쳐야하는 고된 노동에 시달리게 될지도 모릅니다.