엔티티

XML 2018. 6. 19. 17:35

 - 엔티티(Entity) 란?
특수 문자 또는 자주 사용되는 정보들을 선언해 놓고 XML 문서나 DTD에서 참조하여 사용하는 것을 말함.

 

엔티티를 참조하게 되면 파싱을 할 때 그 엔티티 참조는 선언해 놓은 값으로써 대체되어 지며,
XML에서 엔티티는 문서의 단위이고 한 글자에서부터 문서 전체에 이르기까지
혹은 또 다른 문서에 대한 참조까지를 의미한다.

 

 - 엔티티의 분류

 1.사용 용도에 따른 엔티티
   - 일반 엔티티
   - 파라미터 엔티티 : DTD안에서만 사용하는 엔티티

      % 기호를 사용함으로써 일반 엔티티와 구별할 수 있다.
 
 2. 엔티티 값이 텍스트인지 이진 데이터인지에 따른 엔티티
   - 텍스트 엔티티 : 텍스트로 이루어져 있는 것.
   - 바이너리(Binary) 엔티티 : 텍스트가 아닌 그림 파일 같은 바이너리 데이터로 된 것.

 

 3. 선언된 장소에 따른 엔티티
   - 내부 엔티티 : 일반적으로 DTD 내에 정의함
   - 외부 엔티티 : 포함시킬 내용이 외부에 존재하는 것을 참조한 형태 

 

 


 - 엔티티 참조란?
파서에게 포함시키기를 원하는 문서의 위치를 알려주고 파서가 가져오는 것.

 

 


 - 내부 엔티티 선언 방법과 참조하는 방법.
 HTML 문서에서 '<'를 표시할때 &lt; 를 사용하는데 이것이 바로 엔티티를 참조하는 것이다.
예를 들어 수학 기호로 "A는 B보다 작다"라는 것을 표현하기 원한다면 "A<B"와 같이 쓰는 것이라 볼 수 있다.

 

 

<!ENTITY 엔티티이름 "값">   = 엔티티를 선언하는 방법

&엔티티이름;  = 엔티티를 참조하는 방법

 

예)
<!ENTITY myName "아무개"> 이라 선언했을 때
&myName;  으로 참조할 수 있다. 

 


! 엔티티 이름은 반드시 문자나 밑줄로써 시작하고 문자, 숫자, 점 (.), 하이픈 (-)을 포함할 수 있다. !

 

 

 

 - XML의 내장 엔티티들

마크업에 사용되는 문자를 표시하기 위해 내장됨.

 

엔티티 

표현 문자  

 &amp

 &

 &lt

 <

 &gt

 >

 &apos

 '

 &quote

 "

 

 

 

 - 외부 엔티티 선언 방법

위에서 언급된 myName이라는 것은 내부 엔티티이고,

외부 엔티티는 엔티티의 값이 엔티티를 선언하는 곳에서 존재하는 것이 아닌

외부의 파일로 존재하는 엔티티를 의미한다.

 

외부 엔티티를 사용하면 문서나 DTD 외부에 있는 자료를 불러들여 사용할 수 있다.

 

<!ENTITY myName SYSTEM "myname.txt"> 

 

엔티티 이름까지는 내부 엔티티와 동일하고 이 후 SYSTEM 키워드를 사용한다.

즉, 이름 다음에 나타나는 것은 엔티티가 존재하는 곳의 위치를 나타내는 URL이다.

 

필요에 의해 PUBLIC 식별자도 사용할 수 있다.

 

 

 

 - 바이너리 엔티티 선언 방법

위의 예시의 엔티티들은 텍스트 엔티티이다.

 

바이너리 엔티티는 외부 엔티티이며,

XML이나 DTD의 외부에 다른 파일로 존재하는 그림 파일 같은 바이너리 데이터를 말하는 것이다.

 

<!ENTITY 엔티티이름 SYSTEM "엔티티URL" NDATA 표기법이름> 

 

만약 그림 파일이라면 엔티티URL의 자리에 그림 파일의 경로명이나 URL을 쓰면 된다.

 

 

 

 - 파라미터 엔티티 선언 방법

DTD 안에서만 사용하는 엔티티로 외부 DTD에서만 정의할 수 있다.

DTD에서 여러 엘리먼트에 공통적으로 존재하는 속성을 한번만 선언하고 사용한다던가

다른 외부 DTD를 포함시키고 싶을 때 사용한다.

 

<!ENTITY % 엔티티이름 "값"> 

 

주의점 :  % 기호 다음에 반드시 한 칸 띄우고 엔티티 이름을 써야한다.

 

 

 - 파라미터 엔티티를 참조할 때  =  %엔티티이름;

 

 

예)

<!ENTITY name (#PCDATA)>

<!ENTITY % e_name "name">

이라 선언 되었을 때

 

<!ENTITY person ( %e_name;, phone, address )>

<!ELEMENT company ( %e_name; )>

로 참조할 수 있다. 

 

 

 

 - 파라미터 엔티티로 외부 엔티티 사용 선언 방법

DTD 에서 다른 외부 DTD를 포함시켜 사용하고자 할 때 사용한다.

 

<!ENTITY % small_dtd SYSTEM "small.dtd">

%small_dtd; 

 

small.dtd는 예를 들어 가정한 외부 DTD이다.

 

 

 

 - 파라미터 엔티티의 장점과 단점.

 개발자가 옛 DTD를 쉽게 재사용 할 수 있고, 기존 DTD를 쉽게 확장할 수 있다.

 

하지만 파라미터 엔티티는 본래 DTD를 조직적으로 구성하기 위해 만들어진 것임으로

잘못 사용하면 파라미터 엔티티를 사용한 DTD를 다른 사람이 읽어볼 때 읽기 어려워 진다.

 

 

 

참고 문헌 및 링크

 ADD-ON XML

 클릭하세요 XML

 자바 개발자를 위한 XML

 

'XML' 카테고리의 다른 글

처리 명령 (PI)  (0) 2018.06.19
노테이션 (표기법)  (0) 2018.06.19
애트리뷰트  (0) 2018.06.19
엘리먼트  (0) 2018.06.18
DTD 란?  (0) 2018.06.17
Posted by Resian
,