XML | XML Namespaces

S·2024년 4월 16일
0

WEB

목록 보기
7/8

XML 문서는 하나의 markup 언어로 작성하는 것이 일반적이나,
여러 개의 markup 언어들을 이용해서 작성하는 것도 가능하다.

CML: Customer Markup Language
PML: Product Markup Language
OML: Order Markup Language

여러 언어에서 정의된 같은 이름의 엘리먼트들을 사용할 때 이름 충돌이 발생한다.

☛ namespace를 이용하여 각 언어에서 정의되는 이름들의 집합을 구분한다. (접두사를 붙여 사용)

 

Namespace 개념


• Markup 언어의 namespace 이름은 그 언어를 개발할 때 정의한다.

• Namespace 이름은 URI 형태로 정의
    ✔︎ URI (Uniform Resource Locator)
    ✔︎ URN (Uniform Resource Name)

• XML 문서에서 namespace 선언
    ✔︎ Markup 언어가 namespace 이름을 갖고 있을 경우,
        XML 문서에서 namespace에 관한 속성 선언을 해야 함

 

Namespace 사용 방법


XML 문서에서 namespace 이름을 대신할 접두사 선언
✔︎ 일반적으로 루트 엘리먼트의 시작 태그 안에서 선언

접두사는 XML 이름 작성 규칙을 따름
✔︎ 이름은 문자나 _ 로 시작할 수 있음
✔︎ 두 번째 문자부터 숫자, _, -, . 도 가능 (: 불가능)
✔︎ 공백 포함 불가능

각 엘리먼트 이름 앞에 접두사 붙여서 사용
✔︎ 해당 엘리먼트 이름이 그 namespace에 속한다는 것을 의미
✔︎ XML parser는 prefix를 포함한 Qualified Name으로 엘리먼트를 인식 (식별)

<!-- namespace prefix 선언 -->
<root-element xmlns:prefix="namespace 이름" ... >
  
  <!-- namespace 사용 -->
  <prefix:local-name> ... </prefix:local-name>
 
</root-element>

Namespace 적용 범위

Namespace prefix가 선언된 엘리먼트를 포함하여, 그 엘리먼트의 자손 엘리먼트들에 대해서만 적용 가능

 

Default Namespaces

접두사를 생략하고 선언 및 사용하는 namespace
☛ 접두사를 생략한 모든 이름들은 default namespace에 포함된 것으로 간주

Default namespace 선언은 여러 개의 markup 언어를 혼용해서 작성하는 XML 문서에서도 사용 가능

 

Attributes and Namespaces


속성에 대한 namespace 적용

• 속성이 엘리먼트와 무관하게 (전역적으로) 정의되는 경우, namespace 접두사를 사용하여 특정 namespace에 포함됨을 명시함

• 속성이 특정 엘리먼트 내에 (지역적으로) 정의되는 경우, namespace 사용 불필요

• 속성에 대해서는 default namespace가 적용되지 않음

profile
Someone has been here

0개의 댓글