감자 텃밭

[WEB] XML (eXtensible Markup Language) 본문

Web/Web Theory Information

[WEB] XML (eXtensible Markup Language)

g2h 2023. 1. 21. 22:34

XML이란 무엇인가??

XML이란

HTML과 유사하지만 HTML은 데이터를 보여주는 목적에 가깝지만 XML은 데이터를 저장하고
데이터 전송에 특화된 마크업 언어이자 데이터를 정의하는 규칙을 제공하는 마크업 언어이다.

이러한 XML은 HTML 태그와 같이 미리 정의되어 있지 않고, 사용자가 직접 정의할 수 있다.

XML은 주로 다른 종류의 시스템, 특히 인터넷에 연결된 시스템끼리 데이터를 쉽게 주고받을 수 있도록 하며, HTML의 한계를 극복할 수 있다.


이러한 XML은 HTML태그와 같이 미리 정의되어 있지 않고, 사용자가 직접 정의할 수 있다.

예를 들어 도서와 관련된 데이터를 전달한다면

<book>

<title> XML BOOK </title>

<author> ABCD </author>

</book>

와 같이 사용할 수 있다.

 

이러한 XML을 사용하게 되면, 다양한 이점이 존재한다.


1. 비즈니스 간 트랜잭션 지원

2. 데이터 무결성 유지

3. 검색 효율성 향상

4. 유연한 애플리케이션 설계


 

이러한 XML을 사용하기 위해 XML파일은 여러 구성 요소가 필요하다.

  • XML 문서
    • <xml></xml> 태그는 XML 파일의 시작과 끝을 표시하는 데 사용한다.
  • XML 선언
    • XML 문서는 시작 전 몇몇 정보를 언급한다.
    • <? xml version="1.0" encoding="UTF-8">
  • XML 요소
    • XML 문서 내에 모든 태그를 XML 요소라고 지칭한다.
    • 텍스트, 속성, 기타 요소로 나뉜다.
  • XML 속성
    • XML 요소의 속성을 직접 정의하고 값을 정의할 수 있다. EX) <person age="23">
  • XML 콘텐츠
    • XML 파일의 데이터를 XML 콘텐츠라 한다.
    • 아래와 같은 코드가 있을 경우 홍길동이 콘텐츠가 된다.
<person>
<name>홍길동</name>
</person>

이러한 XML의 특징을 요약하면 

  1. XML은 다른 목적의 마크업 언어를 만드는 데 사용되는 다목적 마크업 언어이다.
  2. XML은 다른 시스템끼리 다양한 종류의 데이터를 손쉽게 교환할 수 있도록 해준다.
  3. XML은 새로운 태그를 만들어 추가해도 계속해서 동작하므로, 확장성이 좋다.
  4. XML은 새로운 태그를 만들어 추가해도 계속해서 동작하므로, 확장성이 좋다.
  5. XML은 데이터를 보여주지 않고, 데이터를 저장하는 것만을 목적으로 한다.
  6. XML은 텍스트 데이터 형식의 언어로 모든 XML문서는 유니코드 문자로만 이루어진다.

 

 

그렇다면 XML 엔터티란 무엇인가?

XML 엔터티는 데이터 자체를 사용하는 대신 XML문서에서 데이터 항목을 

나타내는 것이며, 일반적으로 XML 내에서 데이터 내에 나타날 때 <>, % LT, % GT와 같이 나타낸다

 

 DTD란??

XML DTD에는 XML 문서의 구조, 포함할 수 있는 데이터 값 형식 및 기타 항목을 정의할 수 있는 선언이 포함되어 있다.

DTD는 XML문서의 시작 부분에 있는 선택적 요소 내에서 선언되며, 문서 자체 내에 완전히 자체포함 되거나, 다른 곳에 

로드된 더 거나 또는 둘 다 일 수 있다.

이를 내부 DTD 및 외부 DTD라 칭한다.

 

이러한 DTD는 사용자가 직접 DTD 내에서 사용자 지정 엔터티를 정의할 수 있다.

 

XML 외부 엔터티

정의가 선언된 DTD 외부에 있는 사용자 지정 엔터티 유형이다.

외부 엔터티의 선언은 키워드를 사용하며, 엔터티 값을 로드해야 하는 URL을 지정한다.

주로 http 및 file 등을 사용할 수 있다.

ex) <! DOCTYPE foo [<! ENTITY srt SYSTEM "http:///abc.com">]>

 

하지만 외부 엔터티 참조에서 본문 내용이 소스코드로 된 파일 즉 <로 시작할 경우 에러가 발생할 수 있다.

이럴 경우 php 사용이라면 

"php://filter/read=convert.base64-econde/resource=file:///etc/password"와 같이 사용하게 되면

해당 내용값이 base64로 인코딩 되어 출력되는데

출력값을 다시 디코딩하여 확인할 수 있다.

<!DOCTYPE a[
<!ENTITY str(임의) system "file:///etc/password">
]>
<print>&str;</print>

외부 개체 참조

 

 

 

 

 

내용 출처 및 참고 사이트
https://ko.wikipedia.org/wiki/XML
https://aws.amazon.com/ko/what-is/xml/
http://www.tcpschool.com/xml/

※ 내용이 이상하거나 문제가 있을 경우, 또는 설명에 부족한 내용이 있으시면 알려 주시면 감사합니다.

'Web > Web Theory Information' 카테고리의 다른 글

[WEB] Ajax (Asynchronous JavaScript And XML)  (0) 2023.02.24
[WEB] Same Origin Policy (SOP)  (0) 2023.02.17
[WEB] DOM (Document Object Model)  (0) 2023.01.22
[WEB] XPath (XML Path Language)  (0) 2023.01.22