XML이란 무엇인가?
- XML은 EXtensible Markup Language의 약자이다.
- XML은 HTML과 매우 흡사한 markup language이다.
- XML은 데이터를 기술하기 위해 고안되었다.
- XML 태그들은 XML에서 미리 정의되어 있지 않다. 필요한 태그는 본인이 정의를 해야만 한다.
- XML은 자기기술적(self describing) 특성을 갖고 있다.
- XML은 데이터를 기술하기 위해 공식적으로 DTD(Document Type Definition)를 사용한다.
XML과 HTML의 주요 차이점
XML은 HTML의 대치물이 절대 아니다.
XML과 HTML은 서로 다른 목표를 가지고 고안되었다:
XML은 데이터가 무엇인지(what data is)에 초점을 맞춰 데이터를 기술하기 위해 고안되었다.
HTML은 데이터가 어떻게 보일지(how data looks)에 초점을 맞춰 데이터를 표시하기 위해 고안되었다.
HTML은 정보를 표시하기 위한 언어이고, XML은 정보를 기술(describing)하기 위한 언어이다.
XML의 확장성
HTML 문서를 만들기 위한 태그나 HTML 문서의 구조는 이미 정의되어 있다. HTML 문서를 만드는 사람은 HTML 표준에서 정의된 태그들만 사용할 수 있다.
XML은 자신의 문서 구조와 자신의 태그를 정의할 수 있도록 해준다.
XML과 HTML의 상호 역할
XML이 HTML의 대치물이 아니라는 사실을 이해하는 것은 상당히 중요하다. 향후 웹 개발에 있어서 XML은 웹 데이터를 기술하고 구조화 시키는데 사용될 것이며 HTML은 동일한 데이터를 표시하고 꾸미기 위해 사용될 것이다.
XML의 미래
XML이 생겨난 이후로 놀라울 정도의 속도로 XML 표준이 발전되어 왔으며 소프트웨어 벤더들도 상당히 빠른 속도로 XML을 표준으로 삼고 있다.
XML은 향후 HTML 만큼이나 웹의 근간이 될 것이다. 또한 XML은 웹을 통한 데이터 전송 및 데이터 처리의 표준으로 자리 잡을 것이다.
- XML은 HTML과 별도로 데이터를 보관할 수 있다
- XML은 HTML 문서 내부에 데이터를 저장할 수도 있다
- XML은 정보 교환의 한 방식으로 사용될 수 있다.
- XML은 파일 또는 데이터베이스에 데이터를 저장할 수 있다
XML은 HTML과 별도로 데이터를 보관할 수 있다
HTML 페이지는 데이터를 표시하기 위해 사용된다. 데이터는 종종 HTML 페이지 내부에 저장된다. XML에서는 이 데이터를 별도의 XML 파일에 저장할 수 있다. 이렇게 함으로써 HTML로 하여금 데이터를 표시하고 꾸미는 것에 집중할 수 있도록 해준다. 또한 이렇게 함으로써 기본이 되는 데이터가 바뀌더라도 HTML은 전혀 수정할 필요가 없어지게 된다.
XML은 HTML 문서 내부에 데이터를 저장할 수도 있다
XML 데이터는 HTML 페이지 내부에도 데이터를 격리시켜 저장할 수 있다. 여전히 HTML은 데이터를 표시하는 것에 집중시킬 수 있다.
XML은 정보 교환의 한 방식으로 사용될 수 있다
대부분의 시스템, 데이터베이스는 서로 호환되지 않는 데이터 포맷을 포함하고 있다. 대부분의 개발자들은 인터넷 상에서 서로 호환되지 않는 데이터를 주고 받기 위해 많은 시간을 낭비하고 있다. 만일에 정보 교환할 데이터를 XML로 바꿔준다면 많은 시간을 절약할 수 있으며 서로 다른 애플리케이션 사이에서도 데이터 교환이 가능해진다.
XML은 파일 또는 데이터베이스에 데이터를 저장할 수 있다
XML은 해당 데이터를 파일이나 데이터베이스에도 저장할 수 있다. 이런 데이터를 저장하고 읽어 들이기 위해 별도의 애플리케이션을 개발할 수 있다. 물론 이런 데이터를 표시하기 위한 애플리케이션을 만들기도 한다.
XML 문서의 예:
<?xml version="1.0"?> <note> <to>철수</to> <from>다니엘</from> <heading>기억할 것!</heading> <body>이번 주 약속 잊지말길!</body> </note> |
첫 번째 라인부터 살펴 보도록 하자. 이 부분은 XML 선언부로 반드시 포함시켜야 하는 부분이다. 이 부분은 사용된 문서의 XML 버전을 정의한 부분이다. 이 경우 XML 1.0 스펙을 따른다는 것을 의미한다:
<?xml version="1.0"?> |
다음 라인은 이 문서의 첫 번째 요소(element)를 정의한다(이 부분은 최상위 요소(root element)임):
<note> |
다음 4 라인은 최상위 요소의 자식 요소(child elements) 4개를 정의하는 부분이다(to, from, heading 및 body):
<to>철수</to> <from>다니엘</from> <heading>기억할 것!</heading> <body>이번 주 약속 잊지말길!</body> |
마지막 라인은 최상위 요소의 끝을 정의하는 부분이다:
</note> |
모든 XML 요소는 마침 태그(closing tag)를 가져야 한다
HTML에서는 마침 태그(closing tag)가 필요 없는 요소들도 있었다. 다음은 HTML에서 문제가 없는 코드이다:
<p>이것은 하나의 문단이다 |
하지만 XML에서는 다음과 같이 마침 태그를 반드시 가져야 한다:
<p>이것은 하나의 문단이다</p> <p>이것은 또 다른 문단이다</p> |
XML 태그는 대소문자 구분이 있다
XML 태그들은 대소문자 구분을 한다. 태그 <Letter>와 태그 <letter>는 서로 다르다.
그러므로 시작 태그와 마침 태그는 반드시 대소문자를 맞춰줘야 한다:
<Message>이렇게 하면 잘못된 것이다</message> |
<message>이렇게 해야 맞다</message> |
모든 XML 요소는 중첩 원리를 잘 지켜야 한다
HTML에서 어떤 요소들은 다음과 같이 서로 부적절하게 중첩될 수 있었다:
<b><i>이 문장은 볼드체와 이탤릭체로 나타난다</b></i> |
하지만 XML에서는 다음과 같이 서로 중첩을 잘 시켜줘야 한다:
<b><i>이 문장은 볼드체와 이탤릭체로 나타난다</i></b> |
모든 XML 문서는 최상위 요소를 가져야 한다
모든 XML 문서는 한 쌍의 최상위 요소 태그를 포함해야 한다. 모든 다른 요소들은 이 최상위 요소 하부로 중첩되어야 한다. 모든 요소들은 자신의 하부로 자식 요소들을 가질 수 있으며 모든 요소들은 시작 태그와 마침 태그의 쌍을 정확히 이뤄야 한다. 또한 모든 하위 요소들은 자신의 부모 밑에서 순서를 잘 지켜 중첩되어 있어야 한다:
<root> <child> <subchild> </subchild> </child> </root> |
속성 값은 쿼테이션(' 또는 ")으로 감싸줘야 한다
XML 요소들은 HTML에서와 마찬가지로 name과 value 속성을 가질 수 있다. XML에서 속성 값은 항상 쿼테이션(' 또는 ")으로 감싸줘야 한다. 아래 두 개의 XML 문서를 보면, 첫 번째 것은 틀렸고, 두 번째 것은 맞았다. 어떤 부분이 맞고 틀렸는지 살펴보기 바란다:
<?xml version="1.0"?> <note date=12/11/99> <to>철수</to> <from>다니엘i</from> <heading>기억할 것</heading> <body>이번 주 약속 잊지말길!</body> </note> |
<?xml version="1.0"?> <note date="12/11/99"> <to>철수</to> <from>다니엘i</from> <heading>기억할 것</heading> <body>이번 주 약속 잊지말길!</body> </note> |
XML 속성(Attributes)
XML 속성(Attributes)은 보통 XML 요소를 설명하기 위해 또는 요소에 대한 부가 정보를 제공하기 위해 사용된다. HTML에서 다음과 같은 내용을 보면 쉽게 알 수 있을 것이다: <IMG SRC="computer.gif">. 이 예에서 SRC는 IMG 요소의 속성이다. SRC 속성은 IMG 요소에 대한 부가 정보를 제공해주는 역할을 한다. 속성은 언제나 요소의 시작 태그 안에 포함되어 있어야 한다. 다음은 그 예이다:
대부분 속성은 XML 문서 내용에 포함되어 있지 않은 정보를 제공하기 위해 사용된다. 이 말을 다른 말로 표현하자면, 속성은 종종 독자들에게보다는 XML을 해석하는 해석기(파서, parser)에게 더 중요하다. 어쨋든 위의 예에서 person id는 독자들과는 별 상관 없는 숫자이지만 person 요소를 처리할 소프트웨어에게는 상당히 중요한 의미를 가진다는 것이다. 요소(element)와 속성(Attributes)의 사용 다음 예를 살펴 보자:
첫 번째 예에서 sex는 속성이다. 두 번째 예에서 sex는 요소이다. 두 가지 예 모두 독자들에게는 같은 정보를 제공한다. 데이터를 기술하기 위해 "요소"를 사용해야 할지 "속성"을 사용해야 할지에 대한 특별한 규칙은 없다. 하지만 경험에 비추어보면, HTML에서는 "속성"을 사용하는 것이 간편하고 XML에서는 "요소"로 그 데이터를 표현할 수 있다면 "속성" 사용을 피해야 한다. 또 다른 예를 살펴 보자. 이 예는 "속성" 대신 어떻게 "요소"를 사용하는지에 대한 것이다. 이 예에 포함된 3개의 문서는 모두 동일한 정보를 갖고 있다. 첫 번째 문서에서는 date가 "속성"이고 두 번째 문서에서는 date가 "요소"이며 세 번째 문서에서는 date가 확장된 "요소"이다:
"속성" 사용을 피하는 이유 왜 "속성" 사용을 피해야 하는가? "속성"을 사용하게 되면 다음과 같은 문제점들이 있다:
만일 XML 데이터를 보관하기 위해 "요소" 대신 "속성"을 사용하기 시작하면 유지하기도 어렵고 그 데이터를 처리하기도 어려워진다. 여기서 계속 얘기하고자 하는 것은 데이터를 기술하기 위해서는 "속성" 대신 "요소"를 사용하라는 것이다. "속성"은 독자와는 상관 없는 정보를 제공할 경우에만 사용하길 바란다. 다음과 같은 사용은 자제해 주기 바란다:
속성을 사용하는 또 다른 경우 "속성"은 독자와는 상관 없는 정보를 제공할 경우에만 사용하라고 하였는데 이 외에 다음과 같은 경우에도 사용할 수 있다: XML 문서에서 어떤 요소에 접근하기 위해 ID를 할당하는 경우가 있다. HTML에서 NAME이나 D 속성을 사용하는 경우와 동일하다. 다음 예를 한번 보자:
출처-코리아인터넷닷컴 |
'Jsp_Html' 카테고리의 다른 글
[Jsp] 환경 파악하기 (0) | 2010.09.03 |
---|---|
[Jsp] Xml사용하기 (0) | 2010.06.23 |
[Jsp] html, input, key, event 처리 (0) | 2010.06.22 |
[Jsp] forward, location.href (0) | 2010.06.22 |
[Jsp] ServletConfig, ServletContext (0) | 2010.06.17 |