외부 DTD 파일에 <?xml version ... ?> 같은 XML 파일임을 나타내는 PI가 들어있으면 xmerl_scan:(file|string)에서는 다음과 같은 에러를 내면서 parsing이 안된다 (java 쪽에서는 별 문제가 없었던 DTD 파일이다).
error msg:
간편 해결책: DTD 들이 있는 디렉토리에서 다음을 실행해주자 (DTD 파일이 여러개일때...)
happy hackin'
error msg:
1066- fatal: {invalid_target_name," version=\""}
** exception exit: {fatal,{{invalid_target_name," version=\""},
{file,"/path/to/dtd.dtd"},
{line,6},
{col,18}}}
in function xmerl_scan:fatal/2
in call from xmerl_scan:scan_ext_subset/2
in call from xmerl_scan:scan_decl_sep/2
in call from xmerl_scan:scan_ext_subset/2
in call from xmerl_scan:scan_decl/2
in call from xmerl_scan:fetch_and_parse/3
in call from xmerl_scan:fetch_DTD/2
in call from xmerl_scan:scan_doctype2/3
** exception exit: {fatal,{{invalid_target_name," version=\""},
{file,"/path/to/dtd.dtd"},
{line,6},
{col,18}}}
in function xmerl_scan:fatal/2
in call from xmerl_scan:scan_ext_subset/2
in call from xmerl_scan:scan_decl_sep/2
in call from xmerl_scan:scan_ext_subset/2
in call from xmerl_scan:scan_decl/2
in call from xmerl_scan:fetch_and_parse/3
in call from xmerl_scan:fetch_DTD/2
in call from xmerl_scan:scan_doctype2/3
간편 해결책: DTD 들이 있는 디렉토리에서 다음을 실행해주자 (DTD 파일이 여러개일때...)
$ sed -i -r "/<\?xml .*\?>/s/.*//" *.dtd # remove xml PI stuff.
$ sed -i '/./,/^$/!d' *.dtd # remove leading blank line(s).
$ sed -i '/./,/^$/!d' *.dtd # remove leading blank line(s).
happy hackin'