Etc

[세미나] XML 레포트..

by hooni posted Apr 23, 2003
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
루트 요소
XML 문서의 내용은 시작태그-내용-끝태그 세가지로 이루어진 요소를 사용한다.
이런점에서 HTML과 유사하다고 생각한다.
그러나 XML의 시작 태그와 끝태그는 대/소문자를 구분한다.
만약 ThisIsAnIntelligeble로 태그를 열었다면 끝나는 태그도 대소문자를 구분해서 써야한다.
XML이 이런 기능을 채택한 이유는 위험한 가정을 하기보다 가장 안전한 방법을 선택하려고 했다고 한다.(무슨말인지..)

빈요소라인-XML의 특별한 경우이다.
빈요소는 확실히 나타내 주어야 한다.
그러기 위해서는 특수한 빈태그의 끝구분자 "/>"를 사용한다.

ex)<empty_element />

또한 빈태그의 끝구분자 대신에 끝태그를 사용할수 있다.

예를 들어
<graphic source="file.gif" />과 
<graphic source="file.gif"></graphic>는 같은 내용이다.


속성 - HTML처럼 XML도 속성이 주어지는데 이 속성은 시작태그에서 지정된다.

즉, <element.type.name attribute.name="attribute.value">나
<problem size="huge" solution="run.away">
이런식으로..
만약 요소가 "명사"라면 속성은 형용사 꼴인 것이다.(요소를 꾸며주는..)


논리적 구조
homepage
  |
  |-- head
  |    |
  |    |_title
  |    |_banner
  |   
  |-- body
  |    |
  |    |_main.title
  |    |_rule
  |    |_text
  |       |_para
  |__ footer

XML문서에서 요소들의 배치를 "논리적 구조"라 한다.
위에서 보는 바와 같이 트리 구조인데
homepage는 루트 요소라 할수 있다.
XML문서는 하나의 루트 요소만 존재해야 하며 다른 태그들은 모두 이 요소안에 중첩되어 있어야 한다.
어떤 요소도 그 요소의 부분이나 전체가 바깥쪽 혹은 앞뒤에 있어서는 안된다.

다른 요소에서 볼때 요소와 요소 사이의 관계는..
요소를 포함하는 요소를 부모(parent)라 하고
그 요소에 포함된 요소를 자식(children) 또.. 부모 요소를 함께 갖는 요소들을 형제(sibling)라 한다.


물리적 구조 - XML의 주요 개념 중 하나가 엔티티(Entity)이다.
XML을 이해하기 위해 꼭 필요하다.
간단히 말해 엔티티는 물리적 저장 단위로 생각해도 된다.
엔티티는 객체이지만, 대부분 엔티티는 별도의 컴퓨터 파일로 생각할수 있다.
우리는 이미 엔티티를 알고 또 사용하고 있다.

예를 들어 <banner source="top banner.gif" />는 외부 엔티티 인 것이다.
XML은 외부 그래픽 파일을 포함하는 것에 대해 HTML보다 엄격하다.
요소의 배치에서 논리적 구조를 보듯이, 엔티티의 배치에서는 물리적 구조를 보여준다.
엔티티는 다른 엔티티를 참조할수 있으며 XML 문서를 포함할수 있다.
요소간의 충돌 외에도 루트 엔티티에서 어떤 요소를 열었을때 외부 엔티티를 참조한다고 생각해 보자.(문제가 되지 않는다)
그러나 방금 연 요소에 대한 끝 태그에 포함되어 있다면 논리적 구조가 깨져 버린다.
이런 문제를 방지하기 위해 XML 엔티티의 논리적/물리적 구조는 반드시 동기화 되어야 한다.
논리적 엔티티는 물리적 엔티티의 경계를 넘을 수 없으며 물리적 엔티티는 논리적 엔티티에 완전히 포함되어야 한다.

============================================================
HTML과 비슷하게 생각했었다.
그러나 개념을 새로 공부해야 겠다는 생각이 든다.
지금까지 공부한 부분에서는 물리적/논리적 구조를 잘 파악하고
엔티티를 참조할때의 오류를 잘 막아야 겠다.
HTML에 비해 외부 엔티티 참조 부분에서 더 복잡하고 엄격한거 같다.