본문 바로가기
프로그래밍

XML의 네임스페이스

by 건우아빠유리남편 2008. 12. 31.
반응형

namespace가 필요한 이유는 각각의 태그들의 충돌을 방지하기 위함이다. 컴퓨터는 사용자가 지정하기 이전엔 완전 바보다.

 

<?xml version="1.0" encoding="euc-kr"?>

<User>

<ID>냐옹이</ID>

<Goods>

<Good>

<ID>구름과자</ID>

</Good>

</Goods>

</User>

 

위와 같은 구문에서 컴퓨터는 바보같이 <ID>가 누구의 아이디인지 알 수 없어 한다. (사실은 이 경우 아무 무리 없다. 함수의 호출과 마찬가지로 블럭단위로 알아먹음 )

그렇기 때문에 namespace가 필요하다

XML 1.0 스펙에 의하면 XML 네임스페이스를 정의하기 위해서는 xmlns라는 속성을 사용해야 한다.

XML 네임스페이스를 사용하려면 요소들의 이름이 QName이여야 한다. QName은 qualified name의 약어로서 적합한 이름이란 뜻이다.

QName = namespace part + local part

 

알맞게 다시 고쳐보면 다음과 같이 가능하다

 

<?xml version="1.0" encoding="euc-kr"?>

<cus:User xmlns:cus = "http://www.Nyaonge.Jjang/buy/cus"

               xmlns:Order = "http://www.NyaongeJjang/2002/Order">

<cus:ID>냐옹이</cus:ID>

<cus:Goods>

<Order:Good>

<Order:ID>구름과자</Order:ID>

</Order:Good>

</cus:Goods>

</cus:Good>

 

기본 네임스페이스는 굳이 접두사를 붙일 필요는 없다.

<?xml version="1.0" encoding="euc-kr"?>

<User xmlns:cus = "http://www.Nyaonge.Jjang/buy/cus"

               xmlns:Order = "http://www.NyaongeJjang/2002/Order">

<ID>냐옹이</ID>

<Goods>

<Order:Good>

<Order:ID>구름과자</Order:ID>

</Order:Good>

</Goods>

</Good>

 

다음과 같이 국소적으로도 사용가능하다. 하지만 다음번에 다시 이용할 경우 다시 또 선언해야한다.

 

<?xml version="1.0" encoding="euc-kr"?>

<User xmlns:cus = "http://www.Nyaonge.Jjang/buy/cus">

             >

<ID>냐옹이</ID>

<Goods>

<Order:Good   xmlns:Order = "http://www.NyaongeJjang/2002/Order">

<Order:ID>구름과자</Order:ID>

</Order:Good>

<Order:Good   xmlns:Order = "http://www.NyaongeJjang/2002/Order">

<Order:ID>디스뿔러스</Order:ID>

</Order:Good>

</Goods>

</Good>

 

 

속성은 요소에 결합된다. 요소에 결합된 속성은 요소들에 의해 구분이 자연스럽게 이루어지므로 특별히 네임스페이스에 언급할 이유가 없다. 속성과 요소의 네임스페이스는 전혀 별개이다.

 

 

-----------------------------------------------------

네임스페이스의 종류에는 URI, URL, URN등이 있다.

유식해지기 ^^  

URI=>Uniform Resource Identifier (리소스 식별 문자열)

URL=>Uniform Resource Locator (프로토콜과 인터넷 웹사이트마다 고유하게 부여된 도메인 네임을 결합한 형태 )

URN=>Universal Resource Name(영구적이면서도 위치와는 무관한 이름을 제공함)

-----------------------------------------------------

반응형

'프로그래밍' 카테고리의 다른 글

DTD 규칙  (0) 2009.01.09
Vaild XML 문서란 - DTD에 대한 필요성  (0) 2009.01.09
Well-Formed XML문서 만들기  (0) 2008.12.31
xml 예제  (0) 2008.12.31
XML 소개  (0) 2008.12.31

댓글