메인 컨텐츠로 가기

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

XML은 무엇입니까?

XML(EXtensible Markup Language)은 데이터를 표현하는 방식으로 플랫폼에 독립적입니다. 간단히 말해서 XML을 이용하면 플랫폼과 관계없이 모든 애플리케이션에서 읽을 수 있는 데이터를 작성할 수 있습니다. XML은 HTML을 기초로 하는 동일한 태그 기반 기술을 사용하기 때문에 XML을 직접 편집하거나 작성할 수도 있습니다.

예제

예를 들어, XML을 사용하여 트랜잭션 정보를 저장하고자 한다고 가정해 보겠습니다. 이 트랜잭션은 판매원의 iBook에서 시작하므로 iBook에 트랜잭션을 저장하고 싶을 것입니다. 그러나 그 후에 트랜잭션은 Windows 서버의 데이터 애플리케이션으로 전송되고 결국에는 메인프레임에 아카이브되므로 트랜잭션은 매우 유연해야 합니다. XML을 이용하면 Listing 1에 있는 예제와 같은 코드를 작성할 수 있습니다.

Listing 1. XML 예제

                
<?xml version="1.0"?>
<transaction ID="THX1138">
   <salesperson>bluemax</salesperson>
   <order>
      <product productNumber="3263827">
         <quantity>1</quantity>
         <unitprice currency="standard">3000000</unitprice>
         <description>Medium Trash Compactor</description>
      </product>
   </order>
   <return></return>
</transaction>

이러한 방식으로 텍스트로 직렬화하면 트랜잭션 정보가 필요한 모든 환경에서 이러한 정보를 사용할 수 있습니다. 심지어 특정 애플리케이션이 없어도 이러한 정보가 기술된 컨텐츠(굵은체)와 마크업을 확인할 수 있습니다.

자세히 알아보기

XML은 일단 그 구조를 이해하면 사용은 매우 간단합니다. 또한, XML은 데이터의 구조와 심지어 컨텐츠까지도 제어할 수 있는 다양한 방법을 제공합니다. XML을 사용하기 시작하면 XML 구조를 디자인하는 가장 좋은 방법을 찾게 되지만 이를 위해 복잡한 과정을 거칠 필요는 없습니다.

다음과 같은 참고자료를 사용하여 시작하기

XML은 유연하기 때문에 구성 파일, 웹 서비스, 데이터 스토리지 등과 같은 다양한 애플리케이션에 유용하게 사용될 수 있습니다.

XML로 무엇을 할 수 있습니까?

XML이 소개된 이후, 개발자들은 XML을 다양하게 사용하는 방법을 발견했습니다. 여기에는 작업에 XML을 도입할 수 있는 방법에 대한 아이디어를 얻을 수 있는 몇 가지 참고자료가 있습니다.

데이터 저장

XML이 가장 명백하게 사용되는 분야는 데이터 저장 분야입니다. XML은 데이터베이스에 있는 데이터와 같은 데이터 중심 정보와 XML로 저장된 데이터와 같은 문서 중심 정보를 처리하는 데 장점이 있습니다. (따라서 여러 가지 환경에서 다양하게 데이터를 표시할 수 있습니다.)

다음과 같은 참고자료에서 데이터 중심 스토리지 매체로서의 XML에 관해 자세히 배워볼 수 있습니다.

XML 데이터를 저장하는 데 관심이 있다면 IBM에서 새로운 DB2 9, IBM DB2 Express-C 9 무료 버전을 제공한다는 사실을 알아야 합니다. 또한, DB2 9에서 XQuery와 SQL/XML을 더욱 쉽게 사용할 수 있게 해주는 새로운 DB2 Developer Workbench를 확인해야 합니다.

세 파트로 구성된 이 시리즈의 첫 번째 튜토리얼에서는 XML을 사용하여 문서 중심 데이터를 일반적으로 저장하고 나중에 이 데이터의 프리젠테이션을 조작하는 방법을 살펴봅니다.

웹 서비스

웹 서비스는 HTTP를 기반으로 비 HTML 정보를 전달하기 위한 방법으로 시작되었습니다. 웹 서비스는 웹 사이트에 대화식 작업을 추가하는 데 사용되는 Ajax에서 오늘날의 SOA(Service Oriented Architecture)와 복잡한 메시지 기반 애플리케이션에 이르기까지 다양한 분야의 기반으로 성장했습니다. XML은 웹 서비스 분야의 핵심입니다. 웹 서비스 분야를 선도하는 모든 방법과 SOAP, REST, 심지어 XML-RPC도 XML을 기반으로 합니다.

웹 서비스 분야에서 XML이 어떻게 사용되는지 알려면 다음과 같은 참고자료를 확인하십시오.

자세한 정보는 XML과 웹 서비스 아래 섹션을 참고하십시오.

팟캐스팅과 기타 데이터 신디케이션

오늘날 XML을 가장 일반적으로 사용하는 분야는 신디케이션 분야입니다. 수많은 블로거가 RSS 피드를 사용하여 자신들이 좋아하는 블로그에서 최신 정보를 얻고 있으며 팟캐스팅 즉, 인터넷을 기반으로 iPod과 같은 디바이스에 오디오와 비디오를 배포하는 것에 상업적 관심이 집중되기 시작했습니다.

다음과 같은 참고자료를 통해 신디케이션을 조망해 보십시오.

플랫폼에 독립적인 구성과 전개 지시사항

일반적으로 XML은 사용자가 선호하는 애플리케이션과 개발 환경의 배후에 위치하여 구성 파일이나 지시사항을 작성하기 위한 공통 수단으로 기능을 합니다. 사용자가 읽을 수 있는 XML 파일로 구성 지시사항을 제공함으로써 사용자는 이전보다 훨씬 더 쉽게 애플리케이션의 작동을 제어할 수 있습니다.

다음과 같은 샘플을 통해 이러한 방식으로 XML을 사용하는 방법을 검토해 보십시오.

XML이 애플리케이션 개발에 적합합니까?

Listing 1에 있는 태그가 XML을 가장 일반적으로 직렬화한 것이긴 하지만 애플리케이션 컨텍스트에서 XML 데이터를 처리하는 것이 매우 일반적입니다. 이러한 경우에는 다음과 같은 몇 가지 모델 중에서 하나를 사용하는 것이 일반적입니다.

DOM(Document Object Model)

DOM(Document Object Model)은 오브젝트를 기반으로 하며 트리 방식으로 XML 데이터를 표시합니다. 예를 들면, Listing 1에서 판매원, 주문 및 리턴 요소는 트랜잭션 요소의 하위 요소이며 이는 판매원, 주문 및 리턴 요소가 계층 구조상에서 트랜잭션 요소의 아래에 포함된다는 것을 의미합니다. DOM은 대부분의 XML 기반 애플리케이션에서 XML을 처리하는 기본적인 방식입니다.

다음과 같은 참고자료를 사용하여 DOM을 이해하기

XML용 Simple API(SAX)

DOM은 모두 메모리에 상주하기 때문에 데이터를 조작할 경우에 유용합니다. 그러나 이 때문에 DOM은 자원을 매우 많이 소비합니다.

XML용 Simple API인 SAX를 이용하여 문서의 시작 부분에서 끝 부분까지 데이터를 분석하여 "start element"나 "characters"와 같은 모든 이벤트를 애플리케이션에 알려주면 한 번에 모든 DOM을 메모리에 저장해야 하는 문제점을 해결할 수 있습니다. SAX는 DOM보다 자원에 친화적이지만 사용자가 DOM과 동일한 방식으로 데이터를 처리할 수는 없습니다.

다음과 같은 참고자료를 통해 SAX를 이해할 수 있습니다.

DOM과 SAX는 프로그램 방식으로 XML과 상호작용하는 가장 일반적인 방법이지만 XML 데이터를 처리할 애플리케이션을 빌드하지 않아도 될 때가 있습니다.

XML 데이터 변환(XSLT)

XML을 사용하여 작업을 처리하는 과정에서 프로그래밍이 필요하지 않은 경우도 있습니다. XSLT(EXtensible Stylesheet Language Transformations)를 사용하여 XML을 처리할 수 있습니다. XSLT를 이용하면 XML 문서를 다양한 XML 구조로 변환할 수 있으며 심지어 비 XML 구조로 변환하는 것도 가능합니다. XSLT의 기능은 매우 강력하여 일반적으로 자주 사용됩니다.

XML을 선호하는 프로그래밍 언어와 함께 사용할 수 있습니까?

XML은 플랫폼이며 프로그래밍 언어에 독립적이기 때문에 태그로 구성된 텍스트 파일을 읽고 처리할 XML 문서를 작성하는 구문 분석기와 같은 기본 소프트웨어를 사용할 수 있기만 하면 사실상 모든 프로그래밍 언어와 함께 XML을 사용할 수 있습니다. 다양한 프로그래밍 언어를 사용하여 XML을 처리하는 방법은 다음과 같은 참고자료를 통해 확인할 수 있습니다.

Java

XML 구문 분석 기능과 기타 기능은 직접 Java에 빌드되어 있습니다.

PHP

PHP에서의 XML 지원은 처음에는 그다지 좋지 않았으며 초기 구현물은 DOM 스펙과 잘 맞지 않았습니다. 그러나 현재는 상황이 훨씬 더 좋아져서 보다 표준에 가까운 지원을 합니다.

Perl

Perl은 텍스트를 처리하도록 디자인되었기 때문에 XML을 이용한 방법을 사용하기 보다는 직접 텍스트를 다루고 싶을 수도 있습니다.

Python

Python의 사용하기 쉽다는 점과 플랫폼 간 사용 가능성에 대한 XML의 강점을 고려하면 이 둘의 조합이 잘 들어맞는다고 할 수 있습니다.

C++

C++ 프로그래머 또한 자신이 직접 사용할 수 있는 XML 기능을 얻을 수 있습니다.

Ruby

Ruby 프로그래밍 언어의 REXML 라이브러리는 XML을 지원합니다.

Javascript

JavaScript에서의 XML 지원은 적어도 더 기본적인 조작에서는 Java에서 지원하는 것과 매우 비슷합니다.

기존의 XML 어휘와 애플리케이션이 존재합니까?

개발자들이 다양한 애플리케이션에 XML을 사용하기 시작하면서 표준 어휘나 XML 애플리케이션이 나타나기 시작했습니다. 예를 들면, XHTML은 HTML의 XML 버전이며 팟캐스팅은 RSS라고 하는 특성이 다양한 XML 어휘를 사용하여 이루어집니다. SVB(Scalable Vector Graphics) 언어는 Firefox와 같은 브라우저에서 그래픽 이미지를 렌더링하는 방식으로 XML을 사용하여 그래픽 이미지를 정의하는 방식을 제공합니다.

XML의 작동과 관련된 몇 가지 예제는 아랫부분에서 살펴보게 됩니다.

RSS와 신디케이션

블로거는 자신들이 가장 최근에 작성한 게시물이 표시된 외부 피드와 원래의 자료를 가리키는 링크를 자주 제공합니다. 이러한 피드는 광고주들이 주목하면서 엄청난 비즈니스 기회로 탈바꿈했으며 팟캐스팅과 같은 오디오 및/또는 비디오 배포 서비스는 브로드캐스트 텔레비전 네트워크와 같은 주요 미디어 회사의 주요 관심 분야가 되고 있습니다. 이러한 피드는 XML 형태로 구성되며 RSS나 Atom의 일종입니다.

SVG(Scalable Vector Graphics)

SVG는 전자 출판 분야에서 HTML이 담당했던 역할을 그래픽 분야에서 수행하며 작고 단순한 텍스트 명령어를 사용하여 그래픽을 지정하는 방법을 제공합니다. SVG를 이용하면 대역폭이 작고 프로그램 방식으로 제어할 수 있는 복잡한 그래픽을 작성할 수 있습니다.

XForms

프리젠테이션에 독립적인 방식으로 수집될 정보를 지정하는 방법을 제공한다는 점에서 XForms를 차세대 HTML 양식으로 생각할 수 있습니다. XForms를 이용하면 더욱 많은 기능을 이전보다 더욱 쉽게 추가할 수 있을 뿐만 아니라 정보는 같지만 표현 방법은 완전히 다른 휴대전화와 같은 다른 매체에서 양식을 쉽게 재사용할 수 있습니다.

XML의 활용 분야

출판, 시맨틱 데이터 인코딩 그리고 전화로 대화하는 음성 인식 장치와 같은 다양한 분야에서 XML이 사용되고 있습니다. 다음 참고자료를 통해 몇 가지 사례를 확인할 수 있습니다.

XML은 웹 서비스 및 SOA와 어떻게 관련되어 있습니까?

다양한 기술을 사용하여 SOA(Service Oriented Architectures)를 구현할 수 있지만 웹 서비스를 사용하는 것이 일반적이며 이는 곧 XML을 사용한다는 것을 의미합니다. 웹 서비스를 구현하는 데 가장 일반적으로 사용되는 두 가지 수단인 SOAP와 REST는 모두 XML을 기반으로 합니다.

예제

예를 들면, 다음과 같은 SOAP 문서를 웹 요청으로서 전송하여 Google 웹 서비스에 요청할 수 있습니다(Listing 2 참조).

Listing 2. SOAP 문서를 전송하여 Google 웹 서비스에 요청하기

                
<?xml version='1.0' encoding='UTF-8'?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV=
     "http://schemas.xmlsoap.org/soap/envelope/" 
   xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" 
   xmlns:xsd="http://www.w3.org/1999/XMLSchema">
  <SOAP-ENV:Body>
    <ns1:doGoogleSearch xmlns:ns1="urn:GoogleSearch" 
         SOAP-ENV:encodingStyle=
                  "http://schemas.xmlsoap.org/soap/encoding/">
      <key xsi:type="xsd:string">00000000000000000000000000000000</key>
      <q xsi:type="xsd:string">death star trash compactor</q>
      <start xsi:type="xsd:int">0</start>
      <maxResults xsi:type="xsd:int">10</maxResults>
      <filter xsi:type="xsd:boolean">true</filter>
      <restrict xsi:type="xsd:string"></restrict>
      <safeSearch xsi:type="xsd:boolean">false</safeSearch>
      <lr xsi:type="xsd:string"></lr>
      <ie xsi:type="xsd:string">latin1</ie>
      <oe xsi:type="xsd:string">latin1</oe>
    </ns1:doGoogleSearch>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

이 예제에는 SOAP 엔벨로프(envelope)가 있으며 표준 형식 웹 서비스 엔진은 이 엔벨로프를 인식할 수 있습니다. 이 경우에 이 메시지의 컨텐츠인 doGoogleSearch 요소는 페이로드로 알려졌으며 웹 서비스를 통해 처리될 정보로 구성됩니다.

전체 웹 서비스의 모습

사실상, 웹 서비스와 관련된 표준은 다수가 있으며 대부분은 본질적으로 XML 어휘에 관한 것입니다. 예를 들면, 웹 서비스 기술 언어는 하나의 XML 파일이며 여기에는 서비스가 기술됩니다.

다음과 같은 참고자료를 활용하여 XML과 웹 서비스 시작하기

alphaworks 기술인 ETTK for Web Services를 이용하면 서버가 완비된 웹 서비스 환경을 쉽게 설정할 수 있습니다.

SOA와 웹 서비스 입문 페이지에서 자세한 정보를 얻을 수 있습니다.

XML이 나아갈 미래는 어떤 것입니까?

XML은 현재의 많은 초기 기술과 마찬가지의 상황입니다. 예를 들면, 검색 엔진이 개선되고 웹 환경이 시맨틱 웹으로 이동함에 따라 XML은 웹마스터가 자신이 작성한 페이지에 의미 있는 정보를 추가할 수 있는 도구가 되었습니다. 그리드 컴퓨팅과 자율 컴퓨팅이 계속해서 기반을 다지고 있으며 마찬가지로 이러한 기술에서도 XML 기능이 널리 사용되고 있습니다. 데이터베이스 벤더는 계속해서 XML을 더욱 효과적으로 저장하려고 연구하고 있으며 XML 쿼리 언어가 힘을 얻고 있는 상황입니다.

다음 섹션에는 독자가 XML의 미래를 잠시 살펴볼 수 있게 도움을 주는 참고자료가 있습니다.

RDF, 마이크로포맷 및 기타 시맨틱 기술

시맨틱 웹에는 XML이 필요 없지만 개발자는 현재 이러한 기술에서 주목하는 방식에 따라 XML을 바라보아야 하는 압박을 받게 됩니다. 대부분의 정보는 RDF(Resource Description Framework)나 독립적인 마이크로포맷에 관계없이 몇 가지 XML 형태로 인코드됩니다. 이렇게 하는 이유는 XML이 보편적으로 읽고 인식하기가 쉽기 때문입니다.

그리드 컴퓨팅과 자율 컴퓨팅

세계는 더욱 좁아지고 있고 컴퓨터 시스템의 규모는 더욱 커지고 있습니다. 특히, 연구원, 회사 및 기타 조직은 낭비를 없애서 비용을 줄이거나 컴퓨팅 성능을 개선하기 위해 자신들의 시스템을 한데 모아서 하나의 대형 시스템으로 개선하는 것이 유리하다는 사실을 깨닫기 시작합니다. XML은 플랫폼에 독립적이기 때문에 분리된 시스템 간에 정보를 교환하는 데 매우 적합합니다.

Ajax(Asynchronous JavaScript with XML)

웹의 기능이 더욱 다양해지면서 사용자는 그들이 매일 다루는 애플리케이션에서 더 많은 것을 기대합니다. Ajax(Asynchronous JavaScript with XML)는 대개는 백그라운드에서 XML로 정보를 요청하고, 사용자가 전체 웹 페이지를 새로 요청하도록 하는 대신 웹 페이지의 일부만을 대체함으로써 더욱 세련된 사용자 경험을 제공합니다. 결과적으로 지난해를 전후로 해서 웹은 이 분야에서 급속도로 발전했습니다.

매시업

웹 서비스를 통해 더욱 많은 정보를 사용할 수 있게 되면서 더욱 모험적인 개발자들은 이러한 정보를 사용하여 더욱 다양한 작업을 수행하려고 합니다. 이러한 데이터의 상당 부분을 활용하는 하나의 방법은 급속도로 성장하고 있는 애플리케이션 유형인 매시업이며 여기서는 다양한 소스에서 데이터를 가져와서 하나의 뷰에 결합합니다.

XML 기술을 개선하기 위한 최상의 방법은 무엇입니까?

XML 기술을 개선하고자 하는 경우, 가장 좋은 방법은 본질적으로 기반을 다진 후에 XML을 사용하기만 하면 됩니다. 먼저, XML은 무엇입니까? 아래에 표시된 참고자료를 살펴본 후에 XML이 애플리케이션 개발에 적합합니까? 아래에 있는 참고자료를 참고하도록 합니다. 이를 시작으로 하여 관심이 있는 다른 영역으로 이동할 수 있습니다.

또한, IBM을 통해 XML 인증을 추구할 수 있으며 XML and Related Technologies certification prep, Part 1: Architecture이러한 인증 시리즈의 다른 튜토리얼을 읽어 봄으로써 XML 인증을 준비할 수 있습니다.

요약

XML은 매우 많은 기능을 제공하지만 다행히도 이러한 기능은 그 자체로 매우 단순하고 간단한 기술입니다. 일단 기본적인 사항을 배우면(오래 걸리지 않음) 배우고자 하는 기능을 선택할 수 있습니다. 프로그래머라면 프로그래밍과 다양한 API에 집중할 수 있습니다. 그렇지 않은 경우에도 프로그래밍과 관련이 없는 다양한 사용법에 전념할 수 있습니다. 어떤 경우이든 현 상황에서 자신의 작업에 XML을 어떻게 사용할 수 있을 것인지 분명히 확인할 수 있을 것입니다.