XML이란?
데이터를 저장하고 전송하는 목적으로 만들어진 마크업 언어로 HTML과 같이 태그를 사용합니다.
HTML과 XML
두 언어 모두 마크업 언어로 태그를 사용한다는 공통점이 존재하지만, HTML의 경우 데이터를 사용자에게 표시하는 목적으로 미리 정의된 태그를 사용하는 반면에 XML은 데이터를 저장하고 전송하는 목적으로 사용자가 태그를 정의하여 사용한다는 차이점이 있습니다.
XML DTD
XML DTD란 Document Type Definition의 약자로 XML 문서의 구조 및 해당 문서에서 사용할 수 있는 요소와 속성을 정의한 문서입니다. 이러한 DTD는 <!DOCTYPE 으로 안에 ELEMENT를 통해 요소를 정의하고, 요소의 타입을 지정해 주거나 ATTLIST를 통해 속성을 정의할 수 있으며, ENTITY를 통해 엔티티를 정의하여 변수처럼 파일이나 내용을 참조시킬 수 있습니다.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE root [
<!ELEMENT root (title,userid,content)>
<!ELEMENT title #PCDATA>
<!ELEMENT userid #PCDATA>
<!ELEMENT content #PCDATA>
<!ATTLIST content lang CDATA #REQUIRED>
<!ENTITY user SYSTEM "userid.txt">
<!ENTITY title "test server">
]>
<root>
<title>&title;</title>
<userid>&user;</userid>
<content lang=en>Hello World!</content>
</root>
위와 같은 코드를 예시로 들 수 있는데 해당 XML 코드를 해석하자면, xml의 버전, 인코딩 언어, 독립형 여부를 지정해준 뒤 <!DOCTYPE 을 통해 rooot element인 root를 정의해 줍니다. 그리고 해당 root element의 자식 요소로 title, userid, content를 선언해 주어 root 요소 안에 위치할 수 있도록 해주었습니다. 그리고 ELEMENT를 통해 요소를 #PCDATA라는 텍스트 타입으로 선언해 주었습니다. ATTLIST를 통해 content 요소의 속성인 lang를 정의해 주었고, 해당 속성의 타입을 CDATA 즉, 문자 데이터로 취급하고, #REQUIRED를 통해 해당 속성이 필수적이라 선언하였습니다. 그다음으로 ENTITY를 통해 외부의 userid.txt 파일을 읽어오는 user라는 외부 엔티티와 Hello World! 라는 내용이 담긴 head란는 내부 엔티티를 선언하였고 이렇게 작성된 DTD를 바탕으로 root element안에 요소와 속성, 엔티티를 사용한 XML 문서를 작성해 보았습니다. 위의 예시는 내부 DTD이며 아래의 예시는 외부 DTD 입니다.
<!-- data.dtd -->
<!ELEMENT root (title,userid,content)>
<!ELEMENT title #PCDATA>
<!ELEMENT userid #PCDATA>
<!ELEMENT content #PCDATA>
<!ATTLIST content lang CDATA #REQUIRED>
<!ENTITY user SYSTEM "userid.txt">
<!ENTITY title "test server">
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE root SYSTEM "data.dtd">
<root>
<title>&title;</title>
<userid>&user;</userid>
<content lang=en>Hello World!</content>
</root>
위와 같이 외부의 data.dtd라는 파일을 불러와 xml 문서에 적용을 시킬 수 있습니다.
XML 파일 규칙
XML 문서를 작성할 때 지켜야 하는 규칙이 있는데 이는 다음과 같습니다.
- 문서의 첫 줄에는 XML 문서의 버전과 인코딩 방식, 독립형 여부와 같은 내용을 담고 있는데 이러한 내용은 생략 가능하지만 대부분 XML 문서의 내용을 정확히 전달하기 위해 기재합니다.
- XML에서 root element는 반드시 하나만 존재해야 하며, 다른 요소들은 모두 root element 안에 존재해야 합니다.
- XML의 태그는 열리는 태그와 닫히는 태그가 존재하는데 열린 태그는 반드시 닫아야 합니다. (HTML의 img와 같은 태그처럼 <tag /> 형식으로 사용되는 태그도 존재합니다.)
- XML의 태그는 대소문자를 구분하기 때문에 태그를 작성할 때 정확히 작성해야 합니다.
- XML의 태그의 첫 문자는 숫자로 시작할 수 없습니다.
- XML의 태그 처음과 중간에는 공백을 사용할 수 없습니다.
- xml과 같은 예약어를 태그로 사용할 수 없습니다.
'Web > 언어' 카테고리의 다른 글
GraphQL이란? (0) | 2024.09.19 |
---|