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 , company 및 phone_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 "©">
]>
<author>&writer;©right;</author>
여기서 우리는 ©저작권 문자의 값으로. 이 파일을 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;)>
파서가 이러한 선언을 읽을 때 엔티티 참조를 엔티티의 대체 텍스트로 대체합니다.