이글루스 API 를 설명드리기 전에 XML-RPC라는 용어에 대해 먼저 설명드리겠습니다.

XML-RPC는 서로 다른 OS, 서로 다른 프로그래밍 언어에서도 웹을 통해서 데이터를 주고 받을 수 있도록 해주는 표준 통신규약(protocol)을 의미합니다.527
(그림출처 : XML-RPC Home Page)

그림에서 보시다시피 XML-RPC의 표준 규약을 지원하는 곳이라면 어떤 환경이든 어떤 프로그래밍 언어든 상관없이 웹을 통하여 XML 형식으로 데이터 교환이 가능합니다.

XML-RPC 중 특히 블로깅과 관련된 기능을 지원하는 것을 blogging API 라고 말하며, 자신의 블로그에 접속하지 않고도 글을 등록하거나 등록된 글을 수정/삭제 등의 글 관리까지 가능합니다.

예를 들어 문서 제작을 위해 자주 사용하는 툴이 ‘MS Word’ 라면 워드에서 글을 작성하여 워드 내의 기능을 이용하여 이글루스로 글 등록이 가능해 지는 것입니다. 물론 워드에서 XML-RPC를 지원한다면 말이죠.

이글루스 API 를 설명드리기 전에 XML-RPC라는 용어에 대해 먼저 설명드리겠습니다.

XML-RPC는 서로 다른 OS, 서로 다른 프로그래밍 언어에서도 웹을 통해서 데이터를 주고 받을 수 있도록 해주는 표준 통신규약(protocol)을 의미합니다.527
(그림출처 : XML-RPC Home Page)

그림에서 보시다시피 XML-RPC의 표준 규약을 지원하는 곳이라면 어떤 환경이든 어떤 프로그래밍 언어든 상관없이 웹을 통하여 XML 형식으로 데이터 교환이 가능합니다.

XML-RPC 중 특히 블로깅과 관련된 기능을 지원하는 것을 blogging API 라고 말하며, 자신의 블로그에 접속하지 않고도 글을 등록하거나 등록된 글을 수정/삭제 등의 글 관리까지 가능합니다.

예를 들어 문서 제작을 위해 자주 사용하는 툴이 ‘MS Word’ 라면 워드에서 글을 작성하여 워드 내의 기능을 이용하여 이글루스로 글 등록이 가능해 지는 것입니다. 물론 워드에서 XML-RPC를 지원한다면 말이죠.

http://m.blog.naver.com/PostView.nhn?blogId=hopefuldream&logNo=140110566940 에서 참조

XML은 익히 많이 들어봐서 대충~ 무엇이다라는건 알고 있지만 확실히 무엇인지..
DTD는 무엇인지 스키마는 무엇인지 잘 모르는 분들이 계실겁니다.

XML은 정해진 데이터 표현법이라고 볼 수 있습니다. 생긴모습은
<booklist>
    <book id=”스트럿츠1”>
        <저자>홍길동</저자>
        <가격>10000원</가격>
    </book>
    <book id=”스프링”>
        <저자>김갑순</저자>
        <가격>20000원</가격>
    </book>
</booklist>
이렇게 생겼습니다.. HTML과도 비슷하게 생긴 도데체 이게 뭐 어쨌다는거냐…라고 물으신다면..
제가 상상한 다음과 같은 이야기를 해야할것 같습니다.

서로다른 업체 혹은 프로그램끼리 데이터를 주고받는 방법은 사실 매우 많습니다. 예를들어, 김개발씨가 통합서점프로그램을 만들면서
홍길동씨에게 이렇게 말합니다.
“야, 길동아. 나 이번에 통합서점프로그램 만드는 중이니까, 너네 서점 책목록좀 줘봐. 내가 정해준 형태로 줘야 프로그램에서
분석해 쓰거든? 내가 정한 형태로 메모장에 작성해서 텍스트 형태로 줘”
이렇게 말합니다. 김개발씨는 텍스트문서에

책=스트럿츠, 스프링, 아이바티스
가격=10000, 20000, 30000
저자=홍길동, 김갑순, 슈아

이런식으로 써서 주면, 프로그램에서 파일을 읽어와 데이터를 파싱해서 각각 알맞게 DB에 넣도록 프로그램을 짰던 것입니다.
그리고 이번엔 금당무씨에게 똑같이 말했습니다.
“당무야.. 나 이번에 통합서점프로그램 만드는 중인데…”
그런데 이 당무씨는 순순히 OK 하지 않고 반항을 합니다.
“야임마~ 나 이미 우리 서점프로그램에서 쓰는 데이터 형식 있으니까 그거 갔다가 니가 알아서해라”
그리고선
책{스트럿츠, 홍길동, 10000}
책{스프링, 김갑순, 20000}
이런 형식의 텍스트문서를 던져 줍니다…

무슨 이야기 하는지 아실겁니다. 데이터를 주고받을때 모두 똑같은 형식으로 주고받으면 … 각 프로그램마다 파싱하는 부분을
따로 만들 필요가 없겠지요. 그런데 데이터형식을 회사끼리도 아니고 전세계인이 똑같은 방식으로 만들어 주고받는다??
이게 가능한가?? 가능합니다. XML 이 그런 용도로 쓰입니다.

그렇다면 데이터 주고받을려고 XML만들었나? 저는 그렇다고 생각합니다. 데이터 주고받을일 없으면.. 나혼자 개발하고 혼자 지지고볶고
다 한다면 XML따위는 필요 없다고 생각합니다. 나 혼자 꼴리는대로 데이터 주고받게 만들면 그만이고..
실제 흔히 학원에서 자바 메신져 프로그램 만들기를 마지막 과제로 하는데…
이때 메신져간 데이터를 주고받는 형식을 보면 개발자 맘대로 정하는 경우가 많습니다.

그럼 그 XML 은 어떻게 만드냐??? 그냥 메모장 열어서 다짜고짜
<booklist>
    <book>
    </book>
</booklist>
이렇게 만들고 확장자 xml로 저장하면 그냥 XML문서가되는거냐?? 라고 한다면 네.. 그렇습니다…
특수문자에 대한 규칙이나.. “<” 다음에 공백이 와서는 안된다는 등의 기초적인 규칙만 지켜주면 그게 XML 입니다.
안에 들어가는 booklist 등의 문자를 내맘대로 만들수가 있는 겁니다.
<책목록>
  <책제목></책제목>
</책목록>
이렇게 만들어도 이것도 맞는 XML 인 겁니다.  이렇게 내 맘대로 만들어서 상대방한테 여기 맞춰 데이터 달라고 하면 되는거고
아니면 맘대로 이런 XML형식으로 데이터 줄테니까 맘대로 써라.. 할수도 있는 것입니다.

이렇게 간단하면 DTD는 뭐고 스키마는 뭐냐…
결론은 대중성이라고 생각합니다… 즉, 내가 만든 프로그램을 홍길동씨도 쓰고 김갑순씨도 쓰고 미국에사는 제임스씨도 쓴다는것이죠.
내가 분명
<책목록>
  <책제목></책제목>
</책목록>
이런식으로 데이터를 달라고 했는데, 오지마을에사는 김순덕씨는
<책리스트>
  <책타이틀></책타이틀>
</책타이틀>
이렇게 주는겁니다. 이런사람이 안생길까요? 절대로 생깁니다. 특히 공개된 대중적인 프로그램이라면..
예를들어 RSS 같은경우 RSS 형식에 맞게 데이터를 표현해야 RSS리더 프로그램에서 RSS를 읽습니다.
그런데 아랫층사는 박판돌씨는 그냥 멋대로 XML을 만들고 RSS리더 프로그램에서 RSS를 읽히려고 합니다.

그래서 아예 내가 원하는대로 XML을 표현하게 규제를 해합니다.. 그게 DTD, 스키마 입니다…
DTD 가 최초 XML 형식을 정의하는 언어였는데 그게 개선된것이 스키마 구요.. 둘다 목표는 같은겁니다…
데이터정의언어… 왜? 규제할라고.김순덕씨같은 사람들때문에…

에이..난 대중에 공개할일도 없고 개발자는 나 혼자인데요???
그럼 DTD고 스키마고 나발이고간에 만들필요 없습니다. 그냥 XML문서 내 맘대로 만들고 프로그램에서 돌리면 됩니다.

그럼 DTD나 스키마 쓴거랑 안쓴거랑 어떻게 구분하고 규제하고 하는가???

XML문서의 초기부분에..
<?xml version=”1.0” encoding=”euc-kr” ?>
<booklist>
    <book>….
이렇게만 쓰면.. 규제고 뭐고 하는거 없고 그냥 내맘대로 XML형식에만 어긋나지 않게 만들면 됩니다만…
<?xml version=”1.0” encoding=”euc-kr” ?>
<booklist xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
                      xsi:noNamespaceSchemaLocation=”test.xsd”>
이렇게 덧붙여서 시작하면..test.xsd 에서 선언한대로 xml 문서를 만들어야 합니다… 틀리면…
XML문서를 읽어들이는 프로그램의 파서가 에러를 내뱉습니다..
XML문서를 읽어들이는 프로그램으로 우리는 주로 인터넷 익스플로러를 사용하지요… 이 인터넷 익스플로러 안에
XML을 파싱하는 프로그램이 내장되어 있습니다.. 요놈이 “에러야!!크흑!!!!컥!!!” 하면서 에러를 뱉어냅니다..

http://m.blog.naver.com/PostView.nhn?blogId=hopefuldream&logNo=140110566940 에서 참조

XML은 익히 많이 들어봐서 대충~ 무엇이다라는건 알고 있지만 확실히 무엇인지..
DTD는 무엇인지 스키마는 무엇인지 잘 모르는 분들이 계실겁니다.

XML은 정해진 데이터 표현법이라고 볼 수 있습니다. 생긴모습은
<booklist>
    <book id=“스트럿츠1”>
        <저자>홍길동</저자>
        <가격>10000원</가격>
    </book>
    <book id=“스프링”>
        <저자>김갑순</저자>
        <가격>20000원</가격>
    </book>
</booklist>
이렇게 생겼습니다.. HTML과도 비슷하게 생긴 도데체 이게 뭐 어쨌다는거냐…라고 물으신다면..
제가 상상한 다음과 같은 이야기를 해야할것 같습니다.

서로다른 업체 혹은 프로그램끼리 데이터를 주고받는 방법은 사실 매우 많습니다. 예를들어, 김개발씨가 통합서점프로그램을 만들면서
홍길동씨에게 이렇게 말합니다.
“야, 길동아. 나 이번에 통합서점프로그램 만드는 중이니까, 너네 서점 책목록좀 줘봐. 내가 정해준 형태로 줘야 프로그램에서
분석해 쓰거든? 내가 정한 형태로 메모장에 작성해서 텍스트 형태로 줘”
이렇게 말합니다. 김개발씨는 텍스트문서에

책=스트럿츠, 스프링, 아이바티스
가격=10000, 20000, 30000
저자=홍길동, 김갑순, 슈아

이런식으로 써서 주면, 프로그램에서 파일을 읽어와 데이터를 파싱해서 각각 알맞게 DB에 넣도록 프로그램을 짰던 것입니다.
그리고 이번엔 금당무씨에게 똑같이 말했습니다.
“당무야.. 나 이번에 통합서점프로그램 만드는 중인데…”
그런데 이 당무씨는 순순히 OK 하지 않고 반항을 합니다.
“야임마~ 나 이미 우리 서점프로그램에서 쓰는 데이터 형식 있으니까 그거 갔다가 니가 알아서해라”
그리고선
책{스트럿츠, 홍길동, 10000}
책{스프링, 김갑순, 20000}
이런 형식의 텍스트문서를 던져 줍니다…

무슨 이야기 하는지 아실겁니다. 데이터를 주고받을때 모두 똑같은 형식으로 주고받으면 … 각 프로그램마다 파싱하는 부분을
따로 만들 필요가 없겠지요. 그런데 데이터형식을 회사끼리도 아니고 전세계인이 똑같은 방식으로 만들어 주고받는다??
이게 가능한가?? 가능합니다. XML 이 그런 용도로 쓰입니다.

그렇다면 데이터 주고받을려고 XML만들었나? 저는 그렇다고 생각합니다. 데이터 주고받을일 없으면.. 나혼자 개발하고 혼자 지지고볶고
다 한다면 XML따위는 필요 없다고 생각합니다. 나 혼자 꼴리는대로 데이터 주고받게 만들면 그만이고..
실제 흔히 학원에서 자바 메신져 프로그램 만들기를 마지막 과제로 하는데…
이때 메신져간 데이터를 주고받는 형식을 보면 개발자 맘대로 정하는 경우가 많습니다.

그럼 그 XML 은 어떻게 만드냐??? 그냥 메모장 열어서 다짜고짜
<booklist>
    <book>
    </book>
</booklist>
이렇게 만들고 확장자 xml로 저장하면 그냥 XML문서가되는거냐?? 라고 한다면 네.. 그렇습니다…
특수문자에 대한 규칙이나.. “<” 다음에 공백이 와서는 안된다는 등의 기초적인 규칙만 지켜주면 그게 XML 입니다.
안에 들어가는 booklist 등의 문자를 내맘대로 만들수가 있는 겁니다.
<책목록>
  <책제목></책제목>
</책목록>
이렇게 만들어도 이것도 맞는 XML 인 겁니다.  이렇게 내 맘대로 만들어서 상대방한테 여기 맞춰 데이터 달라고 하면 되는거고
아니면 맘대로 이런 XML형식으로 데이터 줄테니까 맘대로 써라.. 할수도 있는 것입니다.

이렇게 간단하면 DTD는 뭐고 스키마는 뭐냐…
결론은 대중성이라고 생각합니다… 즉, 내가 만든 프로그램을 홍길동씨도 쓰고 김갑순씨도 쓰고 미국에사는 제임스씨도 쓴다는것이죠.
내가 분명
<책목록>
  <책제목></책제목>
</책목록>
이런식으로 데이터를 달라고 했는데, 오지마을에사는 김순덕씨는
<책리스트>
  <책타이틀></책타이틀>
</책타이틀>
이렇게 주는겁니다. 이런사람이 안생길까요? 절대로 생깁니다. 특히 공개된 대중적인 프로그램이라면..
예를들어 RSS 같은경우 RSS 형식에 맞게 데이터를 표현해야 RSS리더 프로그램에서 RSS를 읽습니다.
그런데 아랫층사는 박판돌씨는 그냥 멋대로 XML을 만들고 RSS리더 프로그램에서 RSS를 읽히려고 합니다.

그래서 아예 내가 원하는대로 XML을 표현하게 규제를 해합니다.. 그게 DTD, 스키마 입니다…
DTD 가 최초 XML 형식을 정의하는 언어였는데 그게 개선된것이 스키마 구요.. 둘다 목표는 같은겁니다…
데이터정의언어… 왜? 규제할라고.김순덕씨같은 사람들때문에…

에이..난 대중에 공개할일도 없고 개발자는 나 혼자인데요???
그럼 DTD고 스키마고 나발이고간에 만들필요 없습니다. 그냥 XML문서 내 맘대로 만들고 프로그램에서 돌리면 됩니다.

그럼 DTD나 스키마 쓴거랑 안쓴거랑 어떻게 구분하고 규제하고 하는가???

XML문서의 초기부분에..
<?xml version=“1.0” encoding=“euc-kr” ?>
<booklist>
    <book>….
이렇게만 쓰면.. 규제고 뭐고 하는거 없고 그냥 내맘대로 XML형식에만 어긋나지 않게 만들면 됩니다만…
<?xml version=“1.0” encoding=“euc-kr” ?>
<booklist xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
                      xsi:noNamespaceSchemaLocation=“test.xsd”>
이렇게 덧붙여서 시작하면..test.xsd 에서 선언한대로 xml 문서를 만들어야 합니다… 틀리면…
XML문서를 읽어들이는 프로그램의 파서가 에러를 내뱉습니다..
XML문서를 읽어들이는 프로그램으로 우리는 주로 인터넷 익스플로러를 사용하지요… 이 인터넷 익스플로러 안에
XML을 파싱하는 프로그램이 내장되어 있습니다.. 요놈이 “에러야!!크흑!!!!컥!!!” 하면서 에러를 뱉어냅니다..

http://office.microsoft.com/ko-kr/infopath-help/HA001106496.aspx 에서 참조

초보자를 위한 XML 설명

모두 표시모두 표시
작성자: Colin Wilcox

적용 대상
Microsoft Office 2003
XML(Extensible Markup Language)에 대해 들어 보았을 것입니다. 조직에서 XML을 사용해야 하는 여러 가지 이유에 대해서도 들어 보았을 것입니다. 그러나 XML이란 정확히 무엇일까요? 이 문서에서 XML의 기본 사항 즉, 정의와 작동 방법에 대해 설명할 것입니다. 이 문서를 읽은 후에는 IT 부서의 XML 전문가와 전문적인 수준의 대화를 나눌 수 있게 될 것입니다.

XML에 대한 자세한 내용은 이 문서 끝 부분의 링크를 통해 추가 정보를 볼 수 있습니다. 전문가가 아니더라도 XML의 정의, 작동 방법 그리고 XML로 무엇을 할 수 있는지 이해할 수 있습니다.

마크업과 태그에 대한 개요
사람들은 수세기 동안 문서를 만들어 왔으며 그 만큼 오랫동안 자신의 문서에 표시(mark up)를 해 왔습니다. 예를 들면 학교 선생님들은 항상 학생들의 시험지에 표시를 합니다. 이를 통해 학생들에게 단락을 옮기고, 문장의 명확하게 만들고, 틀린 철자를 고치라고 지시합니다. 문서에 표시함으로써 텍스트의 구조, 의미 및 시각적 모양을 조정하고 변경하게 됩니다. Microsoft Office Word의 변경 내용 추적 기능을 사용한 적이 있다면 컴퓨터를 이용한 표시 작업을 수행해 본 적이 있는 것입니다.

컴퓨터 작업에서 “문서에 표시하는 것”이 “마크업”으로 발전했습니다. 마크업이란 태그(때로는 토큰이라고도 함)라고 하는 코드를 사용하여 데이터의 구조와 시각적 모양 그리고 XML의 경우 데이터의 의미를 정의하는 프로세스를 말합니다.

이 문서의 HTML 코드도 현재 사용되고 있는 컴퓨터 마크업의 좋은 예입니다. Internet Explorer에서 이 페이지를 마우스 오른쪽 단추로 클릭하고 소스 보기를 클릭하여 이 문서를 탐색하면 일반 텍스트와 <p> 및 <h2>같은 HTML(Hypertext Markup Language) 태그가 혼합되어 있는 것을 보게 될 것입니다. HTML 문서와 XML 문서 안에 있는 태그는 꺽쇠 괄호로 둘러 싸여 있어 알아보기가 쉽습니다. 이 문서의 소스 코드에서 HTML 태그는 각 단락의 시작과 끝을 정의하고 각 이미지의 위치를 표시하는 등의 여러 가지 작업을 수행합니다.

XML 문서에도 태그가 들어 있지만 그 점만 빼고 나머지는 전혀 다릅니다. 다음과 같은 차이가 있습니다.

HTML은 데이터의 모양을 정의할 뿐입니다. 즉 표시 언어일 뿐입니다.
XML은 데이터의 구조와 의미를 설명합니다. 데이터의 구조와 의미를 설명하는 태그를 사용하면 다양한 방법으로 데이터를 재사용할 수가 있습니다. 예를 들어 많은 양의 영업 데이터를 갖고 있을 때 각 항목이 명확하게 식별되어 있으면 영업 보고서에 필요한 항목만 로드하고 다른 항목은 회계 데이터베이스로 로드할 수 있습니다.
HTML은 모든 사용자가 공유하는 미리 정의된 태그 세트만 사용합니다.
XML은 데이터와 그 데이터의 구조를 설명하는 데 필요하다면 어떠한 태그도 만들 수 있습니다. 예를 들어 애완 동물에 대한 정보를 저장하고 공유해야 할 경우에는 다음과 같은 XML 코드를 만들 수 있습니다.

<?xml version=”1.0”?>
<고양이>
  <이름>나비</이름>
  <품종>샴</품종>
  <나이>6</나이>
  <중성화>예</중성화>
  <발톱 제거>아니요</발톱 제거>
  <등록 번호>Izz138bod</등록 번호>
  <소유자>이강주</소유자>
</고양이>
XML 태그를 사용하면 지금 보고 있는 것이 어떤 종류의 데이터인지 정확히 알 수 있습니다. 예를 들면 이것이 고양이에 대한 데이터임을 알게 되면 고양이의 이름과 나이 등을 쉽게 알 수 있습니다. 거의 모든 데이터 구조를 정의하는 태그를 만들 수 있다는 점이 XML을 “확장 가능(extensible)”하게 만들어 줍니다.

그러나 이 코드 예제의 태그와 HTML 파일의 태그를 혼동하지 마십시오. 예를 들어 이 XML 구조를 HTML 파일에 붙여 넣고 브라우저에서 이 파일을 보면 결과는 다음과 같습니다.

나비 샴 6 예 아니요 Izz138bod 이강주

브라우저에서는 XML 태그가 무시되고 데이터만 표시됩니다.

잘 구성된 데이터에 대한 참고 사항
IT 부서의 누군가가 “잘 구성된” XML에 대해 말하는 것을 들었을 것입니다. 잘 구성된 XML 파일은 XML을 제어하는 매우 엄격한 규칙 세트를 준수합니다. 파일이 그러한 규칙을 준수하지 않으면 XML이 작동을 중지합니다. 예를 들면 앞의 코드 예제에서 모든 여는 태그는 닫는 태그와 쌍을 이루고 있어 잘 구성된 데이터에 관한 규칙 중 하나를 준수하고 있습니다. 이 중 한 태그를 제거하고 Office 프로그램 중 하나에서 이 파일을 열려고 하면 오류 메시지가 나타나고 프로그램이 파일 사용을 중지시킵니다.

잘 구성된 XML을 만드는 규칙은 어렵지 않지만 반드시 알아야 할 필요는 없습니다. 그러나 데이터가 잘 구성된 경우에만 프로그램과 시스템 간에 XML 데이터를 공유할 수 있습니다. XML 파일을 열 수 없다면 파일이 잘 구성되지 않았기 때문일 수도 있습니다.

XML은 또한 플랫폼에 독립적입니다. XML을 사용하도록 구축된 프로그램은 하드웨어나 운영 체제에 관계없이 XML 데이터를 읽고 처리할 수 있습니다. 예를 들어 올바른 XML 태그를 사용한다면 데스크톱 프로그램을 사용하여 메인프레임 컴퓨터의 데이터를 열고 작업할 수 있습니다. 그리고 XML 데이터 본문을 누가 만들었는지에 관계없이 Access, Word, InfoPath™ 및 Excel 등 여러 가지 Microsoft Office 2003 프로그램에서 같은 데이터에 대해 작업할 수 있습니다. XML은 이렇게 이식성이 높기 때문에 데이터베이스와 사용자 데스크톱 간에 데이터를 교환하기 위한 가장 인기있는 기술 중 하나가 되었습니다.

다른 프로그램에서 사용하는 XML

XML 시스템은 일반적으로 태그가 지정되고 잘 구성된 데이터 외에 두 가지 추가 구성 요소인 스키마와 변환도 사용합니다. 다음 섹션에서 이러한 추가 구성 요소가 작동하는 방법을 설명할 것입니다.

스키마에 대한 개요
용어를 두려워 하지 마십시오. 스키마란 XML 데이터에 어떤 것은 상주할 수 있고 어떤 것은 상주할 수 없는지에 대한 규칙을 포함하고 있는 XML 파일일 뿐입니다. 스키마 파일은 보통 .xsd라는 파일 이름 확장명을 사용하는 반면에 XML 데이터 파일은 .xml이라는 확장명을 사용합니다.

프로그램에서는 스키마를 통해 데이터의 유효성을 검사할 수 있습니다. 스키마는 데이터를 구조화하고 데이터를 만든 이와 그 밖의 다른 사용자들이 데이터를 이해할 수 있도록 하는 기초가 됩니다. 예를 들어 사용자가 날짜 필드에 텍스트를 입력하는 것처럼 올바르지 않은 데이터를 입력하면 프로그램이 사용자가 올바른 데이터를 입력하라는 내용의 메시지를 표시할 수 있습니다. XML 파일의 데이터가 해당 스키마의 규칙을 준수하는 한 XML을 지원하는 모든 프로그램이 이 스키마를 사용하여 데이터를 읽고, 해석하고, 처리할 수 있습니다. 예를 들면 아래의 그림과 같이 Office Excel 2003과 Office Word 2003 모두 고양이 스키마와 비교하여 <고양이> 데이터의 유효성을 검사할 수 있습니다.

응용 프로그램은 스키마를 통해 XML 데이터를 공유합니다.

스키마는 복잡해질 수 있으며 스키마를 만드는 방법은 본 문서에서 다루지 않습니다. IT 부서를 통해 그 방법을 알 수도 있습니다. 그러나 스키마의 형태를 알면 도움이 될 것입니다. 아래의 스키마는 <고양이> … </고양이> 태그 세트에 대한 규칙을 정의합니다.

<xsd:element name=”고양이”> 
  <xsd:complexType> 
    <xsd:sequence>
      <xsd:element name=”이름” type=”xsd:string”/>
      <xsd:element name=”품종” type=”xsd:string”/>
      <xsd:element name=”나이” type=”xsd:positiveInteger”/>
      <xsd:element name=”중성화” type=”xsd:boolean”/>
      <xsd:element name=”발톱 제거” type=”xsd:boolean”/>
      <xsd:element name=”등록 번호” type=”xsd:string”/>
      <xsd:element name=”소유자” type=”xsd:string”/>       
    </xsd:sequence>
  </xsd:complexType>
</xsd:element>
예제에 나와 있는 것을 모두 이해할 필요는 없습니다. 다음 사항에 대해서만 유의하십시오.

예제 스키마에 나와 있는 직선 항목을 선언이라고 합니다. 동물에 대해 색상이나 표식 같은 추가 정보가 필요할 경우 IT 부서에서 스키마에 선언을 추가합니다. 업무 필요 사항이 발전함에 따라 XML 시스템을 변경할 수 있습니다.
선언을 사용하면 데이터 구조를 훨씬 잘 제어할 수 있습니다. 예를 들어 <xsd:sequence> 선언은 <이름> 및 <품종> 같은 태그가 앞의 예제에 나와 있는 순서대로 와야 함을 의미합니다. 선언은 또한 사용자가 입력할 수 있는 데이터 종류도 제어할 수 있습니다. 예를 들어 앞에 나와 있는 스키마는 고양이의 나이에 대해 양수를 필요로 하고 ALTERED 태그와 DECLAWED 태그에 대해서는 부울(TRUE 또는 FALSE) 값을 필요로 합니다.
XML 파일의 데이터가 스키마에서 제공하는 규칙을 준수하면 그 데이터를 유효하다고 말합니다. XML 데이터 파일을 스키마와 비교하여 검사하는 프로세스를 유효성 검사라고 합니다. 스키마를 사용할 경우 장점은 데이터 손상을 막는 데 도움이 된다는 것입니다. 또한 문제가 발생하면 XML이 즉시 중지되기 때문에 손상된 데이터를 쉽게 찾을 수 있습니다.
변환에 대한 개요
앞에서 설명한 것처럼 XML은 데이터를 사용하거나 재사용하기 위한 강력한 방법도 제공합니다. 데이터 재사용 메커니즘을 XSLT(Extensible Stylesheet Language Transformation)라고 하거나 줄여서 변환(Transform)이라고 합니다. 실제로 변환 떄문에 XML에 흥미를 갖게 될 수도 있습니다. 예를 들어 스키마와 비교하여 데이터 파일의 유효성을 검사한 후 Word 2003에서 데이터를 마케팅 브로슈어로 만드는 변환을 적용하고 Excel 2003에서 다른 변환을 적용하여 영업 보고서를 만들 수 있습니다.

또한 사용자나 IT 부서에서도 변환을 사용하여 데이터베이스 같은 백 엔드 시스템 간에 데이터를 교환할 수 있습니다. 예를 들어 데이터베이스 A가 영업 부서에 적합한 표 구조로 영업 데이터를 저장한다고 생각해 보십시오. 데이터베이스 B는 회계 부서에 맞게 조정된 표 구조로 수익 및 비용 데이터를 저장합니다. 데이터베이스 B는 변환을 사용하여 A로부터 데이터를 받아서 올바른 표에 이 데이터를 기록합니다.

데이터 파일, 스키마 및 변환의 조합이 기본 XML 시스템을 구성합니다. 아래의 그림은 이러한 시스템의 일반적 작동 방식을 보여 줍니다. 데이터 파일은 스키마와 비교하여 유효성이 검사된 다음 변환에 의해 여러 가지 유용한 방법으로 렌더링됩니다. 이 경우 변환은 데이터를 웹 페이지의 표로 배포합니다.

스키마와 변환이 적용된 기본 XML 파일

아래의 코드 예제는 변환을 작성하는 한 가지 방법을 보여 줍니다. 또한 <고양이> 데이터를 웹 페이지의 표로 로드합니다. 그 밖에 예제의 요지는 변환을 작성하는 방법을 보여 주려는 것이 아니고 변환이 사용할 수 있는 한 가지 양식을 보여 주려는 것입니다.

<?xml version=”1.0”?>
<xsl:stylesheet version=”1.0”>
<TABLE>
  <TR>
    <TH>이름</TH>
    <TH>품종</TH>
    <TH>나이</TH>
    <TH>중성화</TH>
    <TH>발톱 제거</TH>   
    <TH>등록 번호</TH>
    <TH>소유자</TH>
  </TR>
  <xsl:for-each select=”고양이”>
  <TR ALIGN=”LEFT” VALIGN=”TOP”>
    <TD>
      <xsl:value-of select=”이름”/>
    </TD>
    <TD>
      <xsl:value-of select=”품종”/>
    </TD>
    <TD>
      <xsl:value-of select=”나이”/>
    </TD>
    <TD>
      <xsl:value-of select=”중성화”/>
    </TD>
    <TD>
      <xsl:value-of select=”발톱 제거”/>
    </TD>
    <TD>
      <xsl:value-of select=”등록 번호”/>
    </TD>
    <TD>
      <xsl:value-of select=”소유자”/>
    </TD>
  </TR>
</xsl:for-each>
</TABLE>
이 예제는 한 종류의 변환이 코딩된 모습을 보여 주지만 일반 영어로 된 데이터에서 필요한 사항을 설명할 뿐입니다. 예를 들어 IT 부서로 가서 특정 지역에 대한 지난 2년 간의 영업 데이터를 인쇄해야 하는데 “이런 형태로 해주십시오”라고 말할 수 있습니다. 그러면 IT 부서에서는 그러한 작업을 수행하기 위한 변환을 작성(또는 변경)할 수 있습니다.

Microsoft와 숫자가 늘어나고 있는 기타 공급업체가 모든 종류의 작업에 대한 변환을 만들고 있기 때문에 더욱더 편리해지는 추세입니다. 앞으로는 사용자의 필요에 맞는 변환을 다운로드하거나 목적에 맞게 쉽게 조정할 수 있을 것입니다. 즉 시간이 지나면 더 저렴한 비용으로 XML을 사용할 수 있을 것입니다.

http://office.microsoft.com/ko-kr/infopath-help/HA001106496.aspx 에서 참조

초보자를 위한 XML 설명

모두 표시모두 표시
작성자: Colin Wilcox

적용 대상
Microsoft Office 2003
XML(Extensible Markup Language)에 대해 들어 보았을 것입니다. 조직에서 XML을 사용해야 하는 여러 가지 이유에 대해서도 들어 보았을 것입니다. 그러나 XML이란 정확히 무엇일까요? 이 문서에서 XML의 기본 사항 즉, 정의와 작동 방법에 대해 설명할 것입니다. 이 문서를 읽은 후에는 IT 부서의 XML 전문가와 전문적인 수준의 대화를 나눌 수 있게 될 것입니다.

XML에 대한 자세한 내용은 이 문서 끝 부분의 링크를 통해 추가 정보를 볼 수 있습니다. 전문가가 아니더라도 XML의 정의, 작동 방법 그리고 XML로 무엇을 할 수 있는지 이해할 수 있습니다.

마크업과 태그에 대한 개요
사람들은 수세기 동안 문서를 만들어 왔으며 그 만큼 오랫동안 자신의 문서에 표시(mark up)를 해 왔습니다. 예를 들면 학교 선생님들은 항상 학생들의 시험지에 표시를 합니다. 이를 통해 학생들에게 단락을 옮기고, 문장의 명확하게 만들고, 틀린 철자를 고치라고 지시합니다. 문서에 표시함으로써 텍스트의 구조, 의미 및 시각적 모양을 조정하고 변경하게 됩니다. Microsoft Office Word의 변경 내용 추적 기능을 사용한 적이 있다면 컴퓨터를 이용한 표시 작업을 수행해 본 적이 있는 것입니다.

컴퓨터 작업에서 “문서에 표시하는 것"이 "마크업"으로 발전했습니다. 마크업이란 태그(때로는 토큰이라고도 함)라고 하는 코드를 사용하여 데이터의 구조와 시각적 모양 그리고 XML의 경우 데이터의 의미를 정의하는 프로세스를 말합니다.

이 문서의 HTML 코드도 현재 사용되고 있는 컴퓨터 마크업의 좋은 예입니다. Internet Explorer에서 이 페이지를 마우스 오른쪽 단추로 클릭하고 소스 보기를 클릭하여 이 문서를 탐색하면 일반 텍스트와 <p> 및 <h2>같은 HTML(Hypertext Markup Language) 태그가 혼합되어 있는 것을 보게 될 것입니다. HTML 문서와 XML 문서 안에 있는 태그는 꺽쇠 괄호로 둘러 싸여 있어 알아보기가 쉽습니다. 이 문서의 소스 코드에서 HTML 태그는 각 단락의 시작과 끝을 정의하고 각 이미지의 위치를 표시하는 등의 여러 가지 작업을 수행합니다.

XML 문서에도 태그가 들어 있지만 그 점만 빼고 나머지는 전혀 다릅니다. 다음과 같은 차이가 있습니다.

HTML은 데이터의 모양을 정의할 뿐입니다. 즉 표시 언어일 뿐입니다.
XML은 데이터의 구조와 의미를 설명합니다. 데이터의 구조와 의미를 설명하는 태그를 사용하면 다양한 방법으로 데이터를 재사용할 수가 있습니다. 예를 들어 많은 양의 영업 데이터를 갖고 있을 때 각 항목이 명확하게 식별되어 있으면 영업 보고서에 필요한 항목만 로드하고 다른 항목은 회계 데이터베이스로 로드할 수 있습니다.
HTML은 모든 사용자가 공유하는 미리 정의된 태그 세트만 사용합니다.
XML은 데이터와 그 데이터의 구조를 설명하는 데 필요하다면 어떠한 태그도 만들 수 있습니다. 예를 들어 애완 동물에 대한 정보를 저장하고 공유해야 할 경우에는 다음과 같은 XML 코드를 만들 수 있습니다.

<?xml version="1.0”?>
<고양이>
  <이름>나비</이름>
  <품종>샴</품종>
  <나이>6</나이>
  <중성화>예</중성화>
  <발톱 제거>아니요</발톱 제거>
  <등록 번호>Izz138bod</등록 번호>
  <소유자>이강주</소유자>
</고양이>
XML 태그를 사용하면 지금 보고 있는 것이 어떤 종류의 데이터인지 정확히 알 수 있습니다. 예를 들면 이것이 고양이에 대한 데이터임을 알게 되면 고양이의 이름과 나이 등을 쉽게 알 수 있습니다. 거의 모든 데이터 구조를 정의하는 태그를 만들 수 있다는 점이 XML을 “확장 가능(extensible)"하게 만들어 줍니다.

그러나 이 코드 예제의 태그와 HTML 파일의 태그를 혼동하지 마십시오. 예를 들어 이 XML 구조를 HTML 파일에 붙여 넣고 브라우저에서 이 파일을 보면 결과는 다음과 같습니다.

나비 샴 6 예 아니요 Izz138bod 이강주

브라우저에서는 XML 태그가 무시되고 데이터만 표시됩니다.

잘 구성된 데이터에 대한 참고 사항
IT 부서의 누군가가 "잘 구성된” XML에 대해 말하는 것을 들었을 것입니다. 잘 구성된 XML 파일은 XML을 제어하는 매우 엄격한 규칙 세트를 준수합니다. 파일이 그러한 규칙을 준수하지 않으면 XML이 작동을 중지합니다. 예를 들면 앞의 코드 예제에서 모든 여는 태그는 닫는 태그와 쌍을 이루고 있어 잘 구성된 데이터에 관한 규칙 중 하나를 준수하고 있습니다. 이 중 한 태그를 제거하고 Office 프로그램 중 하나에서 이 파일을 열려고 하면 오류 메시지가 나타나고 프로그램이 파일 사용을 중지시킵니다.

잘 구성된 XML을 만드는 규칙은 어렵지 않지만 반드시 알아야 할 필요는 없습니다. 그러나 데이터가 잘 구성된 경우에만 프로그램과 시스템 간에 XML 데이터를 공유할 수 있습니다. XML 파일을 열 수 없다면 파일이 잘 구성되지 않았기 때문일 수도 있습니다.

XML은 또한 플랫폼에 독립적입니다. XML을 사용하도록 구축된 프로그램은 하드웨어나 운영 체제에 관계없이 XML 데이터를 읽고 처리할 수 있습니다. 예를 들어 올바른 XML 태그를 사용한다면 데스크톱 프로그램을 사용하여 메인프레임 컴퓨터의 데이터를 열고 작업할 수 있습니다. 그리고 XML 데이터 본문을 누가 만들었는지에 관계없이 Access, Word, InfoPath™ 및 Excel 등 여러 가지 Microsoft Office 2003 프로그램에서 같은 데이터에 대해 작업할 수 있습니다. XML은 이렇게 이식성이 높기 때문에 데이터베이스와 사용자 데스크톱 간에 데이터를 교환하기 위한 가장 인기있는 기술 중 하나가 되었습니다.

다른 프로그램에서 사용하는 XML

XML 시스템은 일반적으로 태그가 지정되고 잘 구성된 데이터 외에 두 가지 추가 구성 요소인 스키마와 변환도 사용합니다. 다음 섹션에서 이러한 추가 구성 요소가 작동하는 방법을 설명할 것입니다.

스키마에 대한 개요
용어를 두려워 하지 마십시오. 스키마란 XML 데이터에 어떤 것은 상주할 수 있고 어떤 것은 상주할 수 없는지에 대한 규칙을 포함하고 있는 XML 파일일 뿐입니다. 스키마 파일은 보통 .xsd라는 파일 이름 확장명을 사용하는 반면에 XML 데이터 파일은 .xml이라는 확장명을 사용합니다.

프로그램에서는 스키마를 통해 데이터의 유효성을 검사할 수 있습니다. 스키마는 데이터를 구조화하고 데이터를 만든 이와 그 밖의 다른 사용자들이 데이터를 이해할 수 있도록 하는 기초가 됩니다. 예를 들어 사용자가 날짜 필드에 텍스트를 입력하는 것처럼 올바르지 않은 데이터를 입력하면 프로그램이 사용자가 올바른 데이터를 입력하라는 내용의 메시지를 표시할 수 있습니다. XML 파일의 데이터가 해당 스키마의 규칙을 준수하는 한 XML을 지원하는 모든 프로그램이 이 스키마를 사용하여 데이터를 읽고, 해석하고, 처리할 수 있습니다. 예를 들면 아래의 그림과 같이 Office Excel 2003과 Office Word 2003 모두 고양이 스키마와 비교하여 <고양이> 데이터의 유효성을 검사할 수 있습니다.

응용 프로그램은 스키마를 통해 XML 데이터를 공유합니다.

스키마는 복잡해질 수 있으며 스키마를 만드는 방법은 본 문서에서 다루지 않습니다. IT 부서를 통해 그 방법을 알 수도 있습니다. 그러나 스키마의 형태를 알면 도움이 될 것입니다. 아래의 스키마는 <고양이> … </고양이> 태그 세트에 대한 규칙을 정의합니다.

<xsd:element name=“고양이”> 
  <xsd:complexType> 
    <xsd:sequence>
      <xsd:element name=“이름” type=“xsd:string”/>
      <xsd:element name=“품종” type=“xsd:string”/>
      <xsd:element name=“나이” type=“xsd:positiveInteger”/>
      <xsd:element name=“중성화” type=“xsd:boolean”/>
      <xsd:element name=“발톱 제거” type=“xsd:boolean”/>
      <xsd:element name=“등록 번호” type=“xsd:string”/>
      <xsd:element name=“소유자” type=“xsd:string”/>       
    </xsd:sequence>
  </xsd:complexType>
</xsd:element>
예제에 나와 있는 것을 모두 이해할 필요는 없습니다. 다음 사항에 대해서만 유의하십시오.

예제 스키마에 나와 있는 직선 항목을 선언이라고 합니다. 동물에 대해 색상이나 표식 같은 추가 정보가 필요할 경우 IT 부서에서 스키마에 선언을 추가합니다. 업무 필요 사항이 발전함에 따라 XML 시스템을 변경할 수 있습니다.
선언을 사용하면 데이터 구조를 훨씬 잘 제어할 수 있습니다. 예를 들어 <xsd:sequence> 선언은 <이름> 및 <품종> 같은 태그가 앞의 예제에 나와 있는 순서대로 와야 함을 의미합니다. 선언은 또한 사용자가 입력할 수 있는 데이터 종류도 제어할 수 있습니다. 예를 들어 앞에 나와 있는 스키마는 고양이의 나이에 대해 양수를 필요로 하고 ALTERED 태그와 DECLAWED 태그에 대해서는 부울(TRUE 또는 FALSE) 값을 필요로 합니다.
XML 파일의 데이터가 스키마에서 제공하는 규칙을 준수하면 그 데이터를 유효하다고 말합니다. XML 데이터 파일을 스키마와 비교하여 검사하는 프로세스를 유효성 검사라고 합니다. 스키마를 사용할 경우 장점은 데이터 손상을 막는 데 도움이 된다는 것입니다. 또한 문제가 발생하면 XML이 즉시 중지되기 때문에 손상된 데이터를 쉽게 찾을 수 있습니다.
변환에 대한 개요
앞에서 설명한 것처럼 XML은 데이터를 사용하거나 재사용하기 위한 강력한 방법도 제공합니다. 데이터 재사용 메커니즘을 XSLT(Extensible Stylesheet Language Transformation)라고 하거나 줄여서 변환(Transform)이라고 합니다. 실제로 변환 떄문에 XML에 흥미를 갖게 될 수도 있습니다. 예를 들어 스키마와 비교하여 데이터 파일의 유효성을 검사한 후 Word 2003에서 데이터를 마케팅 브로슈어로 만드는 변환을 적용하고 Excel 2003에서 다른 변환을 적용하여 영업 보고서를 만들 수 있습니다.

또한 사용자나 IT 부서에서도 변환을 사용하여 데이터베이스 같은 백 엔드 시스템 간에 데이터를 교환할 수 있습니다. 예를 들어 데이터베이스 A가 영업 부서에 적합한 표 구조로 영업 데이터를 저장한다고 생각해 보십시오. 데이터베이스 B는 회계 부서에 맞게 조정된 표 구조로 수익 및 비용 데이터를 저장합니다. 데이터베이스 B는 변환을 사용하여 A로부터 데이터를 받아서 올바른 표에 이 데이터를 기록합니다.

데이터 파일, 스키마 및 변환의 조합이 기본 XML 시스템을 구성합니다. 아래의 그림은 이러한 시스템의 일반적 작동 방식을 보여 줍니다. 데이터 파일은 스키마와 비교하여 유효성이 검사된 다음 변환에 의해 여러 가지 유용한 방법으로 렌더링됩니다. 이 경우 변환은 데이터를 웹 페이지의 표로 배포합니다.

스키마와 변환이 적용된 기본 XML 파일

아래의 코드 예제는 변환을 작성하는 한 가지 방법을 보여 줍니다. 또한 <고양이> 데이터를 웹 페이지의 표로 로드합니다. 그 밖에 예제의 요지는 변환을 작성하는 방법을 보여 주려는 것이 아니고 변환이 사용할 수 있는 한 가지 양식을 보여 주려는 것입니다.

<?xml version=“1.0”?>
<xsl:stylesheet version=“1.0”>
<TABLE>
  <TR>
    <TH>이름</TH>
    <TH>품종</TH>
    <TH>나이</TH>
    <TH>중성화</TH>
    <TH>발톱 제거</TH>   
    <TH>등록 번호</TH>
    <TH>소유자</TH>
  </TR>
  <xsl:for-each select=“고양이”>
  <TR ALIGN=“LEFT” VALIGN=“TOP”>
    <TD>
      <xsl:value-of select=“이름”/>
    </TD>
    <TD>
      <xsl:value-of select=“품종”/>
    </TD>
    <TD>
      <xsl:value-of select=“나이”/>
    </TD>
    <TD>
      <xsl:value-of select=“중성화”/>
    </TD>
    <TD>
      <xsl:value-of select=“발톱 제거”/>
    </TD>
    <TD>
      <xsl:value-of select=“등록 번호”/>
    </TD>
    <TD>
      <xsl:value-of select=“소유자”/>
    </TD>
  </TR>
</xsl:for-each>
</TABLE>
이 예제는 한 종류의 변환이 코딩된 모습을 보여 주지만 일반 영어로 된 데이터에서 필요한 사항을 설명할 뿐입니다. 예를 들어 IT 부서로 가서 특정 지역에 대한 지난 2년 간의 영업 데이터를 인쇄해야 하는데 “이런 형태로 해주십시오"라고 말할 수 있습니다. 그러면 IT 부서에서는 그러한 작업을 수행하기 위한 변환을 작성(또는 변경)할 수 있습니다.

Microsoft와 숫자가 늘어나고 있는 기타 공급업체가 모든 종류의 작업에 대한 변환을 만들고 있기 때문에 더욱더 편리해지는 추세입니다. 앞으로는 사용자의 필요에 맞는 변환을 다운로드하거나 목적에 맞게 쉽게 조정할 수 있을 것입니다. 즉 시간이 지나면 더 저렴한 비용으로 XML을 사용할 수 있을 것입니다.