코딩/HTML

[HTML] DTD 를 배워보자

peter_00 2024. 5. 12. 17:34
반응형

XML DTD ( Document Type Definition ) 문서타입정의

DTD를 이용하면 다른 파티에 있는 데이터도 하나의 XML 파일으로 정리가 가능하다.

DTD 파일은 2개의 타입이 있다

  • Internal DTD
  • External DTD

Internal DTD 내부 DTD

<?xml version="1.0" standalone="yes" ?>
<!DOCTYPE student [
    <!ELEMENT student (firstName,lastName,email,mobile)>
    <!ELEMENT firstName (#PCDATA)>
    <!ELEMENT lastName (#PCDATA)>
    <!ELEMENT email (#PCDATA)>
    <!ELEMENT mobile (#PCDATA)>
]>
<student>
    <firstName>John</firstName>
    <lastName>Smith</lastName>
    <email>jsmith@gmail.com</email>
    <mobile>0211223344</mobile>
</student>

 

External DTD 외부 DTD

External DTD 예시

외부 DTD를 사용한다는 것을 알리기 위해서 standalone 코드의 값을 "no"로 지정을 해둔다.

<!ELEMENT student (firstName,lastName,email)>

student 요소는 (firstname,lastName,email) 세개의 데이터를 포함한다는 뜻의 DTD 파일이다.

 

DTD 요소를 이용하면 2개의 데이터 요소를 하나로 포함 시킬 수 있다

위 코드를 참고하고 DTD 파일을 작성한다.

<!ELEMENT studentList (student*)>

studentList라는 요소는 0 혹은 그 이상의 student 데이터를 포함한다는 뜻이다.

 

DTD의 기본 구성요소

 

<!ELEMENT elementName (content)>
  • elementName은 부르고자 하는 요소의 이름이다.
  • content는 어떠한 데이터가 요소의 포함되어있는지 지정한다.

DTD Declaration DTD 선언

<!ELEMENT elementName (child+)> 하나 혹은 그 이상의 자식 요소가 특정 부모 요소에 포함된다
<!ELEMENT elementName (child*)> 0 혹은 그 이상의 자식 요소가 특정 부모 요소에 포함된다
<!ELEMENT elementName (child?)> 0 혹은 하나의 자식 요소가 특정 부모 요소에 포함된다
<!ELEMENT elementName (child1|child2)> child1 혹은 child2가 특정 부모 요소에 포함된다
<!ELEMENT elementName (child1,child2,child3,...)> child1,child2,child3, ... 가 특정 부모 요소에 포함된다

 

DTD:Attribute declaration / DTD 속성 선언

 

DTD 파일 안에서의 속성은 위와 같은 형식으로 선언할 수 있다.

<!ATTLIST elementName attributeName attributeType attributeValue>

<!ATTLIST 요소이름 속성이름 속성타입 속성값>

  • elementName (요소이름) 요소 이름은 해당 속성이 포함될 요소의 이름을 의미한다
  • attributename (속성이름) 속성의 이름을 의미한다.
  • attributeType (속성타입) 속성의 타입을 의미한다.
  • attributeValue (속성값) 속성의 값을 의미한다.

속성값은 4가지 정의가있다.

<!ATTLIST elementName attributeName attributeType "default-value"> 이 속성의 속성값은 기본값이 된다
<!ATTLIST elementName attributeName attributeType #FIXED "value"> 이 속성의 속성값은 고정값이 된다
<!ATTLIST elementName attributeName attributeType #REQUIRED> 이 속성은 반드시 명시되어야 한다
<!ATTLIST elementName attributeName attributeType #IMPLIED> 이 속성은 명시되어도 되고 안되어도 된다

 

속성값의 예시

속성값 예시

dailyTransaction의 속성값인 dateCDATA 이고 #REQUIRED 즉 반드시 명시되어야 하는 값이다.

person의 속성값인 staffDbId CDATA 이고 #REQUIRED  

person의 속성값인 operation  CDATA 이고 #REQUIRED  

CDATA는 속성값이 문자값이라는걸 의미함

반응형

'코딩 > HTML' 카테고리의 다른 글

[HTML] JSON에 대해 배워보자  (0) 2024.05.24
[HTML] XSD 를 배워보자  (0) 2024.05.12
[HTML] XML 을 배워보자  (0) 2024.05.12
[HTML] Event  (0) 2024.05.10
[HTML] 리뷰  (0) 2024.05.10