XML DTD 선언

HTML & CSS & JS 2015. 6. 22. 09:08

DTD 선언

문서 자체에서 항상 통일된 형식으로 문서를 작성하고, 자동으로 검사하기 위해 정의
반드시 xml 문서 선언 다음에 하나만 작성한다.

요소 선언
요소의 이름, 계층 구조를 정의
속성 선언
요소에 추가되는 속성과 속성 이름, 값의 범위, 필수성 등을 정의
엔티티 선언
치환 문자열이나 문서에서 사용할 파일이나 다른 객체에 대한 이름 등을 정의
표기법 선언
xml 형식이 아닌 다른 외부 파일을 참조하는 경우 그 대상을 지정하는 이름 등을 정의
<!DOCTYPE tel_num [
    <!ELEMENT tel_num (home, office, cell)>
        <!ELEMENT home (#PCDATA)>
        <!ELEMENT office (#PCDATA)>
        <!ELEMENT cell (#PCDATA)>
]


DTD 요소 선언

<!ELEMENT 요소이름 인수>

선언 인수

  • ANY 어떠한 내용이라도 요소의 내용으로 가질 수 있다. 거의 사용되지 않는다.
    <!ELEMENT element_name ANY>
    
  • EMPTY 빈어있는 요소로 요소의 내용이 없어야 한다.
    <!ELEMENT element_name EMPTY>
    
  • PCDATA 단순한 텍스트 데이터만을 의미
    <!ELEMENT element_name (#PCDATA)>
    
  • 하위요소
    • 하위요소를 정의할 때 하위요소의 이름을 ","로 구분한다.
    • "?"를 붇인 하위요소는 작성되지 않거나 1번만 작성된다.
    • "+"를 붙인 하위요소는 1번 이상은 반드시 작성되어야 한다.
    • "|"로 하위요소 이름을 정의하면 정의된 하위요소 중 하나의 요소가 하위요소로 작성된다.
    • "*"를 붙인 하위요소는 작성되지 않거나 몇번이라도 작성될 수 있다.


DTD 속성 선언

<!ATTLIST element_mane attribute_name attribute_value default_value>


선언 인수

  • CDATA 파싱(문서해석) 대상에서 제외되는 일반 문자열 데이터
  • 나열(en1|en2|...) 나열된 값중 하나가 사용될 수 있다는 의미로 "|"로 구분
  • ID 특정요소에 유일한 식별자를 부여하기 위해서 사용
  • IDREF, IDREFS 어떤 요소에서 ID형식으로 지정된 속성값을 다른 요소에서 사용하고 싶을 때 사용
  • NMTOKEN, NMTOKENS xml에서 사용되는 이름의 규칙을 속성값에 적용할 때 사용


속성의 기본값

"값" 속성이 지정되지 않은 경우 기본값으로 사용할 값

#REQUIRED
필수의 의미로 반드시 명시적으로 문서 본문에서 작성되어야함
#IMPLIED
생략 가능의 의미로 속성값이 작성되지 않아도 됨
#FIXED
"값" 수정되어서는 안되는 속성의 기본값을 지정함


DTD 엔티티 선언

약자로 정의되는 긴 문자열 또는 파일


이스케이프 문자 엔티티

html에서 사용하는 이스케이프 문자와 동일하다.

  • 치환문자열 엔티티
    <!ENTITY entity_name "string">
    &entity_name;
    
  • 파일 엔티티
    <!ENTITY entity_name SYSTEM "file_URL">
    <!ENTITY entity_name PUBLIC "공개식별자" "file_URL">
    
  • 파라미터 엔티티 문서 본문에서 사용하는 것이 아니라 DTD 내부에서 사용할 목적으로 선언
    <!ENTITY % entity_name "string">
    <!ENTITY % entity_name SYSTEM "file_URL">
    <!ENTITY % entity_name PUBLIC "공개식별자" "file_URL">
    %entity_name;
    


표기법의 선언

그림 또는 바이너리 데이터를 포함할 경우 문서 해석에서 제외시키기 위해 선언
NOTATION 선언 후 ENTITY 선언하고 요소의 속성을 정의해서 사용

<!NOTATION PICBMP SYSTEM "www..../....bmp">
<!ENTITY PICFILE SYSTEM "www..../....bmp" NDATA PICBMP>
<!ATTLIST PIC FILE ENTITY #REQUIRED>
<PIC FILE="PICFILE">


외부 DTD 파일의 사용

확장자 .dtd를 사용한다

<!DOCTYPE root_element SYSTEM "DTD_file"<
<!DOCTYPE root_element PUBLIC "공개식별자" "DTD_file"<


예)

<!DCOTYPE member [
    <!ELEMENT member (member_log, member_info)>
        <!ELEMENT member_log (member_id, member_pw)>
            <!ELEMENT member_id (#PCDATA)>
            <!ELEMENT member_pw (#PCDATA)>
    <!ELEMENT member_info (member_name, member_num, member_phone, member_job)>
        <!ELEMENT member_name (#PCDATA)>
        <!ELEMENT member_num (#PCDATA)>
        <!ELEMENT member_phone (#PCDATA)>
            <!ATTLIST member_phone type(home|office|cell) "cell">
        <!ELEMENT member_job (#PCDATA)>
            <!ATTLIST member_job job (...|...|...|...|...) #REQUIRED>
]>

'HTML & CSS & JS' 카테고리의 다른 글

HTML 4.01 tag  (0) 2015.06.22
HTML XML 문서 형식 선언  (0) 2015.06.22
XML 문서 규칙  (0) 2015.06.22
CSS 작성  (0) 2015.06.22
SyntaxHighlighter  (0) 2015.06.22
: