James Clark의 SX를 사용하면 됩니다. http://www.jclark.com/sp/sx.htm
오픈 소스 버전인 OSX를 사용할 수도 있습니다. 데비안 패키지에는 OSX만 있는 듯 합니다. http://www.openjade.org
osx -b euckr -x lower UsingDocBook.sgml > UsingDocBook.xml
UsingDocBook.sgml은 euc-kr 인코딩으로 작성되어 있는 경우입니다.
-b 옵션이 입력, 출력 인코딩을 지정하는데, euc-kr로 '맞게' 지정하면 "unkown sgml character" 에러가 납니다. 'euckr'이라고 일부러 틀리게 지정해서 그냥 한글이 통과되도록 했는데.. 좋은 방법이 있는지 모르겠습니다. utf-8로 파일을 변환하고 -b utf-8로 옵션을 줘봐도 마찬가지입니다. 일단 sgml 한글 문서의 경우에 백프로 euc-kr로 봐도 무방하니까.. 대강 이런 식으로 버틸 수 있을 것 같습니다.
-x lower 옵션은 태그를 모두 소문자로 일관되도록 합니다.
출력된 xml 문서는 utf-8로 바꿔주는 것이 좋을 것 같습니다. iconv를 사용하면 됩니다.
iconv -f euc-kr -t utf-8 UsingDocBook.xml > UsingDocBook.utf-8.xml
출력된 소스가 좀 보기 싫은데, tidy의 xml 기능을 사용해 정리할 수 있습니다.
tidy -xml -utf8 -indent UsingDocBook.utf-8.xml > UsingDocBook.utf-8.tidy.xml
-xml 옵션이 xml을 다룬다는 점을 알려주고, -utf8이 입력, 출력 인코딩, -indent가 태그를 들여쓰기 한다는 점을 나타냅니다.
osx로 변환했을 때 <!DOCTYPE >이 날아가 버리기 때문에, 따로 삽입을 해줘야 하는 것 같습니다. 그리고 < > 같은 것이 [lt ]의 형태로 변환되는데 왜 그런지 모르겠습니다.(어떤 것은 변환되고 어떤것은 그대로임)
programlisting이나 screen 같은 경우에 줄바꿈이나 스페이스가 유지되어야 하는데, tidy를 사용하면 이것이 무시되어 '이쁘게'되어 버립니다.