1. Attribute types (속성 종류)
[0] 종류
- CDATA
- ENTITY
- ID
- IDREF
- IDREFS
- NMTOKEN
- NMTOKENS
[1] ENTITY
1) 코드
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="memoEntity.css"?>
<!DOCTYPE myMessage [
<!ELEMENT myMessage ( message )>
<!ELEMENT message ( #PCDATA )>
<!ENTITY myEntityA "Entity Value A">
<!ATTLIST message id CDATA #REQUIRED>
<!ATTLIST message number CDATA #IMPLIED>
]>
<myMessage>
<message id="445" number="123"> Welcome to XML! &myEntityA; </message>
</myMessage>
2) 사용 방법
(1) <!ENTITY 엔티티명 "엔티티 내용">
(2) & 기호를 사용하여 엔티티를 사용한다.
[2] ATTLIST
: DTD에서 속성은 요소에 대한 추가적인 정보를 제공하며, 해당 요소의 특징을 정의한다.
1) 사용법
(1) <!ATTLIST 요소이름 속성이름 속성타입 속성값>
: 요소의 이름은 해당 속성이 포함될 요소의 이름을 명시한다.
2) 속성의 타입 정의
- CDATA : 문자 데이터 (Character DATA)
- (속성값1|속성값2|...) : 나열된 리스트 중 하나에 해당
- ID : 하나뿐인 아이디(id)
- IDREF : 다른 요소의 아이디(id)
- IDREFS : 다른 아이디(Id)의 리스트
- NMTOKEN : 유효한 XML 이름
- NMTOKENS : 유효한 XML 이름의 리스트
- ENTITY : 엔티티
- ENTITIES : 엔티티의 리스트
- NOTATION : notation의 이름
- xml: : 미리 정의된 예약어인 'xml'
3) 속성값 정의
- #REQUIRED : 반드시 명시
- #IMPLIED : 명시되도 되고, 명시되지 않아도 되고
- #FIXED 값 : 명시된 값으로 고정
4) 예시
<!ATTLIST message id CDATA #REQUIRED>
: message 태그의, id 이름의 속성을, 문자 데이터로, 반드시 명시
[3] ID
: XML에서 고유한 식별자로 사용되는 데이터 타입
1) 규칙
- 고유한 값: ID는 문서 내에서 고유해야 한다. 같은 문서 내에서 두 개 이상의 요소가 동일한 ID 값을 가질 수 없다.
- 유효한 XML 이름: ID는 XML 이름 규칙을 따라야 한다. 알파벳, 하이픈(-), 밑줄(_), 마침표(.) 등을 포함할 수 있지만, 이름의 첫 글자는 알파벳이나 밑줄로 시작해야 한다.
- 숫자로 시작 불가: 이름은 숫자로 시작할 수 없다.
- 공백 불가: ID는 공백을 포함할 수 없다. 하나의 연속된 문자열이어야 한다.
2) 코드
<!DOCTYPE example [
<!ELEMENT example (#PCDATA)>
<!ATTLIST example id ID #REQUIRED>
]>
<example id="uniqueID123">Example content</example>
[4] IDREF
: XML에서 다른 요소의 ID 값을 참조하는 데이터 타입
1) 규칙
- 유효한 참조: IDREF는 같은 문서 내에서 존재하는 ID 값을 참조해야 한다. 참조하는 ID가 실제로 존재하지 않으면 유효하지 않다.
- 유효한 XML 이름: 참조하는 값도 유효한 XML 이름이어야 한다.
- 숫자로 시작 불가: 참조하는 ID도 숫자로 시작할 수 없다.
- 공백 불가: IDREF 값에는 공백이 허용되지 않는다. 하나의 연속된 문자열이어야 한다.
2) 코드
<!DOCTYPE example [
<!ELEMENT example (#PCDATA)>
<!ELEMENT reference EMPTY>
<!ATTLIST example id ID #REQUIRED>
<!ATTLIST reference ref IDREF #REQUIRED>
]>
<example id="uniqueID123">Example content</example>
<reference ref="uniqueID123" />
[5] IDREFS
: XML에서 여러 개의 ID 값을 참조하는 데이터 타입
1) 규칙
- 여러 참조 가능: IDREFS는 여러 개의 ID 값을 공백으로 구분하여 참조할 수 있다.
- 유효한 참조: 각 참조는 실제 문서 내에서 존재하는 ID 값이어야 한다. 존재하지 않는 ID는 참조할 수 없다.
- 유효한 XML 이름: 각 참조하는 값은 유효한 XML 이름이어야 한다.
- 숫자로 시작 불가: 참조하는 모든 ID 값은 숫자로 시작할 수 없다.
- 공백으로 구분: 여러 개의 ID 값을 사용할 때는 공백으로 구분해야 한다.
2) 코드
<!DOCTYPE example [
<!ELEMENT example (#PCDATA)>
<!ELEMENT reference EMPTY>
<!ATTLIST example id ID #REQUIRED>
<!ATTLIST reference refs IDREFS #REQUIRED>
]>
<example id="id1">Example 1</example>
<example id="id2">Example 2</example>
<reference refs="id1 id2" />
[6] NMTOKEN
: XML에서 하나의 이름(Name)을 나타내는 문자열
1) 규칙
- 하나의 토큰: 하나의 이름(토큰)만 허용된다.
- 유효한 XML 이름: NMTOKEN에 포함된 문자열은 XML 이름 규칙을 따라야 한다.
- 숫자, 알파벳, 하이픈(-), 밑줄(_), 마침표(.), 콜론(:) 등이 포함될 수 있다.
- 이름의 첫 글자는 알파벳 또는 밑줄이어야 한다.
- 숫자로 시작 불가: 이름은 숫자로 시작할 수 없다.
- 공백 불가: NMTOKEN에는 공백이 허용되지 않는다. 하나의 연속된 문자열이어야 한다.
[7] NMTOKENS
: XML에서 공백으로 구분된 여러 개의 이름(Name)을 나타내는 문자열
1) 규칙
- 여러 이름 사용: 공백으로 구분된 여러 개의 이름(토큰)을 사용할 수 있다.
- 유효한 이름: 각 이름은 유효한 XML 이름 규칙을 따라야 한다.
- 이름은 알파벳으로 시작해야 하며, 숫자, 하이픈(-), 밑줄(_), 마침표(.) 등을 포함할 수 있다.
- 공백으로 구분: 여러 이름을 사용할 때는 반드시 공백으로 구분해야 한다.
- 숫자로 시작 불가: 각 이름은 숫자로 시작할 수 없다. 알파벳으로 시작해야 한다.
[8] Enumerated DTD Attributes
: XML DTD에서 속성의 값으로 선택 가능한 값을 미리 정의하는 방식
1) 사용법
<!ATTLIST message select (yes | no) "no">
- select: 속성의 이름
- (yes | no): 선택 가능한 값
- "no": 기본값
2) 규칙 (계속)
- 선택 가능한 값 제한: 속성 값은 미리 선언된 목록 내에서만 선택할 수 있다. 예를 들어, (yes | no)로 선언된 경우 yes 또는 no만 사용 가능하며, 그 외의 값은 허용되지 않는다.
- 기본값: 기본값이 지정된 경우, 해당 속성을 명시하지 않으면 기본값이 적용된다. 위 예시에서는 select 속성을 명시하지 않으면 "no"가 기본값으로 사용된다.
- 선택값 정의: 선택할 값은 괄호 안에 나열하고, 각 값은 파이프(|)로 구분한다.
