[웹 서비스 개발] XML_DTD_2024 (1)

김광일·2024년 9월 13일

웹 서비스 개발

목록 보기
9/45
post-thumbnail

[1] DTD

: Document Type Definition의 약자로, 문서 유형 정의 방식을 의미한다.
: XML 문서가 어떤 요소들로 구성되어 있고, 그 요소들이 어떻게 상호작용하는지를 규정한다.

1) 특징

  • XML 문서의 구조와 법적 요소 및 속성을 정의한다.
  • 이를 사용하면 독립적인 그룹이 데이터 교환을 위한 DTD에 합의할 수 있다.
  • 애플리케이션은 DTD를 사용하여 XML 데이터가 유효한지 확인할 수 있다.

2) 예시

<?xml version="1.0"?>
<!DOCTYPE note [
<!ELEMENT note ( to, from, heading, body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend</body>
</note>

3) xml validator 사이트

: 해당 사이트에서 xml의 validate를 확인할 수 있다.

4) XML에서 DTD 정의하는 방식

(1) Internal

: xml 파일 내부에 <!DOCTYPE note [ ~~~~ ]>의 형태로 선언하여 사용한다.

<?xml version="1.0"?>
<!DOCTYPE note [
<!ELEMENT note ( to, from, heading, body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend</body>
</note>
(2) External

: xml 파일dtd 파일을 만들어서 사용한다.
: XML 상단에 <!DOCTYPE note SYSTEM "DTD파일명.dtd">의 형태로 선언하여 사용한다.

xml 파일

<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me
this weekend!</body>
</note>

dtd 파일

<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>

[2-0] XML 문서의 구성 요소

1) 구성요소

  • Elements : XML 문서의 기본 구성요소로, 시작 태그와 끝 태그 사이에 데이터를 포함한다.
  • Attributes : 요소에 대한 추가적인 정보를 제공하는 이름/값 쌍이다.
  • Entities : 특정 문자를 대체하는 기호나 코드
  • PCDATA : 태그 사이에 들어가는 텍스트로, 파서에 의해 구문 분석된다.
  • CDATA : 구문 분석이 되지 않는 데이터로, 파서가 특별한 처리를 하지 않는다.

[2-1] Attributes

: 속성은 요소에 대한 추가 정보를 제공한다.

1) 특징

  • 항상 요소의 시작 태그 안에 배치된다.
  • 항상 "이름/값" 쌍으로 제공된다.
    • 이름 = "값"
    • ex) by = "Peter"

2) 예시

: date="2020/8/16"by="Peter"는 TO 요소에 추가적인 정보를 제공하는 속성

<?xml version="1.0" encoding="euc-kr" standalone="yes"?>
<MEMO>
<TO date = '2020/8/16' by = 'Peter'> To: Eugene</TO>
<FROM> From: Hong, Gil-Dong</FROM>
<CONTENTS> Can we dine out at 1 PM?</CONTENTS>
</MEMO>

[2-2] Entities

1) 특징

  • XML 태그의 시작을 정의하는 < 보다 작은 기호 (,)와 같이 일부 문자는 XML에서 특별한 의미를 갖는다.
  • ex) ' '의 경우 HTML에서 문서에 여분의 공백을 삽입하는 데 사용된다.
  • 엔티티는 XML 파서에 의해 문서가 파싱될 때 확장된다.

2) 종류

3) 예시

: &quot;는 큰따옴표(")로 확장된다.

<?xml version="1.0" encoding="euc-kr" standalone="yes"?>
<?xml-stylesheet type="text/css" href="memo1.css"?>
<MEMO>
  <TO> To: &quot; Eugene &quot;</TO>
  <FROM> From: Hong, Gil-Dong</FROM>
  <CONTENTS> Can we dine out at 1 PM?</CONTENTS>
</MEMO>

[2-3] PCDATA

: Parseable Character DATA의 약자로, 구문 분석 가능한 문자 데이터를 의미한다.
: XML 요소의 내용 중 파서가 읽고 처리할 수 있는 데이터를 의미한다.

1) 특징

  • XML 요소의 시작 태그와 끝 태그 사이에 있는 텍스트로서, 문자 데이터이다.
  • 파서에 의해 파싱될 데이터를 가리킨다.
  • 파서에서 엔티티와 마크업을 검사한다.

2) 유의사항

  • PCDATA에는 &, <, > 문자가 포함되지 말아야 한다.
  • PCDATA에는 반드시 엔티티인 &amp;, &lt;, &gt;로 표시해야 한다.

[2-4] CDATA

: 문자 데이터를 의미한다.

1) 특징

  • 파서가 파싱하지 않는 텍스트이다.
  • 텍스트 내부의 태그는 마크업 및 엔티티로 취급하지 않고, 확장되지 않는다.

2) 예시

: CDATA 섹션 안의 는 XML 태그로 인식되지 않고, 단순한 텍스트로 처리된다.


profile
안녕하세요, 사용자들의 문제 해결을 중심으로 하는 프론트엔드 개발자입니다. 티스토리로 전환했어요 : https://pangil-log.tistory.com

0개의 댓글