DTD-속성
이 장에서는 DTD 속성에 대해 설명합니다. 속성은 요소에 대한 더 많은 정보를 제공하거나보다 정확하게 요소의 속성을 정의합니다. XML 속성은 항상 이름-값 쌍의 형식입니다. 요소는 여러 고유 속성을 가질 수 있습니다.
속성 선언은 하나를 제외하고 여러면에서 요소 선언과 매우 유사합니다. 요소에 대해 허용 가능한 콘텐츠를 선언하는 대신 각 요소에 대해 허용 가능한 속성 목록을 선언합니다. 이러한 목록을 ATTLIST 선언이라고합니다.
통사론
DTD 속성 선언의 기본 구문은 다음과 같습니다-
<!ATTLIST element-name attribute-name attribute-type attribute-value>
위의 구문에서-
요소에 속성이 포함 된 경우 DTD 속성은 <! ATTLIST 키워드로 시작합니다.
element-name 속성이 적용되는 요소의 이름을 지정합니다.
attribute-name element-name에 포함 된 속성의 이름을 지정합니다.
attribute-type속성 유형을 정의합니다. 이에 대해서는 다음 섹션에서 자세히 설명합니다.
attribute-value속성이 정의해야하는 고정 값을 사용합니다. 이에 대해서는 다음 섹션에서 자세히 설명합니다.
예
다음은 DTD의 속성 선언에 대한 간단한 예입니다.
<?xml version = "1.0"?>
<!DOCTYPE address [
<!ELEMENT address ( name )>
<!ELEMENT name ( #PCDATA )>
<!ATTLIST name id CDATA #REQUIRED>
]>
<address>
<name id = "123">Tanmay Patil</name>
</address>
위의 코드를 살펴 보겠습니다.
다음 문장으로 XML 선언으로 시작하십시오-
<?xml version = "1.0"?>
XML 헤더 바로 뒤에는 일반적으로 DOCTYPE이라고하는 문서 유형 선언이 있습니다.
DOCTYPE은 DTD가이 XML 문서와 연관되어 있음을 파서에 알립니다. DOCTYPE 선언에는 요소 이름 시작 부분에 느낌표 (!)가 있습니다.
<!DOCTYPE address [
다음은 DTD의 본문입니다. 여기서 우리는 요소와 속성을 선언했습니다.
<!ELEMENT address ( name )>
<!ELEMENT name ( #PCDATA )>
요소 이름에 대한 속성 ID 는 다음과 같이 정의됩니다.
여기서 속성 유형은 CDATA 이고 그 값은 #REQUIRED 입니다.
<!ATTLIST name id CDATA #REQUIRED>
속성 선언 규칙
XML 문서에 사용되는 모든 속성은 속성 목록 선언을 사용하여 DTD (문서 유형 정의)에서 선언되어야합니다.
속성은 시작 또는 빈 태그에만 나타날 수 있습니다.
키워드 ATTLIST는 대문자 여야합니다.
주어진 요소에 대한 속성 목록 내에서 중복 된 속성 이름은 허용되지 않습니다.
속성 유형
속성을 선언 할 때 프로세서가 값에 나타나는 데이터를 처리하는 방법을 지정할 수 있습니다. 속성 유형을 세 가지 주요 범주로 분류 할 수 있습니다.
문자열 유형
토큰 화 된 유형
열거 형
다음 표는 다양한 속성 유형에 대한 요약을 제공합니다.
Sr. 아니. | 유형 및 설명 |
---|---|
1 | CDATA CDATA는 문자 데이터 (마크 업이 아닌 텍스트)입니다. 그것은이다 문자열 속성 유형 . |
2 | ID 속성의 고유 식별자입니다. 두 번 이상 나타나지 않아야합니다. 그것은이다 토큰 화 된 속성 유형 . |
삼 | IDREF 다른 요소의 ID를 참조하는 데 사용됩니다. 요소 간의 연결을 설정하는 데 사용됩니다. 그것은이다 토큰 화 된 속성 유형 . |
4 | IDREFS 여러 ID를 참조하는 데 사용됩니다. 그것은이다 토큰 화 된 속성 유형 . |
5 | ENTITY 문서의 외부 엔티티를 나타냅니다. 그것은이다 토큰 화 된 속성 유형 . |
6 | ENTITIES 문서의 외부 엔티티 목록을 나타냅니다. 그것은이다 토큰 화 된 속성 유형 . |
7 | NMTOKEN CDATA와 유사하며 속성 값은 유효한 XML 이름으로 구성됩니다. 그것은이다 토큰 화 된 속성 유형 . |
8 | NMTOKENS CDATA와 유사하며 속성 값은 유효한 XML 이름 목록으로 구성됩니다. 그것은이다 토큰 화 된 속성 유형 . |
9 | NOTATION 요소는 DTD 문서에 선언 된 표기법을 참조합니다. 그것은이다 열거 속성 유형 . |
10 | Enumeration 값 중 하나가 일치해야하는 특정 값 목록을 정의 할 수 있습니다. 그것은이다 열거 속성 유형 . |
속성 값 선언
각 속성 선언 내에서 값이 문서에 표시되는 방식을 지정해야합니다. 속성 여부를 지정할 수 있습니다-
기본값을 가질 수 있습니다.
고정 값을 가질 수 있습니다
필수입니다
암시
기본값
기본값을 포함합니다. 값은 작은 따옴표 ( ') 또는 큰 따옴표 ( ")로 묶을 수 있습니다.
Syntax
다음은 값의 구문입니다-
<!ATTLIST element-name attribute-name attribute-type "default-value">
여기서 default-value 는 정의 된 속성 값입니다.
Example
다음은 기본값으로 속성 선언의 간단한 예입니다-
<?xml version = "1.0"?>
<!DOCTYPE address [
<!ELEMENT address ( name )>
<!ELEMENT name ( #PCDATA )>
<!ATTLIST name id CDATA "0">
]>
<address>
<name id = "123">
Tanmay Patil
</name>
</address>
이 예에는 기본값이 0 인 속성 id를 가진 이름 요소 가 있습니다 . 기본값은 큰 따옴표로 묶여 있습니다.
고정 값
#FIXED 키워드 뒤에 고정 값은 속성 값이 상수이고 변경할 수 없도록 지정하려는 경우 사용됩니다. 고정 속성의 일반적인 용도는 버전 번호를 지정하는 것입니다.
Syntax
다음은 고정 값의 구문입니다-
<!ATTLIST element-name attribute-name attribute-type #FIXED "value" >
여기서 #FIXED는 정의 된 속성 값입니다.
Example
다음은 FIXED 값으로 속성 선언의 간단한 예입니다-
<?xml version = "1.0"?>
<!DOCTYPE address [
<!ELEMENT address (company)*>
<!ELEMENT company (#PCDATA)>
<!ATTLIST company name NMTOKEN #FIXED "tutorialspoint">
]>
<address>
<company name = "tutorialspoint">we are a free online teaching faculty</company>
</address>
이 예에서는 "tutorialspoint"값이 <company> 요소 의 속성 이름 에 대한 유일한 값임을 나타내는 #FIXED 키워드를 사용했습니다 . 속성 값을 변경하려고하면 오류가 발생합니다.
다음은 잘못된 DTD입니다-
<?xml version = "1.0"?>
<!DOCTYPE address [
<!ELEMENT address (company)*>
<!ELEMENT company (#PCDATA)>
<!ATTLIST company name NMTOKEN #FIXED "tutorialspoint">
]>
<address>
<company name = "abc">we are a free online teaching faculty</company>
</address>
필수 값
속성이 필요함을 지정하려면 #REQUIRED 키워드를 사용하십시오.
Syntax
다음은 #REQUIRED의 구문입니다-
<!ATTLIST element-name attribute-name attribute-type #REQUIRED>
여기서 #REQUIRED는 정의 된 속성 유형입니다.
Example
다음은 #REQUIRED 키워드를 사용한 DTD 속성 선언의 간단한 예입니다.
<?xml version = "1.0"?>
<!DOCTYPE address [
<!ELEMENT address ( name )>
<!ELEMENT name ( #PCDATA )>
<!ATTLIST name id CDATA #REQUIRED>
]>
<address>
<name id = "123">
Tanmay Patil
</name>
</address>
이 예에서는 #REQUIRED 키워드를 사용 하여 요소 이름 이름에 속성 ID 를 제공해야 함 을 지정했습니다.
묵시적 가치
속성을 선언 할 때 항상 값 선언을 지정해야합니다. 선언하는 속성에 기본값이없고 고정 된 값이없고 필수가 아닌 경우 속성을 implied 로 선언해야합니다 . #IMPLIED 키워드는 속성을 암시 적 으로 지정하는 데 사용됩니다 .
Syntax
다음은 #IMPLIED의 구문입니다.
<!ATTLIST element-name attribute-name attribute-type #IMPLIED>
여기서 #IMPLIED는 정의 된 속성 유형입니다.
Example
다음은 #IMPLIED의 간단한 예입니다.
<?xml version = "1.0"?>
<!DOCTYPE address [
<!ELEMENT address ( name )>
<!ELEMENT name ( #PCDATA )>
<!ATTLIST name id CDATA #IMPLIED>
]>
<address>
<name />
</address>
이 예에서는 요소 이름에 포함 할 속성을 지정하지 않기 위해 #IMPLIED 키워드를 사용했습니다 . 선택 사항입니다.