hacking2008/12/29 11:56
크리에이티브 커먼즈 라이선스
Creative Commons License

요약하면 "xml schema도 모듈화 합시다~~" 정도?

개인적으로는 xml schema에 대해서는 좀 비판적이다.
개발자들이 재귀를 좋아한다지마는... 그리고 그게 논리적일지라도... 글쎄...
xml(xml문서 인스턴스)을 기술하기 위한 xml(xml schema 인스턴스)을 기술하기 위한 xml(xml schema를 위한 xml schema)이라니... 뭥미!

내가 제대로 된 개발자가 못되서 그런가? 난 그냥 DTD가 좋더라고...-.-; 

덧: 번역할 때 제일 까다로운 것 중의 하나가 영어의 "-able"식 표현이다. "~할 수 있는"이라고 쉽게 생각할 수 있지만, "-able"이 보기에 따라 좁은 의미로 읽을 수도, 넓은 의미로 읽을 수도 있기 때문에 생각처럼 간단치 않다.

Posted by iolo
hacking/java2008/10/29 18:33
크리에이티브 커먼즈 라이선스
Creative Commons License
한국 developerWorks에 기고한 번역문

원문: Use XQuery from a Java environment
번역: 자바 환경에서 XQuery 사용하기

XQuery를 처음 본게 2003년 무렵이었으니... 벌써 5년째...
작년에 W3C에 1.0 스펙이 올라왔고...
이제서야 큰 고생없이 써 볼 수 있게 됐다.

이 글에서는 설명의 편의상 XML 데이터베이스보다는 로컬 XML 파일을 대상으로 설명하고 있지만,
실제 XQuery의 유용함은 거대한 XML 노드들의 집합체, 즉 XML 데이터베이스를 대상으로 할 때 더욱 돋보인다.

튜토리얼 하나로 모든 것을 익힐 순 없겠지만, 이런 것도 있다는 맛보기로는 충분하다.

글에서는 상용 제품인 DataDirect XQuery를 사용했지만, 개인적으로는 SAXON을 추천한다.
JSR255로 등록된 XQuery API for Java 스펙을 보면 조만간 JAXQ(Java API for XQuery)가 등장할 듯...
그러면 별다른 삽질없이도 javax.xml.xquery 패키지를 통해 쓸 수 있게 되겠지... 그 동안은...

본문에도 언급했지만, XQuery를 배울려면 XPath부터 배워야 한다. XPath는 이미 자바에 기본으로 포함되어 있어서 부담없이 쓸 수 있음에도 불구하고 대부분의 개발자들은 SAX와 DOM의 숲에서 해매고 있다. 이 기회에 developerWorks의 글을 통해 XPath를 익혀보는 건 어떨까?

번역을 도와준 모토코 언뉘에게 감사를~~

Posted by iolo
hacking/java2008/06/05 00:10
크리에이티브 커먼즈 라이선스
Creative Commons License
한국 developerWorks에 기고한 번역문

원문: Use XStream to serialize Java objects into XML
번역: XStream으로 자바 객체를 XML로 직렬화하기

오랜만에 자바 기사 번역이다.-.-; 요즘은 완전 AJAX 전담 번역자가 된 듯...

직렬화(serialization)라고 하니까 거창해 보이지만, 정말 단순하면서도 유용한 라이브러리다. 다만, 너무 늦게 나왔다는 것이 문제라면 문제일까...

XML이 자리를 잡기 시작할 무렵, 지저분한 SAX와 메모리 귀신 DOM 사이에서 갈등하던 시절에는 apache의 commons-digester가 나름대로 유용함을 인정받았지만, 지금은 어떨까?

왠만해서 XML를 직접 파싱할 필요도 없고, 필요하다고 해도 DOM의 메모리 사용량이 별로 걱정되지 않고, 걱정된다고 하더라도 StAX같은 대안들이 넘쳐난다. 내 경우엔 스프링을 쓰다보니.. 예전처럼 여기저기 XML을 흩어놓을 일이 거의 없다.

그럼에도 불구하고 XStream은 굉장히 잘만든 깔끔한 라이브러리다. 혹시 commons-digester를 쓰고 있거나, 써야 할 일이 있다면, StAX를 모르고 배워야 겠다는 의지가 없다면... 혹은 그 마저도 귀찮다면... 그래도 JAXB는 싫다면... XStream은 "손 안대고 코 푸는" 멋진 라이브러리다.


Posted by iolo
hacking/java2007/01/07 22:17
크리에이티브 커먼즈 라이선스
Creative Commons License
거의 한 달동안 정체 불명의 스펙들 속에서 허우적 거리고 있다.

DOM과 SAX로 모든걸 해결하던 배고픈 시절은 갔다고 굳게 믿었다. 넘쳐나는 스펙들을 보며 만세를 불렀다. 그리고, 그 스펙들의 공수표에 좌절하고 있다.

한달 동안 뒤적거린 XML 관련 스펙들을 나열해보자:
  • DOM:굳이 설명이 필요없을 듯.
  • SAX:상동
  • XSLT:상동
  • XPATH: 1.0 스펙까진 어느 정도 알고 있었다. 2.0은 그야말로.. 경천동지~ 상전벽해~ 말로만 하는거면 뭘 못하냐고-.-.
  • ?XQuery:궁극의 해결책이라고 믿었다. 천만의 말씀 만만의 콩떡이더라.
  • ?XUpdate:처음 봤을땐 이건 어디서 굴러먹던 개뼈다귀냐라고 생각했었지만... 정말 개뼈다귀다. -.-;
  • ?XmlDb (XAPI): 정말 개뼈다귀다. -.-;;
  • ?XQueryUpdateFacility:궁국의 해결책일까? 공수표좀 그만 뿌려라! -.-;;;
  • ?StAX:자바스러운 SAX?
  • ?TrAX:자바스러운 XSLT?
  • 외 다수...

이 스펙들을 따라 뒤적거리고 설치하고, 돌려보고, 삽질도 해보고, 삭제한 녀석들을 나열해보자:
  • Xindics:그렇다. 마데인아파체다. 그것만 믿고 깔았다. 앞으로의 여정이 만만치 않을 것임을 깨달았다.
  • eXist:구세주인가? 천만의 말씀 만만의 콩떡. 앞으로 여정은 더욱 험난할 지어다.
  • ?BerkerleyDbXml:오! 오라클! 개뿔...
  • Saxon:일단 피해가자...라고 생각했으나.. 그 마저도 쉽지 않은...
  • 외 다수...

그리고, 먼 길을 돌아... 다시 DOM, SAX로 갈 수는 없어서... ?StAX와 ?TrAX로 돌아왔지만... 이 길도 그리 순탄해 보이지는 않는다.

내가 하고 싶은건..
  1. 크기가 가변적이고(수십킬로에서 수메가정도?),
  2. 일회성의(한번 처리한 파일들을 다시 처리할 일은 가물에 콩나듯?)
  3. XML 파일들을
  4. 자바로
  5. 서버사이드에서
  6. 읽고,
  7. 고치고,
  8. 저장하는
것이다.

말하자면, File-based(Disk-based) DOM 같은 거다.

eXist류의 ?XmlDb들이 거의 모든 요구사항을 만족하지만.. 한가지... (2) 일회성에서 태클을 건다. 즉, ?XmlDb로 import하고 export하는 비용이 너무 비싸다. 그냥 DOM과 SAX로 처리하는게 훨씬 싸게 먹힌다.

뱀꼬리#1 혹시 이 블로그를 보시는 분 중에서~ 어렴풋한 해결책을 제시해 주시는 분께는 맛난 커피!!!를 대접하겠다.

뱀꼬리#2 명쾌한 해결책을 제시해 주시는 분께는 맛난 밥!!!을 대접하겠다.

'hacking > java' 카테고리의 다른 글

singleton과 lazy loading...  (0) 2007/01/28
Java6 XMLOutputFactory 유감  (2) 2007/01/15
XML Exodus...  (3) 2007/01/07
아니~ 버~ㄹ써! Java6~  (0) 2006/12/12
Java, finally GPLed  (0) 2006/11/14
Java Browser Edition?  (0) 2006/09/08
Posted by iolo
TAG Java, xml