infatuation

Namespace 본문

Programming/XML/HTML

Namespace

화령 2011. 4. 10. 03:06
namespace는 약어(acronym)로 변환하지 않은 XML 관련 개념 중 하나로, namespace는 그것의 목적을 설명하는 이름을 갖는 요소(element)의 접두어(prefix)와 URI사이의 매핑(mapping)이다.

왜 Namespace를 사용하는가

  • XML의 장점 중 하나는 누구나 자유롭게 태그를 정의해서 사용할 수 있다는 것이다. 하지만 이로 인해 분명 중복된 태그가 발생할 수 있다.
  • XML의 문제점 2)XML 태그의 범람, 2)의미가 불분명한 중복된 태그
  • namespace의 충돌을 피하고 파서가 충돌을 해결하는 데이터 구조를 정의할 때 이 매핑을 사용한다.
    • 태그 이름의 모호성으로 충돌이 발생할 경우 namespace를 사용하여 이름을 제한할 수 있다. namespace 문제를 해결하기 위해 URI를 사용한다.

Namespace의 선언

  • XML에서는 xmlns라는 어트리뷰터가 정의되어 있으며, 이는 Namespace 선업을 위해 예약된 어트리뷰트이다.
  • xmlns 어트리뷰트 - namespace 선언을 위한 어트리뷰트
 < 태그 이름 xmlns: 접두어 = "namespace URI" >
 
 * 접두어(prefix) - namespace를 구분해 주는 구분자
 * namespace URI - namespace에 정의된 태그가 속한 URI 
>> 태그를 정의한 사람을 지칭하는 의미적인 값
  • Namespace 선언 예제
< bo:Book xmlns:bo = "http://book.org" >
... 내용 ...
</bo:Bool>
 

QName (Qualified name)

  • QName = Namespace 식별자 + local name
  • XML Namespace 의 유일성을 나타내는 식별자로서 URI (Uniform Resource Identifier) 를 사용한다. URI는 위치 지정자일 수도, 이름일 수도, 혹은 두 가지 역할을 모두 수행할 수도 있다.
  • URL (Uniform Resource Locator)
URI 위치 지정자로서 http ://www.skatestown.com/services/POSubmission 나 mailto :orders@skatestown.com 와 같은 문자열.
  • URN (Uniform Resource Names)
전 세계적으로 유일하게 존재하는 URI.
  • UUDI (Universally Unique Identifiers)
URN으로 사용하기에 적합한 것으로 전 세계적으로 유일한 128비트 식별자.
일반적으로 UUDI는 높은 정밀도의 타임스탬프와 증가 카운터를 갖고 있는 네트워크 이더넷 카드와 결합되어 사용된다.
ex. urn:uudi:2FAC1234-31F8-11B4-A222-08002B34C003


Namespace 구문

  1. Namespace 식별자는 접두어와 콜론(:)을 제외한 XML 엘리먼트 이름으로 가능한 문자로 구성된다.
  2. 유효한 이름 (QName) : 접두어, 콜론, 로컬 엘리먼트 이름으로 되어 있다.(ex. myPrefix:myElementName, msg:text ......)


URI Dereferencing

  • URL을 내용으로 하는 namespace URI 에서 (ex. xmlns:po=http ://www.tek.com/ns/po) 이 URL 이 가리키는 것은 아무런 상관이 없다.단지 식별을 목적으로 사용될 뿐이다.
  • XML 문서 내에서 모르는 namespace를 바라보고 있는 것이 Application에 문제를 야기할 수 있고, 해당 namespace에 속하는 엘리먼트, 속성에 대한 정보를 취할 수 있는 방법이 없다. 이 문제를 해결하는 메커니즘 -> XML_Scchema

 

'Programming > XML/HTML' 카테고리의 다른 글

Ajax  (0) 2009.12.17
XML Review  (0) 2009.12.14