Skip Navigation Links.
Expand VBAVBA
엑셀프로그래밍이 필요한 이유
Expand ExcelExcel
Expand External LibraryExternal Library
Expand SolutionSolution
Expand EssayEssay

Excel & VBA---Brain Training


XML DOM 특강_01

xml화일에 대한 맛보기를 해보았다
좀더 체계적으로 XML화일 구조에 대하여 특별한 페이지로 진행해보자..
본책..UNO-XL-PROGRAMMING에 작성하는 것이 원칙이겠으나..
한동안 BrainTraining 코너가 너무 정이 들어서..
그냥 이곳에 작성하자..
모두 UNO-XL-PROGRAMMING 본책의 구성의 일부라고 생각하시고
보시기 바란다

[XML DOM 특강]
DOM 이 무엇인가..
Document Object Model의 약자이다
xml화일을 구성하는 구조를 개체화하여 접근할수 있도록 모델링해놓은
개체들의 모음인 것이다
개체지향적인 현대 프로그래밍에서 일반적인 TEXT문서를
어떻게 하면 좀더 체계적으로 접근하여 원하는 정보만 찾아내거나
원하는 부분에 값을 바꾸거나..넣거나 할수 있는 구조를 개체화
시킨 것이다
일반TEXT문서를 수정하고 편집하고 하려면 TEXT문서를
몽땅 열어놓고 하거나..복잡한 Parsing작업을 하거나 하여야 할 것이지만
TEXT문서는 TEXT문서이지만 좀 정보의 성격대로
체계적으로 보관하는 모델링..이것을 구성하는 개체..
Document Object Model..즉 DOM...좀더 자세하게 표현하여
XML DOM이라고 하는 것이다

이 특강의 교재로 MS에서 제공하는 xml쌤플화일을 하나
다운 받아서 보관하시고 이 것을 갖고 이야기 진행하도록 하자

Books.xml 쌤플화일 다운 로드

이 특강을 다 완료하시면
좀더 파워있는 프로그래머가 되시는 것을 보장한다
왜냐면 전세계의 모든 주고 받는 문서의 타입은
XML문로 표준화가 되어 있으니까..
엑셀과 더불어 막강파워가 된다

또한 VB.net, VSTO에 들어가려고 하시는 분들이 XML을 모른다면
허당이나 마찬가지 인셈이다
왜냐하면 DB를 XML로 변환하거나..XML문을 DB의 데이타로 변환하거나
하는 일들은 다반사로 일어나게 되는 것이니까..
단순히 엑셀프로그래밍만 한다고 하더라도..
이 또한 대단한 경쟁력이 될수 있는 것이고
우선 쌤플화일을 열어 보면

<?xml version="1.0"?> <catalog> <book id="bk101"> <author>Gambardella, Matthew</author> <title>XML Developer's Guide</title> <genre>Computer</genre> <price>44.95</price> <publish_date>2000-10-01</publish_date> <description>An in-depth look at creating applications with XML.</description> </book> <book id="bk102"> <author>Ralls, Kim</author> <title>Midnight Rain</title> <genre>Fantasy</genre> <price>5.95</price> <publish_date>2000-12-16</publish_date> <description>A former architect battles corporate zombies, an evil sorceress, and her own childhood to become queen of the world.</description> </book> ... ... ... ... ... </catalog>

흔히 있을 정보의 정형(Typical Type)이다
어느 책방의 데이타베이스를 xml화일로 변환해놓은 상태라고 할수 있다
현대의 정보의 관리는 DB에서 몽땅 몇십년의 정보를 보관하고(대용량)
보고자하는 용도에 맞추어서 일부 몇년간의 정보를 위와 같은 XML로 변환하여 다양한
사용자인터페이스로 볼수 있게 하는 것이 상식화 되어 있다
물론 엑셀에서 다이렉트로 대용량 DB에 접근하여 XML없이 처리할수
있는 것이다..개인 DB이던가 자신들의 회사의 DB라던가..
그러나 대용량 DB같은 곳에 예를 들어서 국가기관이나 공공기관의 DB에
아무나 접근 할수 없는 것이다
국가기관이나 공공기관에서 보고 대외써비스로서 정보를 제공할때는
XML로 변환한 용도에 맞는 써비스를 내보내는 것이 상식인 것이다
이럴때는 제공받은 XML문을 엑셀로 불러 들여오면 되는 것이다

그러니 XML을 알고 있어야 원하는 소루션을 만들수 있게 되는 것이다

위의 쌤플은 간단하다..
책방의 책목록이다
책방의 책목록은 재산이다
목록..Catalog라는 최상위 노드 NODE 하에
여러개의 Book 노드가 자식노드로서 줄줄이 존재하고
각각의 Book 노드는 몇개의 정보인 자식 NODE를 또 갖고 있다
이런 간단한 구조로 수백권, 수천권의 정보를 보관하고 있는 것이다



XML문서의 구조는 그림과 같이 Tree구조를 이루고 있다는 점..
엑셀시트의 테이블구조와 이 관계의 그림을 머리속에 잘
상상하시면 작업은 끝난다..
이것이 헷갈려서..쩔쩔매는 것이다
Tree구조는 정보를 관리하는 기본적인 방법중의 하나 인것이니..
XML문을 통하여 새로운 정보구조의 프레임을 머리속에
심으시기 바란다
대표적인 Tree구조는 여러분의컴퓨터의 화일관리시스템을
보시면 알 것이다

정보가 가지를 치면서 마지막까지 가게 되는 것이고..
이 마지막까지 찾아내려가서 정보를 갖여 오는 그런 이야기가 된다

DOM은 xml의 문서를 다루는 XML DOM이 있기도 하고
여러분이 보고 있는 웹페이지..즉 HTML문서에서의 개체를 다루는
HTML DOM도 있다
그러니 DOM을 알게 되면 웹으로의 확장이 되는 셈이다
아래와 같은 것을 하나 해보시기 바란다
아래의 것을 텍스트문서에 옮기고 확장자명을 htm으로 저장후
열어 보시고 실행해보시기 바란다

<h1 style='font-family:맑은 고딕;'>BrainTraining XML DOM </h1> <div id='myBox' style='font-family:맑은 고딕;'></div> <input type='button' value='VBScrip-Click!!' onclick='doSomething()' /> <script language='vbscript'> sub doSomething() Dim oX set oX=document.getElementById("myBox") oX.innerText="[VBScript]로 DOM에 일을 시켰슴" end sub </script> <hr /> <input type='button' value='JavaScript-Click!!' onclick='doSomething_1()' /> <script language='javascript'> function doSomething_1(){ var oX; oX=document.getElementById("myBox"); oX.innerText="[JavaScript]로 DOM에 일을 시켰슴!!"; } </script>

[script],[/script]라는 태그로 쌓여 있는 것이 프로그래밍코드부분이다
VBA의 모듈시트가 웹페이지에 하나의 컴포넨트로 들어가 있는 셈이다
[script language='VBScript'] 라고 한 것은 언어를 VBA와 같은 식구인
VBScript로 작성한 것이고
[script language='javascript'] 라고 한것은 언어를 javasript를 사용한 것이다
DOM은 이렇게 아무 언어에서나 부를 수 있는 것이다
웹브라우져가 VBScript와 JavaScript모두 지원을 해주지만..
더 범용으로 활용되는 것은 Javascript 이다
javasript는 어는 곳에서나 지원하는 파워풀한 언어이다
위에서 VBScript를 사용한것은 VBA를 하시는 분들에게 낯섫지 않게
하기 위하여 사용한 것이고
앞으로의 예제는 주로 Javascript를 사용하면서 웹에서의
예문을 많이 보여드릴 것이다
VBScript는 VBA를 하였으니 이미 아는 것이고
좀더 다양한 경험을 위하여 javascript를 사용하려고 한다
또한 Javascript와 VBA를 비교하면서 좀더 많은 영감을 받았으면 좋겠다
아주 파워풀한 언어이니까..!!!
위에서 document라고 한것이 있다
이것은 엑셀에서 최상위 개체가 Application이듯이
웹페이지상의 (HTML DOM)최상위 개체는 document이다!!!
또한 XML문서상의 (XML DOM)에서의 최상위 개체는 XMLDocument이고..
이렇게 최상위개체에 접근하여 일을 하게 된다
document.getElementById라고 하는 것은 문서상의 어떤 개체에
접근하는 가장 일반적인 방법이다

위에서 [div id='myBox'] [/div] 라는 태그 (div 태그)를 보면 id='myBox'라고 주었다..
이 id를 찾아서 개체를 얻는다는 의미인 것이다
엑셀에서 범위에 이름을 지어주고 범위에 접근하는 것과 같은 개념이다
name이라는 속성대신에 id라는 속성을 사용한다는 것..
그래서 oX라는 변수에
oX=document.getElementById('myBox')라고 한것은
oX라는 변수에 ID가 myBox라는 개체를 얻어 넣는다는 의미다
oX.innerText는
oX개체의 속성 innerText..즉 내부문장은 어떻게 작성하라!!라는 것이된다
즉 위에서 [div][/div]라는 태그내에 아무 문장이 없었으나
이곳에 문장을 읽거나 쓰는 속성이 innerText속성인것이다
마치 엑셀의 범위를 찾아서 값을 넣는 것이나 마찬가지다
Dim rX As Range
rX.Value="234"
와 같이 Value속성으로 값을 전달하듯이 웹에서의 개체에 값을
넣는 것은 innerText라는 속성에 작성되는 것이다
oX.innerText="234"

개념은 똑같다..단지 개체모델이 다를 뿐이다
그렇게 생각을 확장하면서 좀더 다양한 경험의 기회를 갖도록 하자

웹이나 xml문서상에서 중요한 것은 대문자 소문자를 철저히 가린다는 것이
VBA와는 아주 다른 점이니..유의하시기 바란다
하다 보면 대문자, 소문자를 가리는 것은 더욱 편리함을 알게 될것이다
이것을 잘 구분 못하면 어떻게 되냐구..에러가 난다!!!

아무튼 개념은 똑같은 프로그래밍이니..
뭔가 휑하고 낯섫다면 VBA가 아직 여러분의 뼈속까지 속속들이
파고 들어가지 않은 상태인 것!!

모든 프로그래밍은 개체찾아가는 요령을 아는 것이다
즉 해당 개체모델을 아는 것이고
DOM 이라고 하는 것이 Document Object Model 인것이고
엑셀은 엑셀나름대로의 개체모델이 설계되어 있는 것이다

DOM 개체모델도 본래는 Core Model 즉 기본 모델이 있고
이것에서 다양하게 파생되는 모델
즉 HTML문서를 다루는 것은 HTML DOM 이고
XML문서를 다루는 것은 XML DOM 인것이다
이것을 만든 인간들은 누구 인가??
Web이 생활화되고 문자열정보를 주고 받는데 국제적인 어떤 규약이
있어야 한다는 생각을 갖은 하나의 세계적인 단체 W3C라는 곳에서
세계표준을 만들어 내고 있는 것이다


World Wide Web Consortium 의 약자 W3C라는 곳이다
처음 웹브라우져들이 태어날때..각 브라우져별로 표준이 달라서
즉 어느 브라우져에는 표현이 되던 것이 다른 브라우져에서는
표현이 안되는 그런것을 세계표준화를 시켜가는 곳이고
각 브라우져개발회사는 이 표준을 따르려고 노력하는 것이고..

엑셀에서 셀에 정보를 입력하고 서식을 한다
예쁘게 꾸미는 것이다
HTML과 XML과의 다른 것은..
HTML은 문서의 정보에 대한 서식을 할수 있는 것이고
XML은 서식과는 다른 단순한 정보만 보관하는 기능이 있는 것이다
정보와 정보의 형태를 보관하는 역할인 것이다
당초에는 HTML문으로 정보도 보관하고 서식도 하는 역할을 하였으나
이것이 분리 되었다고나 할까..
XML은 가벼운 작은 데이타창고역할을 하는 셈이고
HTML은 정보를 표현하면서 용도에 따라서 서식을 하는
즉 Presentation을 하는 역할을 하는 셈이다

당초에는 HTML에서 XML이 나오고..
그러다 보니 또..XML에서 다시 HTML을 좀더 개선
확장된 XHTML이 나오고
자꾸 표준이 전개되고 개발되어 가고 있는 것이 세상이다
어떻게 바뀌어도 기본 프로그래밍 컨셉을 잃지 않으면
아무리 바뀌어도 별 상관이 없는 것이다..
기본프로그래밍컨셉은 엑셀에서 계속 유지하시면 된다
엑셀은 항상 여러분의 일상의 도구이니..자연스럽게
자신의 몸과 같이 생각하시면 된다
일을 하는 사람이라면...좀더 효율을 추구하는 사람이라면..