XML namespace 사용하지 말자
client/server 간 인터페이스에 XML 사용이 대세다. 물론 형식만 XML이지 DTD나 스키마 같은건 거의 안만드는것 같다. 이게 왜 필요한지 나는 아직도 잘 이해를 못하고 있긴 하다. 문제는 스키마도 안만들면서 namespace를 지정하곤 하는 이상한 관행. 아마도 namespace를 지정해두면 나중에 유용할거야 라거나 뭔가 더 있어보인다 정도의 이유가 아닐까?

흔히들 아래와 같이 namespace를 지정하는데, 이걸 default namespace라고 한단다.
<catalog xmlns="http://www.edankert.com/examples/">
<cd>
<artist>Sufjan Stevens</artist>
<title>Illinois</title>
<src>http://www.sufjan.com/</src>
</cd>
<cd>
<artist>Stoat</artist>
<title>Future come and get me</title>
<src>http://www.stoatmusic.com/</src>
</cd>
<cd>
<artist>The White Stripes</artist>
<title>Get behind me satan</title>
<src>http://www.whitestripes.com/</src>
</cd>
</catalog>
그런데 XML에 namespace가 지정되어 있으면 xpath 사용에 문제가 생긴다. 여기에 이 문제가 잘 설명되어 있다. Javascript에서는 어떤지 모르겠고... libxml2 에서도 문제가 되서 아이폰 애플 개발자도 피곤해진다.

결론은, 꼭 필요한 경우가 아니라면 namespace는 사용하지 말자.
by conanoc | 2009/04/29 10:48 | Programming | 트랙백 | 덧글(2)
트랙백 주소 : http://conanoc.egloos.com/tb/4929718
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by 유겸애비 at 2009/04/29 13:22
Class<->Schema의 기계변환은 유용할 경우가 많이 있는거 같고 수동 parsing의 경우는 dtd,schema,namespace 모두 별 의미 없는듯해요.
Commented by 수민아빠 at 2009/09/13 16:16
Naming space는 대형프로젝트에서 동일한 요소명이 다른 구조를 갖게 되어
참조되는 경우 qualifier의 역할을 하게 됩니다.

위의 예에서도 다른 스키마에 cd가 다른 엘레멘트 요소로 정의되어 있고
이를 cd로 참조한다면 문제가 생기겠지요? 여기에 xmlns로 cd의 정의를
명확히 하는 이유가 있습니다.

참조로 하신 링크는 쓰지 말자가 아니라 정확하게 쓰는 방법의 안내입니다.

XML을 공부하는 입문자가 잘못된 편견을 갖을까.. 몇자 적어보았습니다.


:         :

:

비공개 덧글

< 이전페이지 다음페이지 >