1. 서론(Introduction) : 1.1 기원과 목표(Origin and Goals) : 1.2 용어(Terminology)
 
<스펙 본문>
저작권
Copyright 1995-1998 World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/ 이 문서는 1999년 2월 17일에 http://www.w3.org/XML/xml-19980210-errata에 게시된 정오표의 내용 또한 적용하여 편집하였다.

이 문서의 한국어 번역물에 대한 저작권은 본 문서의 역자인 윈도우 사용자 그룹(천주석, 안성욱 외)에 있으므로 저작권과 관련된 일체의 행동은 이들의 동의를 얻어야 함을 알려 드립니다.

편집자들:
Tim Bray (Textuality and Netscape)
tbray@textuality.com
Jean Paoli (Microsoft) jeanpa@microsoft.com
C. M. Sperberg-McQueen (University of Illinois at Chicago) cmsmcq@uic.edu

한국어 번역:
윈도우 사용자 그룹(천주석, 안성욱 외)
neozen@kornet.net
www.wug.or.kr
www.xmlkorea.org

요약(Abstract)
Extensible Markup Language (XML)은 SGML의 한 부분집합으로 이 문서에 완전하게 기술되어 있다. 이 언어의 목적은 HTML과 더불어 가능한 새로운 방식으로 일반적인 SGML을 웹 상에서 보내고, 받고, 처리할 수 있도록 하는 것이다. XML은 SGML 및 HTML 모두와 호환되며 쉽게 구현할 수 있도록 설계되었다.

이 문서의 지위(Status of this document)
이 문서는 W3C 회원들과 관련 기관들에 의해 감수되었으며 W3C 권고안(Recommendation)으로 승인되었다. 즉, 이 문서는 신뢰할 수 있고 레퍼런스 자체로 이용하거나 다른 문서의 기본 레퍼런스로서 인용될 수 있다는 것을 의미한다. 이 권고안을 만드는 과정에서 W3C의 역할은 이 스펙에 대하여 관심을 집중시키고 널리 쓰일 수 있도록 권장하는 것이다. 이러한 W3C의 역할은 결과적으로 웹의 호환성과 기능성을 향상시킨다. 이 문서는 기존의 널리 쓰이던 범국가적 텍스트 처리 표준(Standard Generalized Markup Language, 수정 및 개정된 ISO 8879:1986(E))을 World Wide Web에서 사용할 목적으로 부분집합을 구성하면서 생성된 문법들을 규정하고 있다. 이것은 W3C XML Activity의 산물이며 이 활동에 대한 자세한 내용은 http://www.w3.org/XML에서 살펴 볼 수 있다. 그 밖의 다른 기술 문서와 최근의 W3C 권고안들은 http://www.w3.org/TR에서 볼 수 있다. 이 스펙에서는 URI 용어를 사용하고 있다. URI 용어는 Berners-Lee 등에 의해 정의되었으며 현재 IETF RFC1738 과 IETF RFC1808을 업데이트하기 위한 작업이 진행중이다. 이 스펙에 대해 보고된 오류 목록은 http://www.w3.org/XML/xml-19980210-errata에서 볼 수 있다. 이 한국어판 문서에 대한 오류를 발견하면 천주석(neozen@kornet.net)에게 알려주기 바란다.

▲ TOP
1. 서론(Introduction)

Extensible Markup Language(약자로 XML이라 쓴다)은 XML 도큐먼트라고 불리는 데이터 객체들의 클래스를 기술하고, 일부 이 XML 도큐먼트들을 처리하는 컴퓨터 프로그램들의 행동을 기술한다. XML은 일종의 SGML 애플리케이션 또는 SGML(Standard Generalized Markup Language [ISO 8879])의 축약된 형태이다. 그 구성을 보면 XML 도큐먼트는 SGML 도큐먼트와 동일하게 하고 있다.
XML 도큐먼트들은 엔터티(entity)라고 불리는 저장 단위들로 구성된다. 엔터티는 파싱되는 데이터 또는 파싱되지 않는 데이터 중의 하나를 포함한다. 파싱되는 데이터는 문자들(character)로 구성된다. 이 문자들의 일부는 문자 데이터(character data)가 되고, 또 일부는 마크업(markup)이 된다. 마크업은 XML 도큐먼트의 물리적 저장소의 배치도 및 논리적 구조에 대한 설명을 부호화하게 된다. XML은 저장소의 배치도 및 논리적 구조를 강제하는 메커니즘을 제공한다.
XML 프로세서(XML processor)라고 불리는 소프트웨어 모듈은 XML 도큐먼트를 읽어 들여서 그 컨텐츠와 구조에 접근할 수 있도록 하는데 사용된다.
XML 프로세서는 응용프로그램(application)이라고 불리는 또 다른 소프트웨어 모듈의 일부로서 작동하는 것으로 가정된다. 이 스펙은 XML 프로세서가 'XML 데이터와 응용프로그램에 제공되어야 하는 정보를 어떻게 읽어야만 하는지'와 관련되어 XML 프로세서에 필수적으로 요구되는 행동에 대해서 기술한다.

1.1 기원과 목표(Origin and Goals)

XML은 1996년에 World Wide Web Consortium (W3C)의 지원 하에 구성된 (원래는 SGML Editorial Review Board이었던)XML Working Group에 의해 개발되었다. 이 그룹의 의장은 역시 W3C에 의해 조직된 (예전에는 SGML Working Group이었던) XML Special Interest Group에 참가하고 있던 Sun Microsystems의 Jon Bosak이었다. XML Working Group의 회원 명단은 부록에 적어 놓았다. Dan Connolly는 W3C와의 연락을 위한 WG의 중개인으로 봉사했다.

XML의 설계 목표는 다음과 같다.

· XML은 인터넷에서 바로 사용할 수 있어야 한다.
· XML 다양한 애플리케이션을 지원해야 한다.
· XML은 SGML과 호환되어야 한다.
· XML 도큐먼트를 처리하는 프로그램을 작성하기 쉬워야 한다.
· XML의 선택적 특징들의 수는 최소로 유지되어야 하고, 이상적으로는 전혀 없어야 한다.
· XML 도큐먼트는 사람이 읽을 수 있어야 하며 이치에 맞도록 명백해야 한다.
· XML 설계는 가능한 빨리 이루어져야 한다.
· XML 설계는 견고한 문법을 가지면서도 간결해야 한다.
· XML 도큐먼트는 생성하기 쉬어야 한다.
· XML 마크업을 간단 명료하게 만드는 것은 가능한 중요하게 고려하지 않는다.

연관된 표준들(문자들을 정의하고 있는 ISO/IEC 10646와 Unicode, 언어 식별 태그를 정의하고 있는 Internet RFC 1766, 언어의 이름 코드를 정의하고 있는 ISO 639, 그리고 국가 이름 코드를 정의하고 있는 ISO 3166)과 함께 이 스펙은 XML Version 1.0을 이해하고 이것을 처리하기 위해 컴퓨터 프로그램을 구축하는 데 필요한 모든 정보를 제공하고 있다.

이 XML 스펙은 이 안의 모든 내용과 법적인 주의 사항이 훼손되지 않는 한 자유롭게 배포될 수 있다.

▲ TOP
1.2 용어(Terminology)

이 용어는 이 스펙의 본문에 정의되어 있는 XML 도큐먼트들을 기술하는데 사용된다. 다음에 정의되어 있는 용어들은 이러한 정의들을 구성하거나 XML 프로세서의 행위를 기술하는 데 사용된다.

~할(일) 수 있다(may).
도큐먼트와 XML 프로세서는 ~을 하는 것이 허용된다. 그러나 기술된 데로 행동해야만 하는 것은 아니다.

~해야(이어야) 한다(must).
도큐먼트와 XML 프로세서는 필수적으로 기술된 데로 행동해야만 한다; 그렇지 않으면 오류가 된다.

오류(error)
이 스펙에 있는 규칙의 위반; 결과는 정의되어 있지 않다. 소프트웨어는 오류를 발견하고, 보고하고, 복구할 수 있다.

치명적 오류(fatal error)
XML 프로세서가 반드시 발견하여 응용프로그램에 보고해야 하는 오류. 치명적 오류를 발견한 후에 XML 프로세서는 또 다른 오류를 찾기 위해 계속해서 데이터를 처리할 수도 있고, 응용프로그램에 그 오류를 보고할 수도 있다. 오류에 대한 수정을 지원하기 위해 XML 프로세서는 도큐먼트의 처리되지 않은 (문자 데이터와 마크업이 섞여 있는)데이터를 응용프로그램이 이용할 수 있도록 할 수 있다. 그러나 일단 치명적 오류가 발견되면 XML 프로세서는 반드시 일반적인 처리를 계속 진행해서는 안 된다 (즉, 프로세서는 문자 데이터와 도큐먼트의 논리적 구조에 관련된 정보를 일반적인 방법으로 응용프로그램에 전달하는 것을 계속해서는 안 된다).

사용자 선택에 따라(at user option)
소프트웨어는 기술된 대로 작동해야만 하거나, 작동할 수도 있다(각 문장에 쓰인 동사가 어떤 것이냐에 의존한다); 만약 소프트웨어가 기술된 대로 작동한다면 소프트웨어는 반드시 사용자들이 기술된 이 행동을 사용 가능하게 하거나 사용 불가능하게 하는 수단을 제공해야만 한다.

유효성 강제(validity constraint)
모든 유효한(valid) XML 도큐먼트들에 적용되는 규칙. 유효성 강제의 위반은 오류가 된다;

문법 적합성 강제(well-formedness constraint)
모든 문법을 따르는(well-formed) XML 도큐먼트들에 적용되는 규칙. 문법 적합성 강제의 위반은 치명적 오류가 된다.

일치(match)
(문자열 또는 이름에서:) 두 개의 문자열 또는 이름이 반드시 동일한 것으로 비교되고 있다는 것을 말한다. ISO/IEC 10646에 있는 복수의 표현이 가능한 문자들(예를 들면, 미리 만들어져있는 형태와 밑+발음 부호 형태를 모두 갖는 문자들)은 두 문자열에서 동일한 표현을 가지는 경우에만 일치한다. 사용자 선택에 따라 프로세서들은 이러한 문자들을 몇 가지 기준 형태로 정규화할 수 있다. 어떤 대문자 변환(case folding)도 수행되지 않는다. (문법에 있는 문자열 또는 규칙에서:) 만약 하나의 문자열이 문법적 결과물에 의해 생성된 언어에 속하고 있다면, 이 문자열이 하나의 문법적 결과물과 일치하고 있다는 것을 말한다. (컨텐츠와 컨텐츠 모델에서:) 한 요소는 "요소 유효(Element Valid)"라는 강제에 기술된 방식을 따르고 있을 때 그 요소의 선언과 일치한다고 말한다.

호환 가능성을 위해(for compatibility)
XML의 특징은 XML이 완전히 SGML과 호환 가능한 채로 있어야 됨을 보장하는 것을 포함하고 있다.

상호 운용성을 위해(for interoperability)
강제적이지 않은 권장사항은, XML 도큐먼트들이 ISO 8879에 대한 WebSGML Adaptations Annex보다 앞서 개발되어, 이미 설치되어 있는 SGML 프로세서 기반에서도 처리될 수 있는 기회를 향상시키는 것을 포함하고 있다.

▲ TOP
 
<천랑의 주석>
용어의 정의
용어의 정의야말로 새로운 언어를 제대로 이해하기 위한 필수적인 요건이 됩니다. XML의 영역(보통 '도메인'이라는 표현을 사용하지요?)에 속한 용어들을 타 프로그래밍 언어나 실세계의 용어와 명확하게 구별하여 사용하는 습관을 들이는 것이 좋습니다. 물론, 많은 경우에 타 프로그래밍에서 사용하는 용어나 실세계의 용어가 XML 도메인에서도 그대로 적용되어 사용됩니다만 일부 용어들을 그렇지 않으니 주의하여 주시기 바랍니다.
먼저 위의 서론에 나와 있는 "XML 도큐먼트"의 정의를 주의해서 봅시다. 많은 XML 번역서에서 Document라는 용어를 그저 "문서"라고 번역합니다만 XML의 영역에서 Document는 좀 다른 의미를 갖습니다. 일반적으로 우리가 문서라고 함은 "워드 프로세서나 에디터, 또는 직접 손에 의해 작성된 유의미한 문자 데이터를 갖는 모든 형식의 정보의 집합"을 일컫는 지극히 불확실하고 막연한 개념입니다. 하지만 XML 1.0 스펙에서는 "데이터 객체들의 클래스"를 XML Document라고 부른다고 명백히 정의하고 있습니다. 여기서 말하는 XML Document를 "XML 도큐먼트(Beginning XML)" 또는 "XML 문서"의 어느쪽으로든 번역할 수 있겠으나 우리가 일반적으로 말하는 막연한 개념의 "문서"가 아니라 훨씬 제한적인 의미를 갖는 좀 더 단순한 개념(데이터 객체들의 클래스)이라는 사실은 명심해 두었으면 합니다.

용어를 명확히 정의하지 않아서 생기는 오해와 잘못된 내용 전달이라는 의사소통의 문제가 많은 경우에 시간과 비용의 엄청난 낭비를 가져오는 원인이 됩니다. 그렇기 때문에 개발자들 사이에서는 "여러가지 의미를 갖는 말"로 인한 의사소통의 문제를 해결하기 위해 명확하게 정의된 새로운 의사소통 언어를 사용하는 것이 바람직한 방법론이 되어 가고 있습니다. 이러한 의사소통의 언어로 대표적인 것이 UML(Unified Modelling Language)이며 이 언어는 다양한 그림과 기호들을 사용하여 시스템을 설명함으로써 여러가지 의미를 갖는 말을 통해 의사소통을 할 때보다 훨씬 쉽게 의사소통을 가능하게 합니다.
이러한 도구를 사용하면 프로그래밍 언어를 모르는 분석가와 프로그래머도 실생활의 언어와 프로그래밍 언어의 매개가 되어주는 이러한 언어를 사용하여 서로 오해없이 의사 전달이 가능해져서 결국 시스템이 오류가 적고, 요구사항을 잘 반영한 완성도가 높은 시스템의 구축이 가능해지는 것입니다.

이 부분의 스펙은 대부분이 용어의 정의와 관련된 내용이므로 꼼꼼하게 잘 읽어 두시기 바랍니다. 그리고 앞으로도 용어의 정의는 중요하게 다룰 예정이니 새로운 용어가 등장할 때마다 잘 기억해 두도록 합시다.

참 고
XML은 아직도 진화를 거듭하고 있는 언어입니다. 항상 XML과 관련 기술들의 동향에 주의를 기울이도록 합시다. 다음 강좌 때까지 W3C의 홈페이지(WWW.W3.ORG)에 들러서 XML과 관련 기술들의 동향을 살펴보면 좋겠네요.
다음 강좌부터는 본격적으로 XML에 대해 알아보도록 하죠. 그럼 다음 강좌에 뵙겠습니다. 천랑 ^^

 

저작권 정보

 

본 강좌는 Prentice Hall 출판사의
"XML: The Annotated Specification"을 일부 참고하였음을 밝힙니다.

본 강좌에서 사용하고 있는 XML 1.0 스펙의 한국어 번역본은 윈도우 사용자 그룹에 그 저작권이 있으며, 이 스펙 전체가 단 한 구절도 훼손되지 않는 경우에 한하여 배포될 수는 있으나 기타 상업적인 목적으로의 전재 및 인용은 금합니다.

본 강좌의 저작권 또한 윈도우 사용자 그룹에 있으며 무단 전재 및 인용을 금합니다

+ Recent posts