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
외부 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의 속성값인 date 는 CDATA 이고 #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 |