Article Category

분류 전체보기 (202)
사는 이야기 (15)
Programming (174)
Photo (5)
게임 (2)
프로젝트 (0)

Recent Comment

Recent Trackback

Calendar

«   2019/05   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

Archive

  • Total96,493
  • Today0
  • Yesterday2
  1. 2008.08.06
    Working XML: RSS 기능 확장하기 (1)
  2. 2008.08.06
    XML 입문
Working XML: RSS 기능 확장하기 (한글)

네임스페이스를 통해 핵심 표준 강화하기

 





난이도 : 중급

Benoit Marchal, Consultant, Pineapplesoft

2006 년 10 월 17 일

RSS의 대중성에도 불구하고, RSS 표준은 매우 단순하고 제한적입니다. RSS는 많은 것들을 수행하지는 않지만, RSS 모듈을 통해 확장이 가능합니다. 이 글에서 세 개의 대표적인 RSS 확장을 소개하고, RSS 확장을 디자인 하는 방법을 설명합니다.

RSS는 단순하지만 한계가 없다

RSS라는 단어는 많은 뜻으로 풀이될 수 있다: Really Simple Syndication, Rich Site Summary, RDF Site Summary 말고도 더 많은 뜻으로 풀이될 수 있다. 실제로, RSS는 developerWorks를 비롯하여 점점 더 많은 사이트에서 찾아볼 수 있다.

RSS 피드를 통해서 사이트에 등록하고 업데이트 공지를 받을 수 있다. 이메일과는 구별되는 RSS의 두 가지 중요한 특성이 있다:

  • RSS는 특별한 클라이언트, RSS 리더(reader)를 필요로 하고, 이는 웹 브라우저에 점차적으로 추가되고 있다.
  • 이메일과는 달리, RSS는 어떤 개인적인 정보도 사이트와 교환되지 않기 때문에 사용자의 프라이버시를 지켜준다.

RSS 101

RSS 파일을 코딩 하기는 쉽다. 기본적인(root) RSS 엘리먼트를 rss라고 한다. 바로 뒤에는 channel 엘리먼트가 뒤따른다.

channel 뉴스피드의 디스크립션으로 시작한다. 적어도 피드 타이틀(title) 웹 사이트로의 링크(link), 피드의 디스크립션(description)이 포함되어야 한다.

다른 엘리먼트들은 선택적이다. 가장 일반적으로 사용되는 옵션들은 피드 언어(language), 전개일(pubDate), 카테고리 구분(category) 채널이 캐싱될 수 있는 시간(분)인 활성화 시간(ttl) 등이 있다.

docs 엘리먼트 역시 종종 포함된다. 그리고 특별하다. docs 엘리먼트는 RSS 문서를 가리켜서 모든 RSS 문서에 같은 값을 갖도록 한다.

채널 디스크립션이 item 엘리먼트의 리스트가 된 후에, 이 곳에서 각 아이템은 뉴스가 될 만한 이벤트를 나타낸다.

뉴스가 될 만한 것이란 무엇인가? 이는 사이트와 애플리케이션에 의존한다. 일반 웹 사이트의 경우 아이템은 중요한 업데이트를 나타낸다. Podcast의 경우, 새로운 에피소드를 나타낸다. 네트워크 모니터링 애플리케이션의 경우에는 네트워크 경고가 될 것이고, 포럼의 경우에는 새로운 게시물이 될 것이다.

item의 콘텐트는 채널처럼 시작한다: title, link, description. 날짜, 멀티미디어 콘텐트로의 링크(enclosure), 소스, 코멘트 등으로 보다 구체적이 된다.

디스크립션에 HTML 태그를 포함하려면 이들에서 벗어나야 한다. (주로 CDATA 섹션을 통한다.)

주목해야 할 것은, guid 엘리먼트이다. 이것은 유일 식별자이다. 이것이 있을 경우, RSS 리더는 여기에 의존하여 새로운 아이템을 구분한다. GUID를 사용할 수 없다면 리더는 아이템 타이틀과 콘텐트를 비교하여 새로운 아이템을 찾는다.

Listing 1은 RSS 피드 샘플이다:


Listing 1. RSS 피드
				

<rss version="2.0">

  <channel>

    <title>Marchal.com</title>

    <link>http://www.marchal.com/</link>

    <description>Marchal's site.</description>

    <docs>http://blogs.law.harvard.edu/tech/rss</docs>

    <language>en</language>

    <copyright>Copyright 2006, Benoit Marchal.</copyright>

    <pubDate>Fri, 30 Jun 2006 00:35:40 +0200</pubDate>

    <item>

      <title>Online photos</title>

      <link>http://www.marchal.com/en/photos</link>

      <description><![CDATA[<p>In 2002 I added a digital camera to my

         writer toolbox. I have used it to illustrate my articles and web

         sites.</p>

         <p>While I had some experience with film-based photos, I was

         new to digital images. Most of the things I knew were

         still valid, others I had to re-learn. There was

         a lot of new material as well. These pages summarize

         my findings.</p>]]></description>

      <pubDate>Fri, 30 Jun 2006 00:35:40 +0200</pubDate>

      <category>photo</category>

      <category>2002</category>

      <guid isPermaLink="false">photos</guid>

    </item>

  </channel>

</rss>


피드에 등록하려면 방문자는 RSS 리더가 필요하다. 리더는 일정 간격으로 RSS 파일을 다운로드 하고 새로운 아이템이 발견되면 사용자에게 공지해야 한다.

RSS 리더는 메인 브라우저로 빌트인 된다: Firefox 1.5, Internet Explorer 7, Safari에는 이미 RSS 리더가 포함되어 있다. NewsGator에서 독립 리더기 역시 사용할 수 있다. 새로운 소프트웨어를 설치하고 싶지 않은 경우, Google Reader나 NetVibes 같은 Aggregator 사이트를 통해 피드를 읽을 수 있다. Zookoda 같은 이메일을 보내는 RSS도 있다.

섹션에서 다룬 것 이상의 더 많은 엘리먼트들이 RSS에서 정의된다. 참고자료를 참조하라.

RSS 힘

간단히 말해서, 정보를 공유하거나 사용자에게 공지를 해야 하는 애플리케이션이나 웹 사이트들은 RSS 피드의 효과를 보고 있다. 실제로, RSS 사용이 산불처럼 확산되고 있다.

많이 사용되는 만큼, 골칫거리도 있다. 많은 개발자들은 아이템에 개념을 맞춰야 하고 너무 제한적이라는 것에 불만을 쏟아내고 있다. 이러한 한계를 해결하기 위해, RSS 2.0은 확장 가능한 언어로 설계된다. 원리는 간단하다. RSS 엘리먼트는 네임스페이스에 포함되는 것뿐만 아니라(RSS 0.92와 백워드 호환), 개발자들은 자신의 네임 스페이스에 엘리먼트를 추가하는 것으로 RSS를 자유롭게 확장할 수 있다.

태그에 네임스페이스가 있을 때 RSS 리더는 이 네임스페이스에서 확장을 인식해야 한다. 이것이 성공하면 엘리먼트를 처리할 수 있다. 그렇지 못할 경우 그 엘리먼트를 무시한다.

따라서 RSS는 보다 강력한 애플리케이션을 구현할 수 있는 중추가 된다. 이 메커니즘의 힘은 확장이 리더에 선택적이기 때문에 확장을 처리하지 못한 리더도 핵심 RSS 스팩으로 민감한 작업을 수행할 수 있다.

네임스페이스

여기에서 잠깐, 네임스페이스에 대한 몇 가지 미신들을 짚고 넘어가겠다. 놀랍게도, W3C에서 네임스페이스 권고안이 발표된 후 7년이 지났는데, 여전히 상당한 오해가 생겨나고 있고, 몇몇 RSS 리더에 표준이 잘못 구현되고 있다.

네임스페이스는 RSS 같이 핵심 엘리먼트 세트에 대한 확장을 필요로 하는 어휘에 대해 설계된다. 특별히, 네임스페이스는 두 개의 다른 확장이 다른 의미를 지닌 채 같은 XML 엘리먼트를 사용할 때 네임 충돌을 방지한다.

확장은 독립적으로 개발되기 때문에, 공통 이름이 재사용되기 전 시간의 문제이다. 예를 들어 “key”라는 단어를 생각해 보자. 이것은 데이터베이스 키로 사용되거나 암호 키로 사용될 수 있다.

이러한 모호함을 없애기 위해, 네임스페이스는 엘리먼트 이름을 로컬 이름과 네임스페이스 Uniform Resource Identifier (URI)로 나눈다. 네임스페이스 URI는 확장의 고유 식별자이다. 로컬 이름은 독자성을 보장할 수 없지만 로컬 이름과 네임스페이스 URI를 결합하면 고유성이 보장된다.

독자 여러분들은 이러한 네임스페이스 문법을 알고 있으리라 생각한다. xmlns 애트리뷰트는 접두사를 선언하고 이것을 네임스페이스 URI로 제휴시킨다. 접두사는 네임스페이스 URI를 로컬 이름과 연결한다. 로컬 이름과 접두사를 구분할 때는 콜론을 사용한다. Listing 2는 예제이다.


Listing 2. 네임스페이스 선언
				

<dc:contributor xmlns:dc="http://purl.org/dc/elements/1.1/">

Marchal</dc:contributor>


실제로, 네임스페이스의 두 가지 부분이 혼돈스럽다:

  • 식별자는 URI와 대부분의 경우 URL이다.
  • 접두사와 로컬 이름의 결합으로 독자성을 보장하지 못한다. 독자성을 위해서 네임스페이스 URI를 사용해야 한다.

두 가지 실수에 대해 설명하겠다.

우선, 네임스페이스 URI부터 설명하겠다. 네임스페이스 정황에서, URI는 어휘의 정의가 아닌 식별자이다. 따라서 URI가 가리키는 리소스는 관련이 없다. 많은 경우, 리소스는 존재하지도 않는다.

개발자와 사용자는 정의를 좋아하지만, 이들은 주어진 네임스페이스에서 엘리먼트를 처리하기 전에 파일 다운로드에 애플리케이션 실행이 허용되지 않는 것으로 간주한다.

많은 애플리케이션들은 영구적인 인터넷 연결 없이도 실행된다. 인터넷 연결이 된 상태에서는, 파일 다운로드는 느려진다. 웹 사이트를 (임시적으로) 사용할 수 없을 때 어떤 일이 발생하겠는가?

더욱이, 네임스페이스 정황 속에서, 식별자만 필요하다.

접두사는 어떤가? URI를 모든 태그에 붙이면 문서의 길이가 길어진다. 따라서, 접두사는 URI를 짧게 할 수단으로 사용되었다. 하지만 접두사로는 독자성을 보장할 수 없으므로(로컬 이름을 독자적으로 만들 수 없다면 접두사에 독자성을 기대할 수는 없다. 게다가 접두사는 대게 짧기 마련이다.) URI를 참조해야 한다.

따라서 특별한 문자로 URI를 만들게 된다. 대부분의 URI는 URL이고, URL에는 도메인 이름이 포함되어 있기 때문에 유일 식별자이다. 여러분이 가진 도메인 이름을 사용하여 네임스페이스를 정의하는 한, 다른 조직이 같은 도메인으로 등록할 수 없기 때문에 고유성이 보장된다.

세 가지 확장

실제로 확장이 어떻게 작동하는지 잘 이해할 수 있도록 RSS의 세 가지 확장에 대해 살펴보기로 하자:

  • 메타데이터용 Dublin Core
  • Podcasting용 iTunes
  • 확장을 확장하는 Syndicated Photography

Dublin Core

Dublin Core는 RFC2413에 정의된 메타데이터 엘리먼트이다. Dublin Core는 리소스를 검색하는 최소 메타데이터 세트이다. (META 엘리먼트) HTML과 다양한 XML 어휘로 사용되었다.

Dublin Core의 몇몇 엘리먼트는 RSS 엘리먼트(예, language)를 중복하는데, 이는 RSS 이전에 개발되었기 때문에 어쩔 수 없었다. Dublin Core 확장을 channel이나 item에 붙일 수 있기 때문에 중복 역시 유용하다. 예를 들어, RSS copyright 엘리먼트는 channel 레벨에만 나타나는 반면, Dublin Core rights를 개별 아이템들에 붙일 수 있다.

Dublin Core 네임스페이스는 http://purl.org/dc/elements/1.1/이다.

Listing 3은 RSS의 Dublin Core 예제이다:


Listing 3. Dublin Core
				

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"> 

<channel>

   <title>Marchal</title>

   <link>http://www.marchal.com/</link>

   <description>Personal site.</description>

   <language>en</language>

   <item>>

      <title>Introduction</title>

      <link>http://www.marchal.com/en/</link>

      <description>Introduction to the site.</description>

      <dc:creator>Marchal</dc:creator>

      <dc:rights>Copyright 2001-2004 Marchal</dc:rights>

   </item>

</channel>

</rss>


Dublin Core 확장은 RSS와 비슷한 엘리먼트 조차도 더 많은 옵션들을 제공함으로서 값을 추가할 수 있다는 것을 보여준다.

iTunes Music Store

iTunes는 iTunes Music Store를 통해 Podcast로 직접 액세스 할 수 있다. 스토어에 Podcast를 통합하기 위해, iTunes는 http://www.itunes.com/dtds/podcast-1.0.dtd 네임스페이스로 확장을 정의했다.

iTunes 확장은 다음과 같은 이유로 인해 주목할 만 하다:

  • 정의가 다를 때 RSS와 비슷한 엘리먼트를 재 정의 한다. (itunes:image iTunes는 300/300 픽셀의 이미지가 필요한데, RSS는 최대 넓이를 144로 정의한다.)
  • 새로운 엘리먼트를 정의하여 사용자 접근성을 강화한다. (예를 들어, itunes:duration은 Podcast 기간을 제공하는 반면, RSS는 파일 길이만 제공한다.)

Listing 4는 iTunes 확장이 된 RSS 예제이다:


Listing 4. iTunes 확장의 RSS 피드
				

<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"

    version="2.0">

  <channel>

    <title>Declencheur</title>

    <link>http://www.declencheur.com/</link>

    <description>Le podcast qui parle photos</description>

    <docs>http://blogs.law.harvard.edu/tech/rss</docs>

    <language>fr</language>

    <copyright>© 2006, Benoit Marchal. Tous droits reserves.</copyright>

    <pubDate>Wed, 24 May 2006 16:19:39 +0200</pubDate>

    <itunes:author>Benoit Marchal</itunes:author>

    <itunes:image href="http://www.declencheur.com/clic/medias/2006/dsc_7478.jpg"/>

    <itunes:category text="Arts & Entertainment">

      <itunes:category text="Photography"/>

    </itunes:category>

    <itunes:category text="International">

      <itunes:category text="French"/>

      <itunes:category text="Belgian"/>

    </itunes:category>

    <item>

      <title>Histogramme</title>

      <link>http://www.declencheur.com/clic/archives/2006/05/histogramme-visuel</link>

      <description><![CDATA[<p><img alt="L'histogramme" height="225"

      width="150" align="right" class="photo illustrationright" 

       src="http://www.declencheur.com/clic/medias/2006/_dsc1808.jpg" />A mes yeux,

       l'histogramme est un des progres les plus remarquables de la photographie sur

       les dix dernieres annees. Un progres dans la precision de l'exposition au moins

       aussi important que la mesure matricielle en son temps.</p>

       <p>Les trois segments de l'episode sont (entre parentheses, le debut du

       segment concerne) :</p>

       <ol><li>(01:34) Elinchrom D-Lite, je suis particulierement enthousiaste

       par l'arrivee de ces flashes electroniques de studio. Mes premieres

       impressions.</li>

       <li>(07:40) Histogramme, le theme principal de l'episode. Un

       <a href="http://www.declencheur.com/clic/medias/2006/decl-2006-05-13.pdf"

       target="_blank">complement visuel</a> est disponible.</li>

       <li>(27:03) Vos commentaires, mes reactions : conseils pour la sauvegarde

       et precisions sur l'impression jet d'encre. Merci de votre

       soutien !</li></ol>

       <p>Les liens presentes dans l'episode :</p>

       <ul><li><a href="http://www.elinchrom.com"

       target="_blank">Elinchrom</a></li>

       <li><a href="http://www.foto-mueller.at" target="_blank">Foto

       Mueller</a><br clear="right" /></li></ul>]]></description>

      <pubDate>Mon, 15 May 2006 00:21:13 +0200</pubDate>

      <category>numerique</category>

      <category>technique</category>

      <enclosure length="34722926" type="audio/mpeg"

      url="http://www.declencheur.com/clic/medias/2006/decl-2006-05-14.mp3" />

      <guid isPermaLink="false">histogramme</guid>

      <itunes:duration>36:08</itunes:duration>

    </item>

  </channel>

</rss>


Syndicated Photography

Photocasting은 RSS 피드를 통해 사진을 배포하는 것이다. Podcast와 원리가 비슷하지만 소리 대신 이미지가 사용된다. 언뜻 보기에, RSS 피드에 사진을 배포하는 것처럼 보이지만 enclosure 엘리먼트면 충분하다.

좋은 포토 뷰어는 먼저 썸네일을 다운로드 하고 사용자 요청 시 사진을 다운로드 한다. 이는 enclosure 작동이 아니므로 Pheed는 두 개의 태그로만 확장을 정의해야 한다: photo:thumbnail (빠르게 다운로드 되는 작은 이미지)과 photo:imgsrc (완벽한 해상도의 이미지). Pheed는 사진 같은 멀티미디어 문서를 지원하는 RSS Aggregator이다.

사진 역시 메타데이터가 필요하고 Pheed는 Dublin Core를 선택했다. 따라서 사진 확장은 또 다른 확장으로 구현된다. 중복 노력을 줄일 수 있다.

Listing 5는 사진 피드의 예제이다. 두 개의 네임스페이스가 선언된다:


Listing 5. 포토 피드 확장을 갖춘 RSS 피드
				<?xml version="1.0" encoding="iso-8859-1"?>

<rss version="2.0" xmlns:photo="http://www.pheed.com/pheed/"

                   xmlns:dc="http://purl.org/dc/elements/1.1/"> 

<channel>

   <title>Fun with photos</title>

   <link>http://www.marchal.com/en/photos/</link>

   <description>Photo humor.</description>

   <language>en</language> 

   <item>

      <title>Journalist</title>

      <link>http://www.marchal.com/en/photos/humour</link>

      <description>He needs to fly</description>

      <dc:creator>Marchal</dc:creator>

      <dc:rights>Copyright 2004 Marchal</dc:rights>

      <dc:format>digital</dc:format>

      <dc:subject>Lego humor</dc:subject>

      <photo:imgsrc>

         http://www.marchal.com/en/photos/humour/phbd0001.jpg

      </photo:imgsrc>

      <photo:thumbnail>

         http://www.marchal.com/images/shared/thbd0001.jpg

      </photo:thumbnail>

   </item>

</channel>

</rss>


확장 정의하기

RSS에 한 개 이상의 기능을 추가하려면 어떻게 해야 할까?

  1. 필요한 확장이 이미 존재하고 있는지의 여부를 확인한다. 바퀴를 다시 만들 필요는 없기 때문이다. RSS 리더에 이만한 악몽은 없다.
  2. 새로운 확장이 여전히 필요하다면 네임스페이스 생성에 대한 정확한 규칙을 적용하라.
  3. 정확히 맞는다면 기존 엘리먼트를 과감하게 재 정의하라. (예를 들어, itunes:image는 비슷하지만 RSS의 고유 image와는 다르다.) 엘리먼트의 과용은 혼란만 가져올 뿐이다.

RSS는 유연한 포맷이지만, 이 보다 더 중요한 사실은 방송이 필요한 애플리케이션의 좋은 출발점이다. 확장 메커니즘 덕택에 가능성은 무궁무진 하다.

기사의 원문보기



참고자료



필자소개

Benoît Marchal은 벨기에에서 컨설턴트 및 저술가로 활동하고 있다. XML by Example, Applied XML Solutions, XML and the Enterprise 등을 집필했다. Declencheur podcast도 만들고 있다.


Trackback 0 and Comment 1

developerWorks XML 존에 있는 수 많은 기술자료, 튜토리얼, 팁들은 XML 관련 애플리케이션들을 활용하는데 유용한 지침이 되기도 하지만 신참 사용자들에게는 이 많은 정보들이 부담스러울 것입니다. 그래서 XML을 배우고 싶지만 어디서부터 시작해야 하는지를 모르는 사람들을 위해 본 페이지를 마련했습니다. XML 기술의 기초를 다지고, developerWorks의 관련 기술자료, 튜토리얼, 팁, IBM 교육 서비스, 웹 캐스트, 워크샵, IBM 제품들도 참조할 수 있습니다.


XML이란 무엇인가?

Extensible Markup Language(XML)는 콘텐트를 마크업 하는 방식을 제공한다. XML을 사용하여 저장된 정보를 사용하여 파서로 알려진 애플리케이션은 관련 정보들을 안전하게 추출하고 이를 여러 상황에 맞게 처리한다.

참고자료:



위로


XML 활용 방법은?

XML은 광범위한 애플리케이션에서 사용될 수 있지만 기본적으로는 데이터를 표현하는 방식이다. 어떤 경우에 데이터는 데이터베이스에 사용되기도 한다. 또 어떤 경우에는 사람들이 읽을 수 있도록 제공된다. 데이터 밸리데이션과 XSL 변형 같은 기술은 XML과 함께 진화하고 있다.

XML에는 문서의 구조와 내용을 확인하는 기능이 포함되어 있다. 문서 밸리데이션 기능으로 특별한 구조를 가진 애플리케이션과 데이터가 인터랙팅 할 때 문제를 방지할 수 있다. 이는 특히 XML이 비 XML 레거시 시스템과 인터랙팅 해야 할 때 유용하다. 첫 XML 1.0 Recommendation에는 Document Type Definitions (DTD) 지원이 포함되었는데 여기에 밸리데이션 기능들이 있다. W3C XML Schemas는 이러한 기능을 확장하여 보다 XML 다운 신택스를 제공한다.

XML로 캡슐화 된 데이터는 많은 방식으로 사용될 수 있다. 이를 조작하는 한 가지 방법은 Extensible Stylesheet Language Transformations (XSLT)를 사용하는 것이다. 개발자들은 이것을 사용하여 특정 결과를 만들어 내기 위해 XML에서 수행되어야 하는 연산들을 정의한다. 정보를 변형하는 기능으로 인해 여러 아웃풋에 하나의 소스를 사용할 수 있게 되었다. 아웃풋이 다른 데이터베이스나 다른 브라우저로 갈 수 있다.

XSL Formatting Objects (XSL-FO)는 데이터를 포맷하는 강력하고 유연한 XML 어휘로서 종종 XSLT와 사용되어 XML과 HTML 문서를 Portable Document Format (PDF)으로 변환한다.

참고자료:



위로


애플리케이션 개발에 XML을 사용하는 방법?

XML 애플리케이션을 구현할 때 여러 모델이 등장한다. 이 모델들은 XML 애플리케이션에 사용할 수 있는 API를 생성시켜 XML 구조를 분석하거나 조작한다. 이러한 모델은 Document Object Model (DOM)과 JDOM 처럼 객체 기반이 될 수 있고 Simple API for XML (SAX) 처럼 이벤트 기반이기도 하다. 또한 Java API for XML Parsing (JAXP)는 DOM, SAX, XSLT를 사용하여 XML 문서를 처리하는 공통 인터페이스를 제공한다.

이러한 API들 중 가장 대중적인 것이 DOM이다. 이 안에서는 문서의 각 부분이 특정 유형의 노드로서 기술된다. 이 노드들은 부모-자식 쌍으로 정렬된다. DOM API용 바인딩은 Java technology, C++, Perl, Python 등의 다양한 언어에 존재한다.

SAX는 그 다음으로 대중적인 API이다. DOM 객체 기반 모델과는 달리 SAX는 이벤트 기반 모델로서 문서를 startElement() 같은 콜백 시리즈로 변환한다.

XML의 중심은 단순한 텍스트이기 때문에 누구라도 이 텍스트와 작동할 API를 만들 수 있다. 사실, SAX는 공식 단체가 아닌 XML-DEV 메일링 리스트의 멤버가 만들었다. 역시 객체 기반인 또 다른 API는 JDOM이다. JDOM은 DOM과 비슷하지만 자바와 보다 밀접하게 연관되어 있다.

참고자료:



위로


어떤 종류의 XML 언어가 사용되는가?

XML의 장점 중 하나는 여러 정황 속에서 이해될 수 있다는 점이다. 다양한 XML 어휘들로 사람들은 즉각적으로 상대방을 이해할 수 있다. 일반적으로 Extensible HyperText Markup Language (XHTML), Resource Definition Framework (RDF), Scalable Vector Graphics (SVG)가 있다.

XHTML은 HTML을 XML로 바꾼 것이다. XHTML 문서는 XML의 규칙을 준수하는 단순한 HTML 문서이다. 다른 XML 어휘들은 비즈니스와 표현 목적으로 개발되었다. RDF는 정보를 XML 문서에 추가하는 방법을 제공한다. SVG는 XML을 사용하여 그래픽 엘리먼트를 정의할 수 있다. (SVG는 단순한 텍스트 기반 XML이기 때문에 SVG는 그래픽 뿐만 아니라 애니메이션과 스크립팅을 동적으로 생성하는데 사용될 수 있다. Voice Extensible Markup Language (VoiceXML)은 폰 메뉴와 기타 음성 관련 시스템에 사용된다.

XML을 이해했다면 XML에 포함된 다양한 엘리먼트와 애트리뷰트를 이해해야 한다.

참고자료:



위로


XML과 웹 서비스를 연관시키는 방법?

XML은 웹 서비스를 구현할 수 있는 완벽한 토대이다. 쉽게 표준화 되고 이해될 수 있는 메시지 생성이 가능하기 때문이다. 웹 서비스 소개와 웹 서비스 관련 참고자료는 developerWorks SOA와 웹서비스 존을 참조하라. 특히, "SOA와 웹서비스 입문"을 참조하기 바란다.



위로


XML 스킬을 높일 수 있는 방법?

XML의 기초를 이해했다면 향상의 여지도 많이 있고 천천히 진화 중이라는 것도 알 수 있을 것이다.

참고자료:

XML 인증 프로그램
XML 같은 큰 영역에서는 자신의 기술을 평가할 수 있는 객관적인 표준이 필요하다. 인증 프로그램이 그 체크 포인트가 될 수 있다.

IBM은 여러분의 기술 레벨을 가늠할 수 있는 인증 프로그램을 제공하고 있다. Test 141: XML과 Related Technologies를 통과하면 IBM Certified Developer -- XML과 Related Technologies 인증(IBM Certified for e-business - 인증의 일부)을 받을 수 있다. developerWorks 튜토리얼 시리즈 "IBM XML 인증 성공"을 참조하기 바란다.

  • Part 1 -- XML 기초, DTD, W3C XML Schema, 웹 서비스, 보안
  • Part 2 -- XPath, XSLT, XLink, XPointer, CSS, XSL-FO, SAX, DOM
  • Part 3 -- XML 시험 대비


위로


XML에 사용할 수 있는 IBM 툴과 제품은?

IBM은 XML 애플리케이션 개발에 사용되는 많은 툴을 제공하고 있다. 표준 제품부터 alphaWorks 프로그램을 통해 제공되는 테스트베드 구현까지 다양하다.

XML을 제어하고 애플리케이션에 포괄적인 쿼리가 가능하다. DB2 Express-C 9를 다운로드 하라. DB2 Express-C 9은 업계 최초 합성 서버로서 아무런 제한(사용자나 데이터베이스 크기 제한) 없이 자유롭게 개발, 전개, 배포할 수 있다. XML과 관계형 데이터의 쿼리는 DB2 Express-C 9에 포함된 pureXML 기술을 통해 쉽게 사용할 수 있다. DB2 Express-C 9를 보다 자세히 이해하기 바란다. 새로운 DB2 Developer Workbench도 다운로드 하여 DB2 9의 XQuery와 SQL/XML의 힘을 경험하기 바란다.

IBM의 Lotus Notes/Domino 에는 XML 데이터 작업에 사용되는 많은 툴들이 있다. "Notes/Domino 6을 사용한 XML 데이터 퍼블리시" 튜토리얼에서는 Notes/Domino에 내장된 XML 프로세싱 기능을 사용하여 XML 데이터를 사용하는 방법을 설명한다. 디벨로퍼웍스의 로터스 존을 방문해보라.

IBM의 샘플 IT 프로젝트에는 오픈 표준 기반 기술과 IBM 소프트웨어 제품들을 사용한 엔드투엔드 솔루션을 구현하는 방법과 관련한 기술자료, 튜토리얼, 팁 등을 소개하고 있다.

alphaWorks는 XML 애플리케이션 개발에 사용되는 많은 툴들을 제공한다:

XML page (alphaWorks) 참조
Trackback 0 and Comment 0