반응형

사용자 삽입 이미지
대부분의 브라우저는 내부적으로 XML 파서(Parser)를 가지고 있어 XML 을 읽고 쓰기가 가능하다.
파서는 XML 을 JavaScript 에서 접근 가능한 객체로 만들어준다.
아래 있는 예제는 플렛폼이나 브라우저의 상관없이 최근나온 브라우저에서 모두 작동한다.

예제)
XML 파일을 로드(Load)하고 분석(Parse) 하기 : http://www.w3schools.com/xml/tryit.asp?filename=tryxml_parsertest
XML String 을 로드하고 분석하기 : http://www.w3schools.com/xml/tryit.asp?filename=tryxml_parsertest2

1) XML 파싱(Parsing)

파서(Parser) 는 XML 을 메모리로 읽어들여 자바스크핍트(java Script) 로 접근가능한 XML DOM 객체(Object) 로 변환시킨다. XML DOM 관련해서는 9번에서 다룰 예정이므로 여기선 패수~

Microsoft 사의 XML 파서와 다른 브라우저들의 파서와 다른점이 있다면 Microsoft 사의 파서는 XML 파일과 XML String(텍스트: text) 둘다 로드 시킬 수 있도록 지원이 되지만 다른 브라우저에서는 각각의 다른 파서를 사용한다. 하지만, 모든 파서들은 XML 의 Tree, 접근, 삽입 그리고 삭제 노드들(node: Element) 와 attribute 오갈수 있는 함수를 가지고 있다. (ㅡ,.ㅡ 써놓고도 뭔소리인지 원..)

참고로 XML 파싱을 이야기 할때는 XML Element 보다는 "노드(Node)" 라는 표현을 많이 쓴다.

2) Microsoft 사의 XML 파서로 XML 로드 하기

Internet Explorer 5.0 이상되는 브라우저에 기본적으로 탑재되어 있으며 다음 Javascript  부분에서 XML 문서("note.xml") 을 파서로 로드 시킨다.

var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.load("note.xml");

예제설명:
    a) 첫줄을 보면 비어있는 Microsoft XML 문서 객체를 만들어낸다.
    b) 그담은 전체적으로 문서가 읽어드리기전에 파서가 스크립트 실행을 하지 않도록 비동기로딩을 꺼버린다.
    c) 마지막은 "note.xml" 이라는 XML 문서를 로드하라고 파서에게 전달하는 부분이다.

var parser=new DOMParser();
var doc=parser.parseFromString(txt,"text/xml");

예제설명:
    a) 첫줄은 비어있는 XML 문서 객체를 만들어낸다.
    b) txt 라는 string 을 로드하도록 파서에게 전달한다.

인터넷탐색기(Internet explorer) 는 loadXML() 메서드를 사용하여 XML 스트링을 분석(Parse) 한다. 다른 브라우저들은 DOMParser 객체를 사용한다. (ㅡ,.ㅡa 뭔소린지 정말 모르겠지만 이해가 되겠징..)

3) 도메인 간 접근
보안의 이유로 요즘 나오는 브라우저들은 도메인간의 접근을 막고 있다. 이 말은 만약 웹페이지와 XML 파일이 모두 읽어져야 한다면 하나의 서버에서 둘다 있어야 한다는 뜻. (글쿤)

4) XML DOM

9번에서 아마 접하게 될듯 싶다. XML 문서 객체(XML DOM) 에 접근하여 데이터를 읽어 드리는 방법을 알아보도록 하겠다.

<잡다>
XML 공부를 하면서 느낀점.. 뭐 봐도 html 과 다른건 잘 모르겠지만, asp.net 강좌를 보면 web.config 파일이 XML 로 되어 있는듯.. 싶다.. 뭐 정확한건 나중에 보면 알겠지 모... asp 강좌는 6개 봤다. 이궁.. 눈아프고 머리아프당.

반응형

'초짜 IT보이 서바이벌 스토리 > XML' 카테고리의 다른 글

7. XML - 기타등등 (기초부분의 마지막)  (0) 2008.07.10
6. XML Attributes  (0) 2008.07.09
5. XML ELEMENT  (0) 2008.07.06
4. XML 문법  (0) 2008.07.06
3. XML Tree  (0) 2008.07.06
반응형

사용자 삽입 이미지
잠깐 짜투리 시간이 남아 XML Attributes(어트리뷰트) 관련해 올려본다.

올리는 모든 글은 http://www.w3schools.com 에서 읽은 내용이다. 읽다 보면 알겠지만, 처음 몇개는 읽으나 마나한 사항들인듯.. 왜냐하면.. 나중에 나온다. ^^a 읽으면서 몇줄 안되지만 그래도 허무했다눈~



1. XML Attribute 란?
HTML 과 동일하게 시작하는 태그에서 Attribute 를 지정할 수 있다. Attribute 는 Element 의 정보를 좀더 더해주는 기능을 한다.
HTML 의 예로
<img src = "computer.gif">
<a href = "demo.asp">
여기서 img 라는 Element 의 src 라는 Attribute 정보가 더해진것을 볼 수 있다.
Attribute 는 데이터와 상관없는 정보를 보여주기도 하는데, 아래의 예처럼 file type 은 데이터와 무관한 정보이지만 element 를 사용하려는 소프트웨어에겐 중요한 역활을 한다.
<file type = "gif"> computer.gif </file>

2. XML Attribute 는 따옴표를 사용해야 한다.
작은 따옴표든, 큰 따옴표든 반드시 사용해야 한다. 아래의 예를 보자
<person sex="female">

<person sex='female'>

만약 attribute 이름 자체적으로 따옴표가 있다면 작은 따옴표를 사용한다.

<gangster name='George "Shotgun" Ziegler'>
<gangster name="George &quot;Shotgun&quot; Ziegler">

3. Element vs. Attributes
다음 2개의 예를 살펴보자
<person sex="female">
  <firstname>Anna</firstname>
  <lastname>Smith</lastname>
</person>

<person>
  <sex>female</sex>
  <firstname>Anna</firstname>
  <lastname>Smith</lastname>
</person>

첫번째 예에서는 sex 는 Attribute 이다. 그리고 두번째 예에서는 Element 이다. 둘다 같은 정보를 보여준다.
둘 중 하나를 언제 어떻게 사용해야 하는지에 대한 규칙은 없지만 글쓴이의 조언에 의하면 Element 를 사용하는것이 더 좋다고 하며 Attribute 는 왠만하면 사용하지 말라고 한다. 다음 3개의 예중 맨 마지막이 가장 element로는 최적화 되어 있는듯..
<note date="10/01/2008">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

(Date 를 Element 로 빼면 아래와 같다)

<note>
<date>10/01/2008</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

(아래는 Element 최적화된 코드)

<note>
<date>
  <day>10</day>
  <month>01</month>
  <year>2008</year>
</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note> 

4. 왜 Attribute 의 사용을 절제해야 할까?
Attribute 를 사용하면 다음과 같은 문제가 발생한다.
   a) Element 에서는 가능하지만 Attribute 에서는 하나 이상의 값을 가질 수 없다.
   b) Element 에서는 가능하지만 ATtribute 에서는 Tree 구조를 가질 수 없다
   c) 그리고 Attribute 는 이후를 위한 확장성이 떨어진다.
이 외에도 읽기 어렵고 유지하기도 어렵다. 그럼 완전히 배제해야 할까? 아니다.. 이왕 사용하는거 데이터와 관련된 부분은 Element 로 그리고 데이터와 관계없는 정보들은 Attribute 를 사용하는게 바람직 하다.

5. MetaData 의 XML Attribute
Element 에 ID 참조를 지정할 때가 있따. 이 ID 들은 HTML 의 ID 과 마찬가지로 XML element 을 표식하기 위해서이다.

예에서 사용된 ID들은 각각의 NOTE 를 구분하는 표식 역활을 하며 Note 내용의 일부분이 아니다.
Metadata(데이터의 데이터)는 Attribute 로 저장되어야 하고 데이터 그 자체는 Element 로 저장되어야 한다는게 글쓴이의 뜻이라네..

다음에 올리는 글이 XML 초급 첫단계가 끝나는 마지막이다. 에효 이제 초급이 끝나는구먼..
유효성(Validation), 코드보기(Viewing), CSS, XSLT 를 묶어서 설명될 예정이다.  ㅡ,.ㅡ 좀 졸립네.. 아웅.
반응형

'초짜 IT보이 서바이벌 스토리 > XML' 카테고리의 다른 글

8. XML Parser(파서)  (0) 2008.07.16
7. XML - 기타등등 (기초부분의 마지막)  (0) 2008.07.10
5. XML ELEMENT  (0) 2008.07.06
4. XML 문법  (0) 2008.07.06
3. XML Tree  (0) 2008.07.06
반응형

사용자 삽입 이미지

1) 자 그럼.. Element 란 무엇일까에 대해 요소요소 알아보기로 하자.. ㅡ,.ㅡa

XML Element 는 태그의 시작점 부터 끝까지의 모든것이라 할 수 있다고 씌여 있는데 뭔말이래.. ㅡ,.ㅡ
이해가 안가 다시 한번 읽어봤다. 그래도 이해가 안가는군.. 패수~

Element 는 다른 Element 를 가질 수 있고, 그냥 텍스트 형으로도 가질 수 있고 또한 모두 가질 수 있다.
아.. 번역이 안되기 시작한다.. 눈이 감긴다... 넘 오래 영얼 봤다.. 전에도 이야기 했지만 여기 있는 내용들은 http://www.w3schools.com 을 읽으며 나름대로 정리한 것으로 싸이트 가보면 알겠지만 몽창 영어다.. 젠장.
편하게 한글로 되어 있는거 봐도 좋겠지만.. 한글로 읽으면.. 퍼올 필요가 없자네.. ㅡ,.ㅡ 즉 점수용이다 이거쥐.. 글올리는 재미? 나만의 XML 정리? 뭐 그정도? 이해가 안가니 또 딴소리 한다..

자 예제를 보며 이해를 해보도록 하자.

<bookstore>
<book category="CHILDREN">
  <title>Harry Potter</title> 
  <author>J K. Rowling</author> 
  <year>2005</year> 
  <price>29.99</price> 
</book>
<book category="WEB">
  <title>Learning XML</title> 
  <author>Erik T. Ray</author> 
  <year>2003</year> 
  <price>39.95</price> 
</book>
</bookstore>

문법을 일단 읽고나니 예제 보기 쉽구먼.. 위에서 언급한 "Element 는 다른 Element 를 가질 수 있고, 그냥 텍스트 형으로도 가질 수 있고 또한 모두 가질 수 있다." 라는 부분이 자연스레 이해가 된다.
즉 <book> element 는 Category 라는 Attribute 를 가지고 있고 <bookstore> 와 <book> 은 <title><author><year><price>라는 element 를 가지고 있다. 대충 난 이해가 되는뎀..
읽는사람들은 이해가 내가 쓴 글만 보고 이해가 될지 의문이넴.. ^^ 일단 패수~

2) 다음은 XML 의 이름 붙히기(네이밍:Naming) 규칙이다.
여기서 네이밍이란 태그 이름인거 같은뎀.. 아마 그럴꺼다.. ㅋㅋ
    a) 모든 태그의 이름은 글자, 숫자 그리고 다른 문자를 포함한다.
    b) 모든 태그의 이름은 숫자나 구두문자로 시작해서는 안된다.
    c) 모든 태그의 이름은 xml, XML, 또는 Xml 로 시작하면 안된다.
    d) 그리고 스페이스가 있어서는 안된다.
까다롭지 않고 단순한 규칙이다. 모든 이름들이 사용될 수 있고 사용할 수 c) 의 XML 외엔 보존(reserve)되어 있는 글자나 이름은 없다.

그외에 알아 두면 좋은 내용은 태그 이름을 붙일때
언더바(_) 를 사용하면 이해하기 쉽고, 길면 좀 그럴꺼 같고.. 그리고
"-" 의 사용은 프로그램이 빼기로 이해할 수 있기때문에 사용을 좀 안했음 좋겠고
"."는 객체의 특성으로 이해할지도 모르니 배제하고
":" 의 사용은 음.. namespace 라는거로 사용되어야 함으로 쓰지 않는게 좋단다.

XML 은 주로 데이터베이스와 대응하기 때문에 데이터베이스의 element 들을 바로 사용하는게 좋을듯 싶다.
아..
그리고 영어가 아닌 다른 글자들은 안된다고 하는데.. 이유는 소프트웨어에거 지원을 안할지도 모르기 때문이라고..  (이부분은 솔직히 안써봐서 모르겠다. 나중에 선배들에게 물어봐야 겠다)

3) XML Element 는 신장성(Extensible)이 있다.
커헐.. 내가 적어보니 말이 되는지 모르겠다.. 쭉쭉 늘어나나? extensible 의 사전적 의미는  " 있는, 늘일 있는, 신장성있는" 이라고 네이놈딕셔너리에 적혀있다. 하지만 여기서 사용되는 의미와는 조금 다른듯 싶다. 작성자가 왜 extensible 이라는 단어를 사용했을까? 글자만 보지말고 좀더 읽어보기로 했다
뭐 여하튼 내용은 다음과 같다.

<note>
<to>Tove</to>
<from>Jani</from>
<body>Don't forget me this weekend!</body>
</note>

자 위의 XML 을 읽어 들여 보여줄 수 있는 어플리케이션이 있다고 치자. 이 어플리케이션에서는 <to><from><body> 만을 읽어들여 다음과 같이 표현해 낸다.

MESSAGE

To: Tove
From: Jani

Don't forget me this weekend!

하지만 만약 아래와 같이 썼다면.. 같은 어플리케이션에서는 어떻게 될까?

<note>
<date>2008-01-10</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

<date> 태그와 <heading> 태그가 들어가 있는뎀... 하지만 어플리케이션은 여전히 자기가 읽을 수 있는 부분인 <to><from><body> 만을 읽어 같은 결과를 보여준다.

위의 extensible 이라는 표현은 이때문에 사용된듯 싶다. XML 의 Element 사용은 어플리케이션을 방해하지 않는다. 달라는것만 주고 말라는건 걍 가지고 있는다. extensible.. 으음.. :)
역시 우리는 설명도 설명이지만 코드로 이해하는게 더 편한거 같다. ㅋㅋ

이로써 Element 관련해서는 끝이다.  다음은 Attribute 에 대해 알아보겠다.

반응형

'초짜 IT보이 서바이벌 스토리 > XML' 카테고리의 다른 글

7. XML - 기타등등 (기초부분의 마지막)  (0) 2008.07.10
6. XML Attributes  (0) 2008.07.09
4. XML 문법  (0) 2008.07.06
3. XML Tree  (0) 2008.07.06
2. XML 편 - 소개(2)  (0) 2008.07.03

+ Recent posts