XML 편집하기

이동: 둘러보기, 검색

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 아이디(ID)으로 기록되고, 다른 장점도 있습니다.

편집을 되돌릴 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 저장해주세요.
최신판 당신의 편집
1번째 줄: 1번째 줄:
[[파일:XML 로고.png|썸네일|200픽셀|'''XML'''(Extensible Markup Language)]]
+
[[파일:XML.png|썸네일|200픽셀|'''XML'''(eXtensible Markup Language)]]
[[파일:XML 글자.png|썸네일|300픽셀|'''XML'''(Extensible Markup Language)]]
 
  
 
'''XML'''(엑스엠엘)은 Extensible Markup Language의 약자로서, [[홈페이지]] 제작에 사용되는 "확장된 HTML 언어"이다. [[HTML]] 언어는 미리 정의된 [[태그]]만 사용할 수 있지만, XML 언어는 필요한 태그(tag)를 개발자가 새로 정의하여 사용할 수 있다. 다양한 [[시스템]]을 [[연계]]하여 [[데이터]]를 주고받기 위해 XML 기반의 [[SOAP]] 또는 [[REST]] 방식을 사용한다.
 
'''XML'''(엑스엠엘)은 Extensible Markup Language의 약자로서, [[홈페이지]] 제작에 사용되는 "확장된 HTML 언어"이다. [[HTML]] 언어는 미리 정의된 [[태그]]만 사용할 수 있지만, XML 언어는 필요한 태그(tag)를 개발자가 새로 정의하여 사용할 수 있다. 다양한 [[시스템]]을 [[연계]]하여 [[데이터]]를 주고받기 위해 XML 기반의 [[SOAP]] 또는 [[REST]] 방식을 사용한다.
8번째 줄: 7번째 줄:
  
 
== 등장배경 ==
 
== 등장배경 ==
XML은 주로 다른 종류의 시스템, 특히 인터넷에 연결된 시스템끼리 [[데이터]]를 쉽게 주고받을 수 있게 하여 [[HTML]]의 한계를 극복할 목적으로 만들어졌다. XML을 이용하면 어디부터 어디까지가 [[데이터]] 이름이고 어디부터 어디까지가 실제 [[데이터]]이며 어디부터 어디까지가 [[데이터]] 단위인지도 표현할 수 있다. 즉, [[데이터]]에 의미를 부여하는 메타데이터를 기술할 수 있다. XML은 바로 이러한 목적으로 탄생했다.
+
XML은 주로 다른 종류의 시스템, 특히 인터넷에 연결된 시스템끼리 [[데이터]]를 쉽게 주고 받을 수 있게 하여 [[HTML]]의 한계를 극복할 목적으로 만들어졌다. XML을 이용하면 어디부터 어디까지가 [[데이터]] 이름이고 어디부터 어디까지가 실제 [[데이터]]이며 어디부터 어디까지가 [[데이터]] 단위인지도 표현이 가능하다. 즉, [[데이터]]에 의미를 부여하는 메타데이터를 기술할 수 있다. XML은 바로 이러한 목적으로 탄생했다.
  
 
== 역사 ==
 
== 역사 ==
 
XML은 SGML의 애플리케이션 프로파일이다.
 
XML은 SGML의 애플리케이션 프로파일이다.
  
동적 정보 표시를 위한 [[SGML]]의 다재다능함은 인터넷의 성장 이전인 1980년대 말에 초기 디지털 미디어 출판사들에 의해 인지되었다. 1990년대 중순, 일부 [[SGML]] 실천자들은 당시 새로운 [[월드 와이드 웹]]을 경험하였고 웹이 성장할수록 마주칠 가능성이 있던 문제 중 일부를 SGML이 해결해줄 것이라 믿었다. 댄 커널리는 1995년 당시 직원으로 있었을 때 SGML을 [[W3C]]의 활동 목록에 추가하였다. 작업은 1996년 중순 썬 마이크로시스템즈의 엔지니어 존 보삭이 선언문을 만들고 협업자들을 모집하였을 때 시작되었다. 보삭은 [[SGML]]과 웹에 모두 경험이 있는 사람들의 작은 공동체와 잘 어울렸다.
+
동적 정보 표시를 위한 [[SGML]]의 다재다능함은 인터넷의 성장 이전인 1980년대 말에 초기 디지털 미디어 출판사들에 의해 인지되었다. 1990년대 중순, 일부 [[SGML]] 실천자들은 당시 새로운 [[월드 와이드 웹]]을 경험하였고 웹이 성장할수록 마주칠 가능성이 있던 문제들 중 일부를 SGML이 해결해줄 것이라 믿었다. 댄 커널리는 1995년 당시 직원으로 있었을 때 SGML을 [[W3C]]의 활동 목록에 추가하였다. 작업은 1996년 중순 썬 마이크로시스템즈의 엔지니어 존 보삭이 선언문을 만들고 협업자들을 모집하였을 때 시작되었다. 보삭은 [[SGML]]과 웹에 모두 경험이 있는 사람들의 작은 공동체와 잘 어울렸다.
  
주요 디자인 결정은 1996년 7월과 11월 사이 도달했으며, 당시 XML 사양의 최초 워킹 드래프트가 출판되었다. 추가 디자인 작업이 1997년에 계속되었으며 XML 1.0은 1998년 2월 10일 [[W3C]] 권고안이 되었다. <ref name="XML개념> 〈[https://ko.wikipedia.org/wiki/XML XML]〉,《위키백과》 </ref>
+
주요 디자인 결정은 1996년 7월과 11월 사이 도달했으며, 당시 XML 사양의 최초 워킹 드래프트가 출판되었다. 추가 디자인 작업이 1997년에 계속되었으며 XML 1.0은 1998년 2월 10일 [[W3C]] 권고안이 되었다. <ref name="XML개념> 〈[https://ko.wikipedia.org/w/index.php?title=XML&action=edit&section=1 XML]〉,《위키백과》 </ref>
  
 
== 특징 ==
 
== 특징 ==
29번째 줄: 28번째 줄:
 
*XML은 라이선스 제약이 없으며, 플랫폼이 독립적이고, 많은 지원이 있다.
 
*XML은 라이선스 제약이 없으며, 플랫폼이 독립적이고, 많은 지원이 있다.
  
XML(Extensible Markup Language)은 W3C에서 개발된, 다른 특수한 목적을 갖는 마크업 언어를 만드는 데 사용하도록 권장하는 다목적 마크업 언어이다. XML은 SGML의 단순화된 부분집합으로, 다른 많은 종류의 데이터를 기술하는 데 사용할 수 있다. XML은 주로 다른 종류의 시스템, 특히 인터넷에 연결된 시스템끼리 데이터를 쉽게 주고받을 수 있게 하여 HTML의 한계를 극복할 목적으로 만들어졌다.
+
XML(Extensible Markup Language)은 W3C에서 개발된, 다른 특수한 목적을 갖는 마크업 언어를 만드는데 사용하도록 권장하는 다목적 마크업 언어이다. XML은 SGML의 단순화된 부분집합으로, 다른 많은 종류의 데이터를 기술하는 데 사용할 수 있다. XML은 주로 다른 종류의 시스템, 특히 인터넷에 연결된 시스템끼리 데이터를 쉽게 주고 받을 수 있게 하여 HTML의 한계를 극복할 목적으로 만들어졌다.
  
 
기계는 인간의 언어를 읽거나 이해할 수 없는 계산기에 불과하므로 XML과 같은 구조화된 마크업 언어들은 인간의 읽고 분석하여 이해하는 능력과 컴퓨터의 단순한 계산적인 판독 능력 사이에 타협점을 만들어 줄 수 있다. W3C가 만든 XML 1.0 Specification과 몇몇 다른 관련 명세들과 모든 자유 개방형 표준에서 정의되었다.
 
기계는 인간의 언어를 읽거나 이해할 수 없는 계산기에 불과하므로 XML과 같은 구조화된 마크업 언어들은 인간의 읽고 분석하여 이해하는 능력과 컴퓨터의 단순한 계산적인 판독 능력 사이에 타협점을 만들어 줄 수 있다. W3C가 만든 XML 1.0 Specification과 몇몇 다른 관련 명세들과 모든 자유 개방형 표준에서 정의되었다.
35번째 줄: 34번째 줄:
 
W3C는 XML 설계 목표에서 단순성과 일반성, 그리고 인터넷을 통한 사용 가능성을 강조했다. XML은 텍스트 데이터 형식으로 유니코드를 사용해 전 세계 언어를 지원한다. XML을 설계할 때는 주로 문서를 표현하는데 집중했지만, 지금은 임의의 자료구조를 나타내는 데 널리 쓰인다. 대표적인 예가 웹 서비스이다.
 
W3C는 XML 설계 목표에서 단순성과 일반성, 그리고 인터넷을 통한 사용 가능성을 강조했다. XML은 텍스트 데이터 형식으로 유니코드를 사용해 전 세계 언어를 지원한다. XML을 설계할 때는 주로 문서를 표현하는데 집중했지만, 지금은 임의의 자료구조를 나타내는 데 널리 쓰인다. 대표적인 예가 웹 서비스이다.
  
많은 API가 개발되어 XML 데이터를 처리하고자 하는 소프트웨어 개발자들이 활용하고 있다. 또한, 여러 가지 스키마 시스템이 있어서 XML 기반 언어의 정의를 더욱 쉽게 할 수 있도록 도와준다.<ref name="XML개념"></ref>
+
많은 API가 개발되어 XML 데이터를 처리하고자 하는 소프트웨어 개발자들이 활용하고 있다. 또한, 여러 가지 스키마 시스템이 있어서 XML 기반 언어의 정의를 보다 쉽게 할 수 있도록 도와준다.<ref name="XML개념"></ref>
  
 
== 활용 ==
 
== 활용 ==
XML은 어디까지나 구조를 가지면서 메타데이터를 기술할 수 있는 다목적 문서 형식 표준이다. 이를 원하는 용도에 맞게 DTD, XML Schema를 작성하고 표준으로 제정하면 XML에 기반한 특수 목적용 마크업 언어가 된다. (무리가 있는 비유지만) XML과 XML을 사용하는 다른 마크업 언어는 마치 한국어와 한국어로 쓰인 시, 소설, 수필, 학술논문, 영화 대본, 신문 기사 등과 유사한 관계라고 할 수 있다.
+
XML은 어디까지나 구조를 가지면서 메타데이터를 기술할 수 있는 다목적 문서 형식 표준이다. 이를 원하는 용도에 맞게 DTD, XML Schema를 작성하고 표준으로 제정하면 XML에 기반한 특수 목적용 마크업 언어가 된다. (무리가 있는 비유지만) XML과 XML을 사용하는 다른 마크업 언어는 마치 한국어와 한국어로 쓰인 시, 소설, 수필, 학술논문, 영화대본, 신문기사 등과 유사한 관계라고 할 수 있다.
  
누구나 알 수 있는 이러한 것의 대표적인 예로 초기의 RSS를 들 수 있다. 처음엔 이름이 RDF Site Summary였으나, 나중에 Rich Site Summary로 변경되면서 XML 형식도 약간 변경이 되었는데, 이는 초기 버젼이 Resource Description Framework(RDF)라는 XML 기반의 의미 정보를 엄격하게 기술하는 마크업 언어로 되어있었기 때문이다.
+
누구나 알 수 있는 이러한 것의 대표적인 예로 초기의 RSS를 들 수 있다. 처음엔 이름이 RDF Site Summary 였으나, 나중에 Rich Site Summary 로 변경되면서 XML 형식도 약간 변경이 되었는데, 이는 초기버젼이 Resource Description Framework(RDF)라는 XML 기반의 의미 정보를 엄격하게 기술하는 마크업 언어로 되어있었기 때문이다.
  
그 밖에 Java로 웹 어플리케이션을 작성해 본 사람이면 web.xml 설정 파일이 친숙할 텐데, 이것도 Oracle(과거 Sun Microsystems)에서 XML Schema로 형식을 규정한 JSP/Servlet Web Application 표준 설정 파일이다.  
+
그 밖에 Java로 웹 어플리케이션을 작성해 본 사람이면 web.xml 설정파일이 친숙할텐데, 이것도 Oracle(과거 Sun Microsystems)에서 XML Schema로 형식을 규정한 JSP/Servlet Web Application 표준 설정 파일이다.  
  
 
C#에서는 프로그램 설정에 사용하는 App.config, WPF에서 사용하는 Xaml 파일이 있다.<ref> 〈[https://namu.wiki/w/XML XML]〉,《나무위키》 </ref>
 
C#에서는 프로그램 설정에 사용하는 App.config, WPF에서 사용하는 Xaml 파일이 있다.<ref> 〈[https://namu.wiki/w/XML XML]〉,《나무위키》 </ref>
58번째 줄: 57번째 줄:
 
이 절의 내용은 XML 명세에 기반한다. XML에 나타나는 모든 요소의 목록이 아니다. 가장 많이 쓰이는 핵심 요소만을 소개한다.
 
이 절의 내용은 XML 명세에 기반한다. XML에 나타나는 모든 요소의 목록이 아니다. 가장 많이 쓰이는 핵심 요소만을 소개한다.
 
==== 유니코드 문자 ====
 
==== 유니코드 문자 ====
정의상, XML 문서는 문자로 이루어진 문자열이다. 거의 모든 올바른 유니코드 문자는 XML 문서에 나타날 수 있다.<ref name="XML개념"></ref>
+
정의 상, XML 문서는 문자로 이루어진 문자열이다. 거의 모든 올바른 유니코드 문자는 XML 문서에 나타날 수있다.<ref name="XML개념"></ref>
 
 
 
==== 프로세서(processor)와 애플리케이션(application) ====
 
==== 프로세서(processor)와 애플리케이션(application) ====
프로세서는 마크업을 분석하고 구조화된 정보를 애플리케이션에 넘긴다. 이 명세는 XML 프로세서가 무엇을 해야 하고 하지 말아야 하는지 제시하지만, 애플리케이션에 대해서는 다루지 않는다. 이 프로세서(명세가 부르기를)는 흔히 XML parser라 불린다.<ref name="XML개념"></ref>
+
프로세서는 마크업을 분석하고 구조화된 정보를 애플리케이션에 넘긴다. 이 명세는 XML 프로세서가 무엇을 해야하고 하지 말아야 하는지 제시하지만, 애플리케이션에 대해서는 다루지 않는다. 이 프로세서(명세가 부르기를)는 흔히 XML parser라 불린다.<ref name="XML개념"></ref>
  
 
==== 마크업(markup)과 내용(content) ====
 
==== 마크업(markup)과 내용(content) ====
XML 문서를 구성하는 문자들은 마크업과 내용으로 나뉘는데, 그 구분은 간단한 문법 규칙으로 이루어진다. 일반적으로 마크업을 구성하는 문자열은 문자 <로 시작하여 문자 >로 끝나거나, 문자 &로 시작하여 문자 ;로 끝나며, 마크업이 아닌 문자열은 내용이다. 그러나, CDATA 절에서, 구분자 CDATA와 는 마크업으로 분류되고,그들 사이의 텍스트는 내용으로 구분된다. 추가로, 가장 바깥 엘리먼트의 앞과 뒤의 공백(whitespace)은 마크업으로 분류된다.<ref name="XML개념"></ref>
+
XML 문서를 구성하는 문자들은 마크업과 내용으로 나뉘는데, 그 구분은 간단한 문법 규칙으로 이루어진다. 일반적으로 마크업을 구성하는 문자열은 문자 <로 시작하여 문자 >로 끝나거나, 문자 &로 시작하여 문자 ;로 끝나며, 마크업이 아닌 문자열은 내용이다. 그러나, CDATA 절에서, 구분자 <![CDATA[와 ]]>는 마크업으로 분류되고,그들 사이의 텍스트는 내용으로 구분된다. 추가로, 가장 바깥 엘리먼트의 앞과 뒤의 공백(whitespace)은 마크업으로 분류된다.<ref name="XML개념"></ref>
 
 
 
==== 태그(tag) ====
 
==== 태그(tag) ====
 
<로 시작하여 >로 끝나는 마크업 구조. 태그는 세 가지 종류가 있다.
 
<로 시작하여 >로 끝나는 마크업 구조. 태그는 세 가지 종류가 있다.
71번째 줄: 68번째 줄:
 
*끝 태그(end-tag); 예: </section>
 
*끝 태그(end-tag); 예: </section>
 
*빈 엘리먼트(empty-element) 태그; 예: <line-break /><ref name="XML개념"></ref>
 
*빈 엘리먼트(empty-element) 태그; 예: <line-break /><ref name="XML개념"></ref>
 
 
==== 엘리먼트(element) ====
 
==== 엘리먼트(element) ====
문서의 논리 요소로서, 시작 태그로 시작하여 짝이 되는 끝 태그로 끝나거나, 빈 엘리먼트 태그만으로 이루어진다. 시작 태그와 끝 태그 사이의 문자들은(있다면) 엘리먼트의 내용이고, 마크업을 포함할 수 있다. 이 마크업은 자식 엘리먼트(child elements)라 부르는 다른 엘리먼트들을 포함할 수도 있다.
+
문서의 논리 요소로서, 시작 태그로 시작하여 짝이 되는 끝 태그로 끝나거나, 빈 엘리먼트 태그만으로 이루어진다. 시작 태그와 끝 태그 사이의 문자들은(있다면) 엘리먼트의 내용이고, 마크업을 포함할 수 있다. 이 마크업은자식 엘리먼트(child elements)라 부르는 다른 엘리먼트들을 포함할 수도 있다.
 
엘리먼트의 예는
 
엘리먼트의 예는
Greeting>Hello, world.</Greeting> (see hello world).
+
*<Greeting>Hello, world.</Greeting> (see hello world).
 
다른 예는
 
다른 예는
line-break />.<ref name="XML개념"></ref>
+
*<line-break />.<ref name="XML개념"></ref>
  
 
==== 애트리뷰트(Attribute) ====
 
==== 애트리뷰트(Attribute) ====
 
이름/값 짝으로 이루어진 마크업 구조로 시작할 수 있다.
 
이름/값 짝으로 이루어진 마크업 구조로 시작할 수 있다.
<img src="madonna.jpg" alt='Foligno Madonna, by Raphael'/>
+
*<img src="madonna.jpg" alt='Foligno Madonna, by Raphael'/>
 
다른 예로
 
다른 예로
<step number="3">Connect A to B.</step>
+
*<step number="3">Connect A to B.</step>
 
에서 애트리뷰트 이름은 "number"이고 값은 "3"이다.<ref name="XML개념"></ref>
 
에서 애트리뷰트 이름은 "number"이고 값은 "3"이다.<ref name="XML개념"></ref>
  
 
==== XML 선언 ====
 
==== XML 선언 ====
 
XML 문서는 다음과 같이 자신에 대한 정보 일부를 선언하는 것으로 시작할 수 있다.
 
XML 문서는 다음과 같이 자신에 대한 정보 일부를 선언하는 것으로 시작할 수 있다.
<?xml version="1.0" encoding="UTF-8" ?><ref name="XML개념"></ref>
+
*<?xml version="1.0" encoding="UTF-8" ?><ref name="XML개념"></ref>
  
 
== 문제점 ==
 
== 문제점 ==
 
JSON과 비교하여 보았을 때
 
JSON과 비교하여 보았을 때
*복잡성 : 의도적으로 간결함과 집중을 추구한 툴인 JSON에 비해 복잡하고 구조화된 개념 대부분을 단독으로 표현하는 XML은 유용하지 않다는 인식이 있다.
+
*복잡성 : 의도적으로 간결함과 집중을 추구한 툴인 JSON에 비해 복잡하고 구조화된 개념 대부분을 단독으로 표현하는 XML은 유용 하지 않다는 인식이 있다.
*보안 : JSON을 이용해 위험에 노출되는 툴을 개발하기는 어렵지만, XML을 사용할 때는 반드시 개발자가 능동적으로 확인하고 피해야 한다. 그리고 XML은 적절하게 파싱(Parsing)을 거쳐도 BL(Billion Laughs) 공격 또는 EE(External Entity) 공격 같은 보안 취약성을 일부 갖고 있다.
+
*보안 : JSON을 이용해 위험에 노출되는 툴을 개발하기는 어렵지만 XML을 사용할 때는 반드시 개발자가 능동적으로 확인하고 피해야 한다. 그리고 XML은 적절하게 파싱(Parsing)을 거쳐도 BL(Billion Laughs) 공격 또는 EE(External Entity) 공격 같은 보안 취약성을 일부 갖고 있다.
 
*자바스크립트 : JSON은 자바스크립트로 작성됐다. 본래 자바스크립트와의 손쉬운 상호운용성을 위해 자바스크립트에서 사용하는 문법을 그 자체의 데이터 형식으로 뽑아내도록 정의됐다.
 
*자바스크립트 : JSON은 자바스크립트로 작성됐다. 본래 자바스크립트와의 손쉬운 상호운용성을 위해 자바스크립트에서 사용하는 문법을 그 자체의 데이터 형식으로 뽑아내도록 정의됐다.
 
*툴 지원 : JSON의 인기가 높아지면서 더 많은 개발자 툴이 이를 표준으로 받아들이고 있다.
 
*툴 지원 : JSON의 인기가 높아지면서 더 많은 개발자 툴이 이를 표준으로 받아들이고 있다.
110번째 줄: 106번째 줄:
 
* [[JSON]]
 
* [[JSON]]
  
{{시스템 연계|검토 필요}}
+
{{프로그래밍 언어|검토 필요}}
 
[[분류:퍼블리싱]]
 
[[분류:퍼블리싱]]

해시넷에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다 (자세한 사항은 해시넷:저작권 문서를 보세요). 저작권이 있는 내용을 허가 없이 저장하지 마세요!

취소 | 편집 도움말 (새 창에서 열림)