emacs의 nxml-mode를 사용하면, emacs에서 xml 파일들을 쉽게 편집할 수 있다.
nxml은 내부적으로 validation에 relaxng라는 xml schema 표기 형식을 사용하는데, docbook이나 xhtml같은 널리 쓰이는 문서형식에 대해서는 /usr/share/emacs/site-lisp/nxml-mode/schema/ 디렉토리에 *.rnc 파일들이 준비되어 있어서 쓰는데 별 문제가 없다. 그런데, custom dtd나 schema를 쓰려면 어떻게 해야할까?
trang을 사용해서 변환하면 된다.
에러 있는 부분은 빨간 밑줄이 쳐지며, <C-c C-n>으로 에러있는 곳으로 바로 움직일 수도 있다.
유용한 편집 팁을 하나만 더 소개하자면, 마크업 부분 입력(eg, <do) 후에 <C-return>을 눌러보자. schema 상에서 그곳에 삽입을 허용하는 do로 시작하는 tag들이 예쁘게 줄을 선다 (문맥감지 자동완성 기능이라 맘대로 명명했다).
James Clark에게 경의를...
happy hackin'
nxml은 내부적으로 validation에 relaxng라는 xml schema 표기 형식을 사용하는데, docbook이나 xhtml같은 널리 쓰이는 문서형식에 대해서는 /usr/share/emacs/site-lisp/nxml-mode/schema/ 디렉토리에 *.rnc 파일들이 준비되어 있어서 쓰는데 별 문제가 없다. 그런데, custom dtd나 schema를 쓰려면 어떻게 해야할까?
trang을 사용해서 변환하면 된다.
$ trang /path/to/custom.dtd /path/to/custom.rnc
emacs의 메뉴에서 XML > Set Schema > File... 선택후 /path/to/custom.rnc를 입력하면 즉시 편집중인 문서의 validation을 실행하고 결과를 상태표시줄에 표시한다.에러 있는 부분은 빨간 밑줄이 쳐지며, <C-c C-n>으로 에러있는 곳으로 바로 움직일 수도 있다.
유용한 편집 팁을 하나만 더 소개하자면, 마크업 부분 입력(eg, <do) 후에 <C-return>을 눌러보자. schema 상에서 그곳에 삽입을 허용하는 do로 시작하는 tag들이 예쁘게 줄을 선다 (문맥감지 자동완성 기능이라 맘대로 명명했다).
James Clark에게 경의를...
happy hackin'
2012-12-15:
상기 자동 완성 기능(nxml-complete)은 M-TAB으로 변경 되었다.
http://lists.gnu.org/archive/html/bug-gnu-emacs/2012-03/msg00696.html
http://debbugs.gnu.org/cgi/bugreport.cgi?bug=6776
예전 스타일로 쓰고 싶다면 ~/.emacs에 다음과 같은 내용을 추가하자.
;; nxml mode key binding(old style): complete w/ C-return
(add-hook 'nxml-mode-hook
'(lambda ()
(define-key nxml-mode-map [C-return] 'nxml-complete)))