달력

02

« 2012/02 »

  •  
  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  •  
  •  
  •  
2008/12/22 22:18

11. 엘리먼트 컨텐트 모델 General Web2008/12/22 22:18


이전 블로그(http://blog.naver.com/nashira7)에서 옮겨왔습니다.
작성일 : 2005년 7월 17일
옮긴일 : 2008년 12월 22일

컨텐트 모델 2가지

 

1. 시퀀스 모델(Sequence)

- 엘리먼트는 지정된 순서대로 자식 엘리먼트를 가져야만 한다는 것

- 콤마로서 자식 엘리먼트를 구분

- 아주 엄격한 선언 타입

 

유효한 예

<!DOCUMENT MOUNTAIN

[

<!ELEMENT MOUNTAIN (NAME, HEIGHT, STATE)>

<!ELEMENT NAME (#PCDATA)>

<!ELEMENT HEIGHT (#PCDATA)>

<!ELEMENT STATE (#PCDATA)>

]>

<MOUNTAIN>

<NAME>Wheeler</NAME>

<HEIGHT>13161</HEIGHT>

<STATE>New Mexico</STATE>

</MOUNTAIN>

 

유효하지 않은 예

<MOUNTAIN>

<NAME>Wheeler</NAME>

<HEIGHT>13161</HEIGHT>

<STATE>New Mexico</STATE>

</MOUNTAIN>

 

2. 초이스(choice)모델

<!DOCUMENT FILM

[

<!ELEMENT FILM (STAR | NARRATOR | INSTRUCTOR)>

<!ELEMENT STAT (#PCDATA)>

<!ELEMENT NARRTOR (#PCDATA)>

<!ELEMENT INSTRUCTOR (#PCDATA)>

]

>

 

유효(O)

<FILM>

<STAR>Robert Redford</STAR>

</FILM>

 

유효(O)

<FILM>

<NARRATOR>Robert Redford</NARRATOR>

</FILM>

 

유효(O)

<FILM>

<INSTRUCTOR>Robert Redford</INSTRUCTOR>

</FILM>

 

유효(X) - 2개가 같이 올 수 없다.

<FILM>

<STAR>Robert Redford</STAR>

<NARRATOR>Robert Redford</NARRATOR>

</FILM>

 

3. 컨텐트 모델의 변형

? - 0개 혹은 하나 이상의 아이템

+ - 1개 혹은 그 이상의 아이템

* - 0개 혹은 그 이상의 아이템

 

예1)

<!ELEMENT MOUNTAIN (NAME+, HEIGHT?, STATE)>

: NAME 엘리먼트가 한개 혹은 그 이상, HEIGHT 엘리먼트가 0개 혹은 하나인 경우

<MOUNTAIN>

<NAME>Ryu</NAME>

<NAME>Park</NAME>

<STATE>Seoul</STATE>

</MOUNTAIN>

 

예2)

<!ELEMENT FILM (STAR* | NARRATOR | INSTRUCTOR)>

: STAR 엘리먼트가 0개 혹은 그 이상인 경우

<FILM>

<STAR>Ryu</STAR>

<STAR>Park</STAR>

</FILM>

<FILM>

<NARRATOR>Gregory</NARRATOR>

</FILM>

 

예3)

<!ELEMENT FILM (STAR | NARRATOR | INSTRUCTOR)+>

: () 뒤에 + 기호가 오는 경우에는 전체 컨트롤 모델을 조작

<FILM>

<NARRATOR></NARRATOR>

<STAR></STAR>

<NARRATOR></NARRATOR>

</FILM>

<FILM>

<STAR>Bertram Wooster</STAR>

<STAR>Sean Connery</STAR>

</FILM>

<FILM>

<INSTRUCTOR>Stinker Pike</INSTRUCTOR>

</FILM>

 

예4) 시퀀스 모델안에 초이스 컨텐트 모델을 넣거나 초이스 모델안에 시퀀스 모델을 넣는 경우

<!DOCTYPE FILM

[

<!ELEMENT FILM (TITLE, CLASS, (STAR | NARRATOR | INSTRUCTOR))>

<!ELEMENT TITLE (#PCDATA)>

<!ELEMENT CLASS (#PCDATA)>

<!ELEMENT STAR (#PCDATA)>

<!ELEMENT NARRATOR (#PCDATA)>

<!ELEMENT INSTRUCTOR (#PCDATA)>

]

>

 

유효한 도큐먼트

<FILM>

<TITLE>The Net</TITLE>

<CLASS>fictional</CLASS>

<STAR>Sandra Bullock</STAR>

</FILM>

 

<FILM>

<TITLE>How to XML</TITLE>

<CLASS>instructional</CLASS>

<INSTRUCTOR>Penny Donaldson</INSTRUCTOR>

</FILM>

 

4. 혼합된 컨텐트 지정

엘리먼트 타입을 혼합된 컨텐트로 선언하기 위해 다음의 두 가지 형태의 컨텐트 모델을 사용한다.

1) 문자데이터 - (#PCDATA)를 사용

 

<!ELEMENT SUBTITLE (#PCDATA)>

 

<SUBTITLE>A New Approach</SUBTITLE>

<SUBTITLE></SUBTITLE>

 

2) 문자 데이터와 자식 엘리먼트

<!ELEMENT TITLE (#PCDATA | SUBTITLE)*>

: TITLE이라는 엘리먼트는 파싱된 문자 데이터를 가지고 있으며, SUBTITLE은 0개 또는 그 이상의

  엘리먼트를 가질수 있다는 의미.

 

아래는 모두 유효한 문서이다.

<TITLE>

Moby-Dick

<SUBTITLE>Or, the Whale</SUBTITLE>

</TITLE>

 

<TITLE>

<SUBTITLE>Or, the Whale</SUBTITLE>

Moby-Dick

</TITLE>

 

<TITLE>

Moby-Dick

</TITLE>

 

<TITLE>

<SUBTITLE>Or, Whale</SUBTITLE>

<SUBTITLE>Another Subtitle</SUBTITLE>

</TITLE>

 

<TITLE></TITLE>

저작자 표시 비영리 변경 금지

'General Web' 카테고리의 다른 글

13. 외부 DTD 만들기  (0) 2008/12/22
12. 속성 선언하기  (0) 2008/12/22
11. 엘리먼트 컨텐트 모델  (0) 2008/12/22
10. 엘리먼트 타입 선언하기  (0) 2008/12/22
9. DTD만들기  (0) 2008/12/22
8. DTD 추가하기  (0) 2008/12/22
TAG
Posted by -세티-