상세 컨텐츠

본문 제목

XML 기초 1

Web Development/Others

by thankee 2008. 8. 30. 16:55

본문

XML 이란?

  • 확장가능한 마크업 언어(Extensible markup Language)
  • Markup Language란, 문서의 내용에 추가적인 정보를 표시할 수 있는 언어를 뜻한다. 각 태그Markup이 되며, 태그에 포함된 내용들에 관한 추가적인 정보를 표현하는 역할을 한다.
  • Extensible에서 의미하는 바와 같이, XML은 필요에 따른 새로운 Markup Language를 생성할 수 있는 메타 언어이다. 메타 언어란, 다른언어를 기술하거나 분석하는데 쓰이는 언어라는 의미이다. 즉 XML을 이용해 문서를 작성한다라는 뜻은, XML로 제작된 언어로 문서를 작성한다는 의미로 보면 된다.
  • 메타언어에는 SGML(Standard Generated Markup Language)이 대표적이다. SGML로 만들어진 언어는 HTML이 있으며, XML은 SGML을 보다 단순하고 사용하기 쉽도록 한 언어로 보면된다. 즉 XML은 SGML의 부분집합이다.
  • XML은 데이터 전달을 목적으로 많이 사용되는데, 예를 들어 특정 언어에서 다른 언어, 다른 시스템으로 데이터를 전송하는데 있어서 가장 보편적으로 사용되고 있다. 즉 특정분야의 필요에 맞게 XML을 이용하여 언어를 만들고, 그 언어 규격에 맞게 XML을 이용해 서로 데이터를 전송하고 관리할 수 있게 된다. 특정 프로그램에서 다른 프로그램, 출판 분야, 고객 정보 관리, 데이터베이스 관리, 백업 등 데이터를 다루는 거의 모든 분야에서 사용가능하며 사용되어지고 있다.
  • XML이 HTML을 대체할 수 있다고 생각하는 사람이 있는데, XML과 HTML은 서로 다른 분야로서, XML이 HTML이 하는 역할을 할 수 없고, HTML이 XML의 기능을 대신할 수 없다.
  • Well- Formed XML Document : W3C의 XML 1.0권고안의 문법을 잘 지켜서 작성된 문서를 말한다. XML은 HTML과 달리 문법을 잘 지켜서 작성해야하며 그렇지 않을 경우, XML문서로 취급되지 않으며 작동하지 않는다.
  • Valid/Invalid Document : XML로 만들어진 특정 Markup Language에 맞게 작성된 문서이다. 'XML 문서에 대해 유효성 검사를 한다'라는 것은 XML로 개발된 특정 언어의 규칙과 구조에 맞는지 검증한다는 의미이다.

XML 문서 구조

  • Prolog : XML선언 및 문서 유형 선언(DTD::=Document Type Definition), 프로세싱 지시자(Processing Instruction)가 이 영역에 포함될 수 있다.
  • Element : 하나의 루트 엘리먼트와 하위 엘리먼트로 구성된다.
  • Misc : 문서 마지막에 위치하며 보통 생략되는 부분으로서 주석이나 Processing Instruction 등이 위치하는 경우가 많다.

XML 선언

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

  1. 이 문장은 생략될 수 있지만, 기본적으로 xml문서에 기술되는 것이 권장된다.
  2. 반드시 문서 첫번째 라인에 위치해야하며, 주석도 이 문장 이전에 위치할 수 없다.
  3. '<?xml' 사이에 공백은 허용되지 않는다.
  4. encoding부분은 생략될 수 있으며, default는 UTF-8이다. 실제로 문서의 인코딩 타입과 일치하지 않을 경우 에러를 출력한다.
  5. standalone부분은 dtd부분이 xml문서에 포함되는건지, 외부 dtd를 참조하는건지에 따라 yes 또는 no를 설정하면 된다. 생략 가능한 부분으로 default값은 no로 작동된다. 이 부분을 생략하고 dtd부분을 xml문서에 포함 시켜도 아무 문제가 없으므로, 대부분의 경우 생략되는 부분이다.

기초문법

  • XML을 사용하기 위해 기본적으로 알야아하는 문법으로서 EBNF(Extended Backus-Naur Form)가 있다.

Symbol ::= Expression

  • CharA ::= [a-zA-Z0-9]은 CharA는 대소문자 a부터 z까지, 숫자 0부터 9까지 중 하나의 문자라는 의미이다.
  • 문자 표현은 ' 또는 " 문자 사이에 위치해야하며 대소문자를 구별한다.
  • 패턴 결합을 통해 보다 다양하고 복잡한 형태의 EBNF를 사용할 수 있다.
    • A : One, A표현은 한번만 기술되어야 한다.
    • A? : One or Zero, A표현은 기술되지 않거나 한번만 기술되어야 한다.
    • AB : A and B, A표현식과 B표현식은 순차적으로 기술되어야 한다.
    • A|B : A or B, A표현식과 B표현식 중 하나만 표현되어야 한다.
    • A-B : A without B, B표현식에 일치하지 않는 A표현식
    • A+ : One or More, A표현식은 1번 이상 기술 되어야 한다.
    • A* : Zero or More, A표현식은 기술되지 않거나 하나 이상 표현될 수 있다.

Version ::= 'version ' vnumber

vnumber ::= [a-zA-Z0-9.]+

  • 위의 표현식은 다음과 같다.
    Version = 'version 1.0z'

관련글 더보기