본문 바로가기

Development Note

XML 작성하기

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
먼저 XML 을 시작함에 있어서 가장 중요한 것은 XML 선언을 해주는 것이다. XML 선언을 해주는 것의 의미는, 한마디로 "이 문서는 XML 문서를 뜻하는 거야." 라고 알려주는 것이다. 그렇기 때문에 반드시 문서의 가장 첫번째로 선언이 되야 하며, 보통 시작을 하기 전에 주석을 쓴다던가 다른 것을 먼저 선언하는 행위가 이루어 지면 XML 브라우저에서는 거침없이 에러메세지를 내어 놓는다. 따라서 XML 선언이 있기 전에는 절대로 XML 선언을 하지 않아야 한다. 이런 면에서는 HTML 보다 XML 쪽이 훨씬 문법이 엄하다.

XML 선언을 하는 문법을 살펴보면

문법 : <?xml version="버전번호" encoding="인코딩방식" standalone="yes or no"?>

사용예 : <?xml version="1.0" encoding="UTF-8"?>
크게 3가지의 속성들이 있는데, 실제로 실험을 해본 결과로는 encoding, standalone 과 같은 속성이 없어도 version 속성만 가지고 있다면 별 무리 없이 브라우저로 확인이 된다. 인코딩 방식은 HTML 에도 있듯이, 여러가지 인코딩 방식에 대해서 정의를 한 것이다. 하지만 아무리 봐도 standalone 은 파악이 되지 않는다. standalone 이라는 의미를 직역 해보자면, 홀로서기? 정도로 파악이 되는데...

이 standalone이라는 속성은 DTD 문서를 참조 하느냐 안하느냐를 나타내는 속성값이라고 하는데 DTD를 들어본적은 있으나 뭔지는 전혀 모른다. DTD는 나중에 따로 배운다고 하니 얼추 넘어가 보겠다. 하나 알아 둘 점은 yes 인 경우에는 외부 문서를 사용하지 않고, no 인 경우에는 외부 문서를 사용한다고 한다. 속성값을 설정해 주지 않으면 디폴트 값은 no 라고 한다.

DTD 문서의 예제를 사용해서 한번 열어 보았다. 아주 이상한 결과가 나왔다.

Test01.xml

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE booklist SYSTEM "test01dtd.dtd">
<booklist>
    <!-- 책 정보 -->
    <book>
        <title> XML 배워보자 </title>
        <publisher> &pub1;</publisher>
    </book>
</booklist>

Test01dtd.dtd

<?xml version="1.0" encoding="UTF-8"?>
<!ENTITY pub1 "잇힝출판" >

<!ELEMENT booklist (book)* >
<!ELEMENT book (title,publisher) >
<!ELEMENT title (#PCDATA) >
<!ELEMENT publisher (#PCDATA) >
사용자 삽입 이미지 사용자 삽입 이미지


결과는 다름이 아니라, FF에서는 에러가 나고, IE 에서는 제대로 돌아 간다. -_-;; 이유를 모르겠으니 넘어갔지만, 혹여나 아는분이 계신다면, 꼭 알려주시기 바랍니다. 여튼 이렇게 외부 문서를 참조하는 것은 가급적이면 하지 않는 것이 좋아고 하니... -_-; 인코딩 방법에 대해서 나와있는데, 인코딩도 모든 문서들이 일관성을 이루는 것이 좋다고 한다.