DTD-엔티티

엔티티는 XML 문서 내에서 특수 문자에 대한 바로 가기를 정의하는 데 사용됩니다. 엔티티는 주로 네 가지 유형이 될 수 있습니다.

  • 내장 엔티티

  • 캐릭터 엔티티

  • 일반 단체

  • 매개 변수 엔티티

엔티티 선언 구문

일반적으로 엔티티를 선언 할 수 있습니다. internally 또는 externally. 다음과 같이 각각의 구문과 구문을 이해합시다.

내부 법인

엔티티가 DTD 내에서 선언되면 내부 엔티티라고합니다.

Syntax

다음은 내부 엔티티 선언 구문입니다-

<!ENTITY entity_name "entity_value">

위의 구문에서-

  • entity_name 엔티티 이름 뒤에 큰 따옴표 또는 작은 따옴표 내의 값이옵니다.

  • entity_value 엔티티 이름의 값을 보유합니다.

  • 내부 엔티티의 엔티티 값은 접두사를 추가하여 역 참조됩니다. & 엔티티 이름, 즉 & entity_name.

Example

다음은 내부 엔티티 선언에 대한 간단한 예입니다.

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>

<!DOCTYPE address [
   <!ELEMENT address (#PCDATA)>
   <!ENTITY name "Tanmay patil">
   <!ENTITY company "TutorialsPoint">
   <!ENTITY phone_no "(011) 123-4567">
]>

<address>
   &name;
   &company;
   &phone_no;
</address>

위의 예에서 각 엔티티 이름 name , companyphone_no 는 XML 문서의 해당 값으로 대체됩니다. 엔티티 값은 접두사를 추가하여 역 참조됩니다. & 엔티티 이름에.

이 파일을 다른 이름으로 저장 sample.xml브라우저에서 열면 name , company , phone_no에 대한 엔티티 값 이 각각 바뀌는 것을 볼 수 있습니다.

외부 엔티티

엔티티가 DTD 외부에서 선언되면 외부 엔티티라고합니다. 시스템 식별자 또는 공용 식별자를 사용하여 외부 엔터티를 참조 할 수 있습니다.

Syntax

다음은 외부 엔티티 선언 구문입니다-

<!ENTITY name SYSTEM "URI/URL">

위의 구문에서-

  • name 엔티티의 이름입니다.

  • SYSTEM 키워드입니다.

  • URI/URL 큰 따옴표 또는 작은 따옴표로 묶인 외부 소스의 주소입니다.

Types

다음 중 하나를 사용하여 외부 DTD를 참조 할 수 있습니다.

  • System Identifiers − 시스템 식별자를 사용하면 DTD 선언이 포함 된 외부 파일의 위치를 ​​지정할 수 있습니다.

    보시다시피 키워드 SYSTEM과 문서의 위치를 ​​가리키는 URI 참조가 포함되어 있습니다. 구문은 다음과 같습니다-

<!DOCTYPE name SYSTEM "address.dtd" [...]>
  • Public Identifiers − 공용 식별자는 DTD 리소스를 찾는 메커니즘을 제공하며 다음과 같이 작성됩니다.

    보시다시피 PUBLIC 키워드로 시작하고 그 뒤에 특수 식별자가옵니다. 공개 식별자는 카탈로그의 항목을 식별하는 데 사용됩니다. 공용 식별자는 모든 형식을 따를 수 있습니다. 그러나 일반적으로 사용되는 형식을 공식 공개 식별자 (FPI)라고합니다.

<!DOCTYPE name PUBLIC "-//Beginning XML//DTD Address Example//EN">

Example

다음 예를 통해 외부 엔티티를 이해합시다.

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>
<!DOCTYPE address SYSTEM "address.dtd">

<address>
   <name>
      Tanmay Patil
   </name>
   
   <company>
      TutorialsPoint
   </company>
   
   <phone>
      (011) 123-4567
   </phone>
</address>

아래는 DTD 파일의 내용입니다 address.dtd은 -

<!ELEMENT address (name, company, phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone (#PCDATA)>

내장 엔티티

모든 XML 파서는 기본 제공 항목을 지원해야합니다. 일반적으로 이러한 엔터티 참조는 어디에서나 사용할 수 있습니다. XML 문서 내에서 요소 내용 및 속성 값과 같은 일반 텍스트를 사용할 수도 있습니다.

잘 구성된 XML에서 역할을 수행하는 5 개의 기본 제공 엔티티가 있습니다.

  • 앰퍼샌드 : & amp;

  • 작은 따옴표 : & apos;

  • 보다 큼 : & gt;

  • 보다 작음 : & lt;

  • 큰 따옴표 : & quot;

다음 예제는 내장 엔티티 선언을 보여줍니다-

<?xml version = "1.0"?>

<note>
   <description>I'm a technical writer & programmer</description>
<note>

여기에서 볼 수 있듯이 & amp; 문자는 프로세서가이를 만날 때마다 &로 대체됩니다.

캐릭터 엔티티

문자 엔티티는 정보의 상징적 표현 인 일부 엔티티의 이름을 지정하는 데 사용됩니다. 즉, 입력하기 어렵거나 불가능한 문자는 문자 엔티티로 대체 될 수 있습니다.

다음 예제는 문자 엔티티 선언을 보여줍니다-

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>
<!DOCTYPE author[
   <!ELEMENT author (#PCDATA)>
   <!ENTITY writer "Tanmay patil">
   <!ENTITY copyright "&#169;">
]>
<author>&writer;&copyright;</author>

여기서 우리는 &#169;저작권 문자의 값으로. 이 파일을 sample.xml 로 저장 하고 브라우저에서 열면 저작권이 문자 ©로 바뀌는 것을 볼 수 있습니다.

일반 단체

일반 엔티티는 XML 문서 내에서 사용되기 전에 DTD 내에서 선언되어야합니다. 단일 문자 만 나타내는 대신 일반 엔터티는 문자, 단락 및 전체 문서를 나타낼 수 있습니다.

통사론

일반 엔티티를 선언하려면 DTD에서이 일반 형식의 선언을 사용하십시오.

<!ENTITY ename "text">

다음 예제는 일반 엔티티 선언을 보여줍니다-

<?xml version = "1.0"?>

<!DOCTYPE note [
   <!ENTITY source-text "tutorialspoint">
]>

<note>
   &source-text;
</note>

XML 파서가 소스 텍스트 엔티티에 대한 참조를 발견 할 때마다 참조 지점에서 애플리케이션에 대체 텍스트를 제공합니다.

매개 변수 엔티티

매개 변수 엔티티의 목적은 대체 텍스트의 재사용 가능한 섹션을 만들 수 있도록하는 것입니다.

통사론

다음은 매개 변수 엔티티 선언 구문입니다.

<!ENTITY % ename "entity_value">
  • entity_value 는 '&', '%'또는 ' "'가 아닌 모든 문자입니다.

다음 예제는 매개 변수 엔티티 선언을 보여줍니다. 아래와 같이 요소 선언이 있다고 가정합니다.

<!ELEMENT residence (name, street, pincode, city, phone)>
<!ELEMENT apartment (name, street, pincode, city, phone)>
<!ELEMENT office (name, street, pincode, city, phone)>
<!ELEMENT shop (name, street, pincode, city, phone)>

이제 추가 요소 국가 를 추가하려는 경우 네 가지 선언 모두에 추가해야합니다. 따라서 매개 변수 엔티티 참조로 이동할 수 있습니다. 이제 매개 변수 엔티티 참조를 사용하여 위의 예는 다음과 같습니다.

<!ENTITY % area "name, street, pincode, city">
<!ENTITY % contact "phone">

매개 변수 엔티티는 앰퍼샌드 대신 퍼센트 기호 만 사용하여 일반 엔티티 참조와 동일한 방식으로 역 참조됩니다.

<!ELEMENT residence (%area;, %contact;)>
<!ELEMENT apartment (%area;, %contact;)>
<!ELEMENT office (%area;, %contact;)>
<!ELEMENT shop (%area;, %contact;)>

파서가 이러한 선언을 읽을 때 엔티티 참조를 엔티티의 대체 텍스트로 대체합니다.