2013년 8월 14일 수요일

[오라클자바community XML 강좌]XML NameSpace(네임스페이스) 란?

각기 다른 XML문서 타입에 의해 정의된 요소들을 이용하여 다른 문서로 결합시킬때 요소들(또는 특성들)을 구분할수 있는 수단을 제공
 접두어로서 분리하여 하나의 문서에 같은 이름을 가진 요소및 속성을 효과적으로 표시할수 있다.
 반드시 선언후에만 사용이 가능하다. 대부분 ROOT요소에 선언, 물론 일반요소에도 선언 가능하다. 


오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(신입사원채용무료교육, 오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷)  


<custom>
  <user>
      <name>
<first>Jong-Cheol</first>
<last>Lee</last>
      </name>
  </user>
  <company>
      <name>부동산뱅크</name>
  </company>
</custom>


<ur:custom>
  <ur:user>
      <ur:name>
<ur:first>Jong-Cheol</first>
<ur:last>Lee</last>
      </ur:name>
  </ur:user>
  <comp:company>
      <comp:name>부동산뱅크
      </comp:name>
  </comp:company>
</custom>


NameSpace(네임스페이스) 형식

하나의 네임스페이스가 하나의 접두어 형태로 사용된다.
 선언형태  xmlns : 접두어 = 네임스페이스 URI
 접두어가 필요한이유는 편리하다는 부분도 있지만 URI등에는 XML에서 허용하지 않는 ‘/’. &등 특수 문자가 있을수 있다. 그래서 접두어가 URI를 대신하는 것이다.
 예) <customer xmlns:blue = “http://www.blue.com/namespace”>
        <blue:user>jclee</blue:user>
        <user>
  <name>hahaha</name>
        </user>
        </customer>


요소에 네임스페이스 적용 
      - 요소와 그것의 자식요소들이 같은 네임스페이스 적용
<?xml version="1.0" encoding="euc-kr" ?>
<bookstore  xmlns:bk = "http://www.bookstore.com/namespace">
        <bk:book>
<bk:title>XML World</bk:title>
<bk:author>jclee</bk:author>
      </bk:book>
</bookstore>


NameSpace(네임스페이스) 적용예 
      - 요소와 그것의 자식요소들이 다른 네임스페이스 적용
<?xml version="1.0" encoding="euc-kr" ?>
<book:author xmlns:book="http://www.oralcejava.co.kr/book" 
xmlns:info="http://www.oralcejava.co.kr/info" >
<book:name>홍길동</book:name>
<book:title>XML전문가과정</book:title>
<book:profile>
<info:html>
<info:head>
<info:title>소개의 글</info:title>
</info:head>
<info:body>
본문 내용 입니다...
</info:body>
</info:html>
</book:profile>
</book:author>


NameSpace(네임스페이스) 적용예 
      - 자식요소에서  네임스페이스 선언
<?xml version="1.0" encoding="euc-kr" ?>
<bookstore xmlns:bk = "http://bookstor.com/namespace">
<bk:book>
<bk:name>XML World</bk:name>
<human:author xmlns:human="http://www.human.net/ns">
<human:name>jclee</human:name>
</human:author>
</bk:book>
</bookstore>


NameSpace(네임스페이스) 적용예 
      - 특성에  네임스페이스 적용(네임스페이스에 포함되지 않는 특성)
<?xml version="1.0" encoding="euc-kr" ?>
<user xmlns:blue="http://www.blue.com/ns">
<blue:name id="C01">
<blue:first>jong-cheol</blue:first>
<blue:last>jong-cheol</blue:last>
</blue:name>
</user>
*** ‘id’의 경우 그것을 포함하는 요소의 네임스페이스와는 별개의 것.
<blue:name>의 네임스페이스로 인식되길 바란다면 명시적으로 기술해야 한다.
그러나 실제 이러한 속성이 어느 네임스페이스에 있던지 문제되지 않는다.(왜: 어플리케이션은 속성 자체에 직접 접근하지 않으며 우선 요소에 접근하여 특성을 처리한다.)



NameSpace(네임스페이스) 적용예 
      - 특성에  네임스페이스 적용
          (서로 다른 네임스페이스에 포함되는 요소와 그것의 특성)
<?xml version="1.0" encoding="euc-kr" ?>
<user xmlns:blue="http://www.blue.com/ns"
xmlns:path="http://www.path.com/ns"
path:locator= "1" >
<blue:name blue:id="C01" path:locator="2">
<blue:first path:locator="3">jong-cheol</blue:first>
<blue:last path:locator="4">jong-cheol</blue:last>
</blue:name>
</user>
***요소는 "http://www.blue.com/ns" 네임스페이스에 속하며 속성은 “http://www.path.com/ns” 네임스페이스에 속한다.


NameSpace(네임스페이스)의 범위
기본 네임스페이스
접두사를 따로 지정안하는 경우 그요소및 자식요소들은 그 네임스페이스를 사용한다.
<?xml version="1.0" encoding="euc-kr" ?>
<bookstore  xmlns:bk = "http://www.bookstore.com/namespace">
        <bk:book>
<bk:title>XML World</bk:title>
<bk:author>jclee</bk:author>
        </bk:book>
</bookstore>

<?xml version="1.0" encoding="euc-kr" ?>
<bookstore  xmlns = "http://www.bookstore.com/namespace">
        <book>
<title>XML World</title>
<author>jclee</author>
  </book>
      </bookstore>

*** 기본 네임스페이스로 사용하기 위해서는 접두어를 생략한다. 


기본 네임스페이스
<?xml version="1.0" encoding="euc-kr" ?>
<author xmlns="http://www.oralcejava.co.kr/book" 
xmlns:info="http://www.oralcejava.co.kr/info" >
<name>홍길동</name>
<title>XML전문가과정</title>
<profile>
<info:html>
<info:head>
<info:title>소개의 글</info:title>
</info:head>
<info:body>
본문 내용 입니다...
</info:body>
</info:html>
</profile>
</author>


한정네임스페이스
- 특정요소나 속성에 대해 선택적으로 네임스페이스를 지정
<item xmlns="http://www.oraclejava.com/ns1"
xmlns:pr="http://www.path.com/ns2">
<pr:desc>볼펜</pr:desc>
<pr:price>100</pr:price>
<quantity>25</quantity>
</item>

댓글 없음:

댓글 쓰기