2011-08-23 4 views
2

저는 XML 문서와 도구에 익숙하지만, SGML을 다루어야합니다. 나는 구문 분석에 nsgmls을 사용하고있는 sgml 문서를 가지고 있으며, 특정 sgml 선언을 포함 할 필요가있다.sgml 문서에서 외부 sgml 선언을 참조 할 수 있습니까?

$ nsgmls mydoc.decl mydoc.sgml 

하지만이 SGML 파일 내에 선언에 대한 참조 (전체가 아닌 선언)를 포함하고 싶습니다 : 나는 명령 행에서 선언 파일을 지정하는 경우 잘 작동합니다. DOCTYPE 즉 XML처럼 등 (다른 많은 오류 선도)는 <!DOCTYPE MyDoc SYSTEM "mydoc.decl">

mydoc.decl:1:2:E: unknown declaration type "SGML" 

실패하고 선언 해석되지 않는다. SGML 선언과 같은 일을하려고 : <!SGML MyDoc SYSTEM "mydoc.decl"> 어떤 좋은 것은 아닙니다 것은, 그것은 나에게 치명적인 오류 제공 :

mydoc.decl:1:0:E: character "<" invalid: only minimum literal and parameter separators allowed 
mydoc.decl:1:0:E: cannot continue because of previous errors 

단지 외부 파일을 참조 할 수있는 방법이 있나요를, 또는 나는 항상 지정해야합니다 명령 줄에서?

답변

2

DOCTYPE 선언에서 SGML 선언을 참조 할 수 없습니다. DOCTYPE 선언은 DTD를 가리켜 야합니다.

당신이 할 수있는 일은 SGMLDECL 항목이있는 catalog (확장자 없음)이라는 파일을 만듭니다. 이 파일을 SGML 문서와 동일한 위치에두면 nsgmls가이 파일을 사용합니다.

또한 명령 줄에서 -c을 사용하여 카탈로그 파일을 가리킬 수도 있지만 명령 줄에서 다른 것을 참조하지 않으려 고하므로이 목적을 달성 할 수 없습니다. 당신이 "mydoc.sgml"과 같은 디렉토리에이 카탈로그 파일이있는 경우

SGMLDECL somedir/mydoc.decl 

, 당신은 밖으로 SGML 선언을 남길 수 있습니다 :

여기에 다른 SGML 선언 파일을 가리키는 예를 들어 catalog 파일입니다 명령 줄 :

nsgmls mydoc.sgml 
관련 문제