본문 바로가기
PROGRAM/XML

[본문스크랩] [XML 강좌] 6. XML, 그 첫 번째 예제

by 반화넬 2008. 1. 22.
반응형
[XML 강좌] 6. XML, 그 첫 번째 예제
김은중
2002/04/11
XML을 시작하면서 장황하게 이론만을 설명하니 여러분들 중에는 '실습을 한번 해봤으면~!'이라는 아쉬움을 가지고 있을 것이다. 그래서 이번 강좌에서는 모든 것은 뒤로 한 채, 일단 실습을 해보도록 한다.

필자가 5년 전쯤 개발회사의 막내로 있을 때 - 그 당시만 해도 웹이란 용어가 나와서 웹 프로그래머라는 직업이 이렇게 각광을 받을 줄 아무도 예측을 못했다. 퇴근 시간이 되면 고참들이 상당히 많은 코딩거리를 주고 퇴근을 했던 기억이 난다. 그때만 해도 왜 그렇게 코딩이 싫었는지 모른다.

그러나 몇 년의 세월이 지난 지금 당시에 대략 6개월 정도 했던 고생이 엄청난 밑바탕으로 자리 잡아서 어떤 코드를 보아도 걱정을 하지 않게 되었다.

여기서 본인이 강조하고 싶은 점은 절대 소스를 눈으로 보는 것이 아니라 코딩을 직접 손으로 해볼 것을 강력히 권한다.


이번에 우리가 처음으로 할 실습은 미국 NBA 농구 경기 결과를 XML로 저장해 그 표준화된 자료를 세계 각국으로 전송을 한 후 공용할 수 있도록 처리한다는 기획 아래 간단하게 한 게임의 결과를 XML로 만들어 보려 한다.

<?xml version="1.0" encoding="euc-kr"?>
<!DOCTYPE 학점 SYSTEM "NbaScore.dtd">

<동부지구>
   <Team>
      <Home>애틀란타 호크스</Home>
      <Away>마이애미 히트</Away>
   </Team>

   <Score>
      <QT1>20:27</QT1>
      <QT2>29:27</QT2>
      <QT3>25:20</QT3>
      <QT4>30:19</QT4>
      <TOTAL>104:93</TOTAL>
   </Score>

   <Player>
      <HomePlayer>
         <제이슨테리 포지션="가드">
            <득점>28</득점>
            <리바운드>6</리바운드>
            <어시스트>6</어시스트>
            </제이슨테리>
         <토니쿠코치 포지션="포워드">
            <득점>14</득점>
            <리바운드>5</리바운드>
            <어시스트>9</어시스트>
         </토니쿠코치>
         <디켐브무톰보 포지션="센터">
            <득점>20</득점>
            <리바운드>14</리바운드>
            <어시스트>1</어시스트>
 


         </디켐브무톰보>
      </HomePlayer>

      <AwayPlayer>
         <앤써니메이슨 포지션="포워드">
            <득점>16</득점>
            <리바운드>10</리바운드>
            <어시스트>3</어시스트>
         </앤써니메이슨>
         <팀하더웨이 포지션="가드">
            <득점>15</득점>
            <리바운드>3</리바운드>
            <어시스트>7</어시스트>
         </팀하더웨이>
         <브라이언그랜트 포지션="센터">
            <득점>12</득점>
            <리바운드>11</리바운드>
            <어시스트>1</어시스트>
         </브라이언그랜트>
      </AwayPlayer>

   </Player>

   <GameDay>2001-04-01</GameDay>

</동부지구>

위 문서는 NbaScore.xml이라는 파일이다.

 

이제 처음 코딩한 XML 문서이므로 자세한 스펙이나 문법 등을 알 수가 없다. 이번 실습의 목적은 그냥 '이런게 XML이구나~!' 라고 느끼기만 하면 된다. 다 코딩이 됐다면 이제 이 파일을 여러분들이 임의의 폴더를 만들어서 그 안에 저장을 하기 바란다. NbaScore.xmll이라 저장하는 것을 잊지 말자. 



자신의 브라우저를 열어서 [파일]-[열기]를 클릭한다. 여기서 [찾아보기]를 클릭해 자신의 XML문서(NbaScore.xml)를 찾아온다.



다 되었다면 [확인]을 클릭한다. '결과를 보겠지~!'라고 생각하는 분들은 실망을 느끼겠지만 오류가 발생할 것이다.


 


위 화면의 오류를 잘 보면 "NbaScore.dtd"를 처리하는 데 오류가 발생했다는 메시지이다. 즉 우리는 아직 DTD를 배운 적도 없고 그 문서를 만든 적도 없으므로 그 문서 처리를 할 수 없다는 이야기가 된다.

결론적으로 이야기하면 DTD가 워낙 중요한 것이기에 오류가 날 것임을 알면서 일부러 이 문장을 넣었다. 그래서 여러분께 일단 'DTD란 것이 있구나!'라는 것을 각인시키기 위해서 그런 것이다.

이제 본인의 의도대로 되었으므로 'DTD는 중요한 문서구나!'라고 한 번 주의 깊게 읽어보았다면 더 이상 신경 쓰지 않는다. 해당 부분을 주석처리 하기 위해서 NbaScore.xml 문서로 이동한다.


 
 
각자의 문서에서 위 화면처럼 파란색의 오류가 나는 부분을 삭제하거나 혹은 그냥 두고 주석처리를 한다. 주석으로 처리하면 파서가 파싱을 하다가 해당 부분은 그냥 넘어가기 때문에 오류가 나지 않는다.

주석을 처리하는 방법은 HTML의 주석처리 방법과 같다. 즉 주석으로 처리하고 픈 부분을 로 감싸주면 된다. 아래의 그림을 참조한다.


이렇게 DTD이 주석처리가 되면 우리는 "Valid Document"를 포기해야 한다. "Valid Document"가 뭐냐구요? 자세한 건 다시 설명을 하기로 하고 그냥 "유효한 문서"쯤으로 알고 넘어가도록 한다.

이제 다시 브라우저를 열어서 [파일]-[열기]를 한다.
 


이제 위와 같은 결과가 나온다면 첫 번째 예제는 성공한 것이다. 위와 같이 비록 "Valid Document"는 아니지만, 브라우저에서 실행이 되고 XML의 정해진 문법에 맞았을 때 그런 문서를 "Well-formed Document"라고 한다. 이렇게 우리는 "Well-formed Document"를 한번 실행해 본 것이다. @

 

출처 : ZDNet Korea

반응형