YYYEJI

[XML] DTD의 정의와 Elements 속성 본문

HTML(or XML) & CSS & JavaScript

[XML] DTD의 정의와 Elements 속성

YEJI ⍢ 2022. 9. 30. 09:55
728x90

 

DTD (Document Type Definition) ?

 XML 문서의 구조 및 해당 문서에서 사용할 수 있는 적법한 요소와 속성을 정의합니다.

 

 

✓ well-formed - DTD에 맞지 않아도 실행이 잘 되는 form   (DTD X, syntax O, 실행 O)

 vaild - well-formed 이면서 DTD에 잘 맞는 form             (DTD O, syntax O, 실행 O)

 

 

 

 새로운 문서 타입 정의

  새로운 문서 타입을 이용한 데이터의 교환

  XML 문서의 구문 및 구조에 대한 유효성을 검사

 

 

 

Element define

<!ELEMENT element-name category>               
<!ELEMENT element-name (element-content)>

위의 코드와 같이 DTD의 element를 정의할 수 있습니다.

(둘 중 하나를 사용하면 됩니다.)

 

 

 

 

 Children element

<!ELEMENT element-name (child1)>
<!ELEMENT element-name (child1,child2,...)>

element-content에 child가 하나 또는 여러 개 들어갈 수 있습니다.

 

 

② PCDATA

<!ELEMENT element-name (#PCDATA)>

child를 넣을 땐 괄호 안에 데이터의 type을 넣으시면 됩니다.

 

 

 

③ Empty element

<!ELEMENT element-name EMPTY>

Category keyword로 사용하시면 됩니다.

empty element는 attribute만을 갖습니다.

 

 

Ex) <link rel = "naver" href = "naver.com" />

 

 

 Any element

<!ELEMENT element-name ANY>

Category keyword로 사용하시면 됩니다.

Any element를 사용하면 parsable data의 어떤 조합도 담을 수 있게 되고,

데이터 컨텐츠를 제한하지 않게 됩니다.

(다만, attribute는 안됩니다.)

 

 

⑤ Element - Non type

<!ELEMENT element-name (child-name)>

✓ Element를 단 하나만 발생

 

 

 

⑥ Element - ' + ' type

<!ELEMENT element-name (child-name+)>

✓ Element를 하나 이상으로 발생

 

 

 

⑦ Element - ' * ' type

<!ELEMENT element-name (child-name*)>

✓ Element를 0개 또는 더 많이 발생

 

 

 

⑧ Element - ' ? ' type

<!ELEMENT element-name (child-name?)>

✓ Element를 0개 또는 1개 발생

 

 

 

⑨ Element - ' , ' type

<!ELEMENT note (to,from, header, message, body)>

✓ AND

✓ Child elements를 순자적으로 나열

 

 

 Element -  ' | ' type

<!ELEMENT note (to,from,header,(message|body))>

✓ Exclusive OR

✓ Child elements를 선택적으로 나열

 

 

EXAMPLE

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type = "text/css" href = "h.css"?>

<!DOCTYPE note[
<!ELEMENT note (to, from, heading, body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body ANY>
]>

<note>
    <to>Tove</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>
        <to>Tove</to>
    </body>
</note>

↑↑↑      Valid code     ↑↑↑

 

 

 

 

◡̈