3.3.3 엘레멘트선언
HTML DTD는
엘레멘트 타입과 속성의 정의로 구성된다.
<!ELEMENT 키워드로 시작.
스펙을 넣고.
> 로 닫는다.
1. 엘레멘트 이름
2. 엘레멘트 종료 태그는 선택사항.
엘레멘트 이름 다음에 두개의 하이픈(-)이 나오면 시작과 끝 태그가 필수적이라는 의미다.
한 개의 하이픈 다음에 "O" 문자가 있으면 종료태그가 생략 가능하다는 것이고,
"O" 문자가 짝으로 나오면 시작태그 종료태그 모두 생략 가능하다는 것이다.
3. 엘레멘트의 내용이 될수있다.
가능한 엘레멘트 내용을 "콘텐트 모델"이라 한다.
내용이 없는 엘레멘트 타입은 "빈 엘레멘트"라고 한다.
엘레멘트 타입을 위한 "콘텐츠 모델"은 "EMPTY" 키워드를 사용해서 정의한다.
역시나 또 어렵다. 갈수록 어려우니 더욱 오기가 생긴다?
예제:
<!ELEMENT UL - - (LI)+>
선언 된 엘레멘트 타입은 UL 이다.
두개의 하이픈이 나왔으므로 시작태그와 종료태그가 필수라는거다.<UL> </UL> 모두 써야한다.
(LI)+ 이 엘레멘트에서 컨텐트 모델은 '한 개 이상의 LI 엘레멘트를 갖느다'는 정의.
빈 엘레멘트 정리하는 예제:
<!ELEMENT IMG - 0 EMPTY>
선언된 엘레멘터 타입은 IMG 이다.
하이픈 하나에 0 하나. 종료태그가 생략가능하다.
켄텐트 모델이 EMPTY이므로 종료태그를 생략한다는 규칙이 적용된다.
키워드 EMPTY로 이 종류에는 컨텐트를 가질 수 없음을 의미한다.
그러니까 IMG 엘레멘트는 당연히 컨텐트를 가질수 없다는거다.
<img >어떤 내용</img> 이렇게 할수 없다는것.
컨텐트 모델 정의
컨텐트 모델은 그 엘레멘트 타입에서 어떤 내용들이 포함 될 수 있는가를 표시한다.
허용되거나 금지 된 엘레멘트 타입의 이름.
예:
UL엘레멘트는 LI엘레멘트 타입을 가지며
P엘레멘트는 또다른 P엘레멘트를 가질수 없다.
DTD 엔티티
예:
LABEL 엘레멘트는 파라메터 엔티티 "%inline;"를 갖는다.
문서텍스트(SGML로 지정된 "#PCDATA").
텍스트는 글자참조를 포함할수있다.
'&'로 시작되고 세미콜런';'으로 끝난다.
예:
스트링 "Hergé's adventures of Tintin"에는 글자 엔티티 참조 é 가 들어있다.
엘레멘트의 컨텐트 모델의 문법 기술 방법
( ... )
한 그룹의 한정.
A | B
A 또는 B이고, 둘다는 아님.
A , B
A와 B가 순서를 맞춰 둘다 나타남.
A & B
A와 B가 순서는 관계없이 둘다 나타남.
A?
A가 나타나거나 한번 나타남.
A*
A가 안나타나거나 한번 이상 나타 남.
A+
A가 한번 이상 나타남.
HTHL DTD의 예제:
<!ELEMENT UL - - (LI)+> : UL엘레멘트에는 LI엘레멘트가 한개이상 포함되야함.
<!ELEMENT DL - - (DT | DD)+> : DL엘레멘트에는 DT 또는 DD 가 순서에 상관없이 하나이상 포함되어야 한다.
<!ELEMENT OPTION - O (#PCDATA)> : OPTION 엘레멘트는 텍스트와 &와 같은 엔티티 만을 가질수 있는데, SGML 데이터 종류는 #PCDATA이다.
HTML의 소수 엘레멘트 타입에서 컨텐트 모델로부터
어떤 엘레멘트를 제외하기 위해 추가적인 SGML기능을 사용한다.
제외된 엘레멘트들은 하이픈('-') 다음에 표시한다.
제외하면 허용된 엘레멘트에서도 제외 된다.
<!ELEMENT A - - (%inline;)* -(A)> : A엘레멘트 타입은 DTD 파라메터 엔티티
"%inline;"의 부분이지만, -(A)로 제외되었다.
A 엘레멘트 안에 또다른 A 엘레멘트를 포함하지 않는다는 얘기.
아래 FORM 엘레멘트도 마찬가지.
같은 방법으로 다음 엘레멘트 타입 정의는 FORM에 다른 FORM을 포함하는 것을 금하고 있다.
<!ELEMENT FORM - - (%block; | SCRIPT)+ -(FORM)>
HTML DTD는
엘레멘트 타입과 속성의 정의로 구성된다.
<!ELEMENT 키워드로 시작.
스펙을 넣고.
> 로 닫는다.
1. 엘레멘트 이름
2. 엘레멘트 종료 태그는 선택사항.
엘레멘트 이름 다음에 두개의 하이픈(-)이 나오면 시작과 끝 태그가 필수적이라는 의미다.
한 개의 하이픈 다음에 "O" 문자가 있으면 종료태그가 생략 가능하다는 것이고,
"O" 문자가 짝으로 나오면 시작태그 종료태그 모두 생략 가능하다는 것이다.
3. 엘레멘트의 내용이 될수있다.
가능한 엘레멘트 내용을 "콘텐트 모델"이라 한다.
내용이 없는 엘레멘트 타입은 "빈 엘레멘트"라고 한다.
엘레멘트 타입을 위한 "콘텐츠 모델"은 "EMPTY" 키워드를 사용해서 정의한다.
역시나 또 어렵다. 갈수록 어려우니 더욱 오기가 생긴다?
예제:
<!ELEMENT UL - - (LI)+>
선언 된 엘레멘트 타입은 UL 이다.
두개의 하이픈이 나왔으므로 시작태그와 종료태그가 필수라는거다.<UL> </UL> 모두 써야한다.
(LI)+ 이 엘레멘트에서 컨텐트 모델은 '한 개 이상의 LI 엘레멘트를 갖느다'는 정의.
빈 엘레멘트 정리하는 예제:
<!ELEMENT IMG - 0 EMPTY>
선언된 엘레멘터 타입은 IMG 이다.
하이픈 하나에 0 하나. 종료태그가 생략가능하다.
켄텐트 모델이 EMPTY이므로 종료태그를 생략한다는 규칙이 적용된다.
키워드 EMPTY로 이 종류에는 컨텐트를 가질 수 없음을 의미한다.
그러니까 IMG 엘레멘트는 당연히 컨텐트를 가질수 없다는거다.
<img >어떤 내용</img> 이렇게 할수 없다는것.
컨텐트 모델 정의
컨텐트 모델은 그 엘레멘트 타입에서 어떤 내용들이 포함 될 수 있는가를 표시한다.
허용되거나 금지 된 엘레멘트 타입의 이름.
예:
UL엘레멘트는 LI엘레멘트 타입을 가지며
P엘레멘트는 또다른 P엘레멘트를 가질수 없다.
DTD 엔티티
예:
LABEL 엘레멘트는 파라메터 엔티티 "%inline;"를 갖는다.
문서텍스트(SGML로 지정된 "#PCDATA").
텍스트는 글자참조를 포함할수있다.
'&'로 시작되고 세미콜런';'으로 끝난다.
예:
스트링 "Hergé's adventures of Tintin"에는 글자 엔티티 참조 é 가 들어있다.
엘레멘트의 컨텐트 모델의 문법 기술 방법
( ... )
한 그룹의 한정.
A | B
A 또는 B이고, 둘다는 아님.
A , B
A와 B가 순서를 맞춰 둘다 나타남.
A & B
A와 B가 순서는 관계없이 둘다 나타남.
A?
A가 나타나거나 한번 나타남.
A*
A가 안나타나거나 한번 이상 나타 남.
A+
A가 한번 이상 나타남.
HTHL DTD의 예제:
<!ELEMENT UL - - (LI)+> : UL엘레멘트에는 LI엘레멘트가 한개이상 포함되야함.
<!ELEMENT DL - - (DT | DD)+> : DL엘레멘트에는 DT 또는 DD 가 순서에 상관없이 하나이상 포함되어야 한다.
<!ELEMENT OPTION - O (#PCDATA)> : OPTION 엘레멘트는 텍스트와 &와 같은 엔티티 만을 가질수 있는데, SGML 데이터 종류는 #PCDATA이다.
HTML의 소수 엘레멘트 타입에서 컨텐트 모델로부터
어떤 엘레멘트를 제외하기 위해 추가적인 SGML기능을 사용한다.
제외된 엘레멘트들은 하이픈('-') 다음에 표시한다.
제외하면 허용된 엘레멘트에서도 제외 된다.
<!ELEMENT A - - (%inline;)* -(A)> : A엘레멘트 타입은 DTD 파라메터 엔티티
"%inline;"의 부분이지만, -(A)로 제외되었다.
A 엘레멘트 안에 또다른 A 엘레멘트를 포함하지 않는다는 얘기.
아래 FORM 엘레멘트도 마찬가지.
같은 방법으로 다음 엘레멘트 타입 정의는 FORM에 다른 FORM을 포함하는 것을 금하고 있다.
<!ELEMENT FORM - - (%block; | SCRIPT)+ -(FORM)>

