2014-08-27 8 views
2

나는 W3C Recommendation과 Wikipedia에서이 주제에 관해 읽었습니다. 내가 그들을 완전히 이해했는지 확신 할 수 없다. 누군가 DTD에 외부 엔티티와 표기법이 무엇인지 명확하게 설명해 주시겠습니까? 그들의 용도는 정확히 무엇입니까? 여기 DTD의 외부 엔티티 및 표기법은 무엇입니까?

외부 엔티티 선언의 몇 가지 예입니다 : 만약 내가 잘못

<!ENTITY open-hatch SYSTEM  
     "http://www.textuality.com/boilerplate/OpenHatch.xml"> 
<!ENTITY open-hatch PUBLIC 
     "-//Textuality//TEXT Standard open-hatch boilerplate//EN" 
     "http://www.textuality.com/boilerplate/OpenHatch.xml"> 
<!ENTITY hatch-pic SYSTEM 
     "../grafix/OpenHatch.gif" 
     NDATA gif > 

저를 수정합니다. 일반 내부 엔티티는 문서 본문의 엔티티 이름 (&ent;)을 선언 된 문자열로 바꿉니다. 외부 엔티티가 엔티티 이름을 외부 문서의 전체 내용으로 대체합니까?

답변

3

예 올바르게 이해하고 있습니다. 엔티티 참조 (예 : &open-hatch;)는 ENTITY 선언에 정의 된 내용에 대한 참조입니다.

표기법은 비 XML (분석되지 않은) 데이터를 지정하는 데 사용됩니다. 위의 예에서 ENTITY 선언은 OpenHatch.gif의 내용이 gif이라는 표기임을 지정합니다. gif에 해당하는 NOTATION 선언이 있어야합니다. 이것은 XML 프로세서 나 응용 프로그램에서 해당 표기법의 데이터를 처리 할 수있는 다른 응용 프로그램을 찾기 위해 사용할 수 있습니다.

또한 엔터티는 항상 &entity-name; 메서드로 참조 할 필요는 없습니다. 속성은 ENTITY 유형으로 지정할 수도 있습니다. 그래픽과 같은 표기 데이터 (NDATA)를 많이 사용합니다. 예를 들어

... 위의 예에서

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE doc [ 
<!ELEMENT doc (graphic)> 
<!ELEMENT graphic EMPTY> 
<!ATTLIST graphic 
      src ENTITY #REQUIRED> 
<!NOTATION cgm PUBLIC "-//USA-DOD//NOTATION Computer Graphics Metafile//EN"> 
<!ENTITY test-image SYSTEM "cgm/test-image.cgm" NDATA cgm> 
]> 
<doc> 
    <graphic src="test-image"/> 
</doc> 

, 나는 test-image라는 ENTITY 있습니다. 이 엔티티는 cgm/test-image.cgm 파일에 대한 참조이며, 표기는 cgm입니다. 엔티티는 graphic 요소의 src 속성에 의해 참조됩니다. 이 모든 정보가 사용되는 방법은 응용 프로그램이 데이터를 사용하는 방식에 따라 다릅니다.