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의 데이타로 변환하거나 하는 일들은 다반사로 일어나게 되는 것이니까.. 단순히 엑셀프로그래밍만 한다고 하더라도.. 이 또한 대단한 경쟁력이 될수 있는 것이고 우선 쌤플화일을 열어 보면
흔히 있을 정보의 정형(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으로 저장후 열어 보시고 실행해보시기 바란다
[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이 나오고 자꾸 표준이 전개되고 개발되어 가고 있는 것이 세상이다 어떻게 바뀌어도 기본 프로그래밍 컨셉을 잃지 않으면 아무리 바뀌어도 별 상관이 없는 것이다.. 기본프로그래밍컨셉은 엑셀에서 계속 유지하시면 된다 엑셀은 항상 여러분의 일상의 도구이니..자연스럽게 자신의 몸과 같이 생각하시면 된다 일을 하는 사람이라면...좀더 효율을 추구하는 사람이라면..