KyungHwan's etc.

XML( EXtensible Markup Language) Reference Document 본문

XML

XML( EXtensible Markup Language) Reference Document

KyungHwan_0 2018. 5. 31. 13:43

XML( EXtensible Markup Language)

- XML은 데이터를 저장하고 전달할 목적으로 만들어 졌으며, 저장되는 데이터의 구조를 기술하기 위한 언어이다.

XML목적

서로 호환되지 않는 데이터 타입을 사용하는 시스템 간의 데이터 교환에는 많은 시간과 노력이 발생한다. 또한 이러한 데이터를 변환하는 과정에서 데이터 손실이 발생하는 경두 종종 있다.

하지만 XML은 데이터를 텍스트 형식으로 저장하므로, 소프트웨어나 하드웨어에 독립적으로 데이터를 저장하고 전달할수 있어, XML를 사용하면 새로운 운영체제나 프로그램, 브라우저 등에 상관없이 데이터를 안전하고 손쉽게 전달할수 있다.

- XML은 HTML처럼 데이터를 보여주는 목적이 아닌, 데이터를 저장하고 전달할 목적으로만 만들어졌다.

또한, XML 태그는 HTML 태그처럼 미리 정의되어 있지 않고, 사용자가 직접 정의할 수 있다.

XML의 중요한 특징

1.XML은 다른 목적의 마크업 언어를 만드는데 사용되는 다목적 마크업 언어이다.

2.XML은 다른 시스템끼리 다양한 종류의 데이터를 손쉽게 교환할 수 있다.

3.XML은 새로운 태그를 만들어 추가해도 계속해서 동작하므로, 확장성이 좋다.

4.XML은 데이터를 보여주지 않고, 데이터를 전달하고 저장하는것만을 목적으로 한다.

5.XML은 텍스트 데이텨 형식의 언어로 모든 xml 문서는 유니코드로 이러우진다.

XML의 구조

XML 문서는 HTML 문서와 마찬가지로 트리(tree) 형태의 계층 구조를 가진다

부모(parent) 요소는 여러 개의 자식(child) 요소를 가질 수 있다

자식(child) 요소는 단 하나의 부모(parent) 요소만을 가진다.

형제(sibling) 요소는 같은 트리 레벨(tree level)에 존재하는 요소를 가리킨다

형제 요소란 같은 부모(parent) 요소를 가지는 자식 요소 간의 관계를 나타낸다.

조상(ancestor) 요소란 부모 요소를 포함해 계층적으로 현재 요소보다 상위에 존재하는 모든 요소를 가리킨다.

자손(descendant) 요소란 자식 요소를 포함해 계층적으로 현재 요소보다 하위에 존재하는 모든 요소를 가리킨다.

XML문법

1.XML 선언

XML 문서는 맨 첫 줄에 <xml>태그를 사용하여 XML 문서임을 명시해야 한다.

이것을 XML 프롤로그(prolog)라고 하며, 이때 사용되는 <xml>태그의 이름은 소문자 xml로만 사용해야 한다.

version 속성에는 XML 문서에 사용된 XML의 버전을 명시한다.

encoding 속성에는 XML 문서의 문자셋(character set)을 명시하며, 기본값은 UTF-8로 설정된다.

standalone 속성은 XML 문서가 외부 DTD(Document Type Definition)와 같은 외부 소스의 데이터에 의존하고 있는 문서인지 아닌지를 XML 파서(parser)에 알려주는 역을 한다.

2.XML 문법 규칙

1. 모든 XML 요소는 종료 태그를 가져야 합니다.

2. XML 태그는 대소문자를 구분합니다.

3. XML 에서는 시작 태그와 종료 태그가 모두 대소문자까지 같아야 합니다.

4. XML 태그의 여닫는 순서는 반드시 지켜져야 한다

5. XML에서 속성값은 반드시 따옴표로 감싸야 한다.

6. XML 에서는 띄어쓰기를 인식한다.

7. XML 의 주석은 HTML의 주석과 같은 모양이다.

■XML요소

-XML 요소란 XML 문서를 구성하는 하나의 구성 요소로 정의할 수 있다.

-각각의 XML 요소는 하나 이상의 다른 요소를 포함할 수 있다.

또한, 텍스트, 속성, 미디어 객체나 경우에 따라 이들 전부를 포함할 수도 있다.

위의 예제에서 <java>, <cpp>, <php>, <asp>요소는 각각 자신만의 텍스트를 가진다.

<school>요소와 <lecture>요소는 다른 요소들을 포함한다..

또한, <lecture>요소는 category라는 속성을 가진다..

1.XML요소 문법

XML 요소란 시작 태그부터 종료 태그까지의 모든 것을 가리킨다.

또한, 어떠한 내용도 가지지 않는 빈 요소(empty element)는 다음과 같이 정의할 수 있다.


2. XML요소 이름 작성규칙

\1. XML 요소의 이름은 영문자, 숫자, 하이픈(-), 언더스코어(_, underscore)와 점(.)만을 사용하여 작성해야 한다.

\2. XML 요소의 이름은 영문자의 대소문자를 구분한다.

\3. 반드시 영문자나 언더스코어(_)로 시작해야 하며, 공백을 포함할 수 없다

\4. 예약어인 xml, XML, Xml 등은 요소의 이름으로 사용할 수 없다

\5. 시작 태그의 이름과 종료 태그의 이름은 반드시 대소문자까지 동일해야 한다.

3. XML 속성

XML 속성은 XML 요소에 대한 추가적인 정보를 제공해주며, 해당 요소의 특징을 정의한다.

요소와 속성의 차이점

위의 두 예제에서 이름(name)이라는 데이터를 하나는 XML 요소로, 하나는 XML 속성으로 표현하고 있다

결과적으로 이 두 예제는 완전히 같은 정보를 제공한다.

정보의 전달이라는 측면에서 보면 XML 요소로 표현하는 방법과 XML 속성으로 표현하는 방법에 큰 차이는 없다.

하지만 속성은 여러 개의 값을 가질 수 없으며, 요소처럼 손쉽게 확장할 수 없다는 단점을 가진다

또한, 속성은 XML 트리에 포함되지 않기 때문에 다양한 용도로 활용할 수가 없다.

3. XML네임스페이스 선언

XML에서는 접두사(prefix)를 이용하여 위와 같은 이름의 충돌을 방지하고 있다.

서로 같은 이름에 요소마다 서로 다른 접두사를 붙이면 이름의 충돌을 방지할 수 있게 된다.

=>XML에서 네임스페이스를 선언하는 문법.

XML 네임스페이스의 선언은 xmlns나 xmlns:로 시작한다.

prefix 속성값에는 이름 앞에 붙게 되는 네임스페이스 접두사(namespace prefix)를 명시한다.

접두사로 사용되는 URI는 네임스페이스 식별자를 의미한다.

위의 예제에서 첫 번째 <body>요소의 xmlns 속성은 a:라는 접두사를 선언,. 두 번째 <body>요소의 xmlns 속성은 b:라는 접두사를 선언한다.

이렇게 XML 요소에 네임스페이스가 선언되면, 같은 <body>요소를 사용하지만, 다른 <body>요소로 인식하여 선언 할수 있다.

해당 요소의 모든 자식(child) 요소에도 같은 네임스페이스가 선언된다.

이러한 네임스페이스 선언은 XML 루트(root) 요소에서도 선언할 수 있다

■XML 파서(parser)

XML파서(parser)란 응용 프로그램이 XML문서를 읽을 수 있도록 인터페이스를 제공해주는 라이브러리나 패키지를 의미한다. XML 파서는 XML문서가 적합한 형식을 갖추고 있는지와 문법상의 오류는 없는지를 검사한다. 현대 대부분의 주요 웹 브라우저는 XML파서를 내장하고 있다.

■XSL (eXtensible Stylesheet Language) 이란?

XML 문서는 다양한 장치에서 데이터를 저장하고 전달할 목적으로 만들어져있다.

하지만 각각의 장치가 전달받은 XML문서를 자신이 사용하는 데이터구조를 사용하고 있다.

따라서 각각의 장치가 전달받은 XML 문서를 자신이 사용하는 데이터 구조로 변환할 때 사용할 규칙이 필요하다..

이러한 변환 규칙에 대한 명세를 작성할 수 있는 언어가 바로 XSL(eXtensible Stylesheet Language)입니다.

CSS가 HTML 문서를 위한 스타일 시트 언어라면, XSL은 XML 문서를 위한 스타일 시트 언어이다.

■XSL의 구성

XSL은 XML 문서의 변환과 표현을 정의하는 세 개의 언어로 구성된다.

  1. XSLT : XSL Transformations를 의미하며, XML 문서를 다른 구조의 문서로 변환시키기 위한 언어

  2. XPath : XML 문서의 특정 요소나 속성에 접근하기 위한 경로를 지정하는 언어

  3. XSL-FO : XML 데이터를 출력하기 위한 목적으로 설계된 언어

-XSL-FO는 2012년에 발표된 2.0 버전을 마지막으로, 2013년부터는 더 이상의 업데이트를 진행하고 있지 않는다. 따라서 현재는 CSS3로 대체하여 사용하고 있다.

■XSLT란?

XSLT는 XML 문서를 XHTML 문서나 또 다른 XML 타입의 문서로 변환하기 위해 사용하는 언어이다.

XSLT는 W3C 표준 권고안으로, XSL에서 가장 중요한 언어이다.

현재 대부분의 주요 웹 브라우저는 XSLT와 XPath를 모두 지원하고 있으며, 가장 최신 버전의 XSLT는 2015년에 발표된 XSLT 3.0 후보 권고안이다.

■XSLT 변환 과정

1. 변환(Transformation) : XML 문서를 다른 구조의 XML 문서로 변환하는 과정.

2. 서식 설정(Formatting) : XML 문서를 특정 데이터 구조의 비 XML 문서로 변환하는 과정.

■탬플릿 작성 및 적용

루트 요소

XSLT 문서의 루트(root) 요소는 xsl:stylesheet요소나 xsl:transform요소로 표현할 수 있다.

또한, 루트 요소의 시작 태그에는 W3C XSLT 네임스페이스를 반드시 같이 명시해줘야 한다.

템플릿 작성

XSLT 프로세서가 XSLT 문서에서 가장 먼저 찾는 요소는 바로 템플릿 요소이다.

이러한 템플릿은 루트 노드에 포함된 콘텐츠를 어떻게 처리하고 변환할 것인지를 나타 낼 수 있다

XSLT 문서에서 템플릿(template)은 xsl:template요소로 표현할 수 있습니다.

match 속성에는 속성값으로 템플릿과 연결할 XML 요소의 범위를 나타내는 XPath 표현식을 명시한다.

=>탬플릿 작성 예제.

■노드

W3C XML DOM 표준에 따르면 XML 문서 내의 모든 것은 노드(node)라고 불리는 계층적 단위에 정보를 담고 있다.

XML DOM은 이러한 노드들을 정의하고, 그들 사이의 관계를 설명해 주는 역할을 한다.

노드의 종류

W3C XML DOM 표준에 따르면 XML 문서 내에 존재하는 모든 것은 노드이다.

노드 트리(node tree)

XML 문서의 정보는 노드 트리라고 불리는 계층적 구조에 저장된다.

=> 위에 XML파일을 노드 트리로 표현한 그림.

■노드의 처리

노드의 반복 처리

xsl:for-each**요소는 선택된 각 노드에 반복해서 템플릿을 적용해 준다**

이 요소는 select 속성으로 전달받은 XPath 표현식에 따라 선택된 노드의 개수만큼 반복해서 템플릿을 적용할 수 있다

노드의 정렬

xsl:sort요소는 노드들의 정렬 기준을 명시할 때 사용한다.

=> 정렬처리 예제

노드의 조건부 처리

xsl:if**요소는 노드의 값이 특정 조건에 해당할 때만 동작한다.**



<xsl:if test="version 5">

=>VERSION 5 이상인 NAME속성과 VSRSION 속성을 출력한다

노드의 다중 조건부 처리

<xsl:choose요소는 xsl:whenxsl:otherwise요소와 함께 다중 조건문을 작성할 때 사용한다.

<priority>요소의 rating 속성값이 2 이상인 경우와 그렇지 않은 경우에 다른 텍스트를 출력해 주는 예제 이다.

■DOM의 개념

DOM(Document Object Model)은 XML이나 HTML 문서에 접근하기 위한 API로 W3C 표준 권고안이다.

DOM은 문서 내의 모든 요소를 정의하고, 해당 요소에 접근하는 방법까지 정의한다.

=>XML로 정의된 DOM예제.

HTML DOM

HTML DOM은 HTML 문서에 접근하여 조작할 수 있는 표준화된 방법을 정의한다.

모든 HTML 요소는 HTML DOM을 통해 접근할 수 있다.

XML DOM

XML DOM은 XML 문서에 접근하여, 해당 문서를 조작할 수 있는 표준화된 방법을

정의한다. 모든 XML 요소는 XML DOM을 통해 접근할 수 있다

XML DOM은 XML 문서 내의 모든 요소의 객체, 속성 그리고 메소드를 정의한다. 이러한 XML DOM은 플랫폼이나 프로그래밍 언어에 상관없이 언제나 사용할 수 있다.

■XMLHttpRequest 객체

현재 대부분의 주요 웹 브라우저는 서버에 데이터를 요청하기 위한 XMLHttpRequest 객체를 내장하고 있다.

XMLHttpRequest 객체는 서버로부터 XML 데이터를 전송받아 처리하는 데 사용된다.

XMLHttpRequest 객체의 생성

자바스크립트를 이용하여 XMLHttpRequest 객체를 생성하는 방법은 다음과 같다.

XMLHttpRequest 객체의 전송

자바스크립트를 이용하여 XMLHttpRequest 객체를 전송하는 방법이다.

■XPath

XPath란 XML Path Language를 의미한다.

XPath는 XML 문서의 특정 요소나 속성에 접근하기 위한 경로를 지정하는 언어이다.

XPath의 특징

XPath는 XML 문서의 일부분을 선택하고 처리하기 위해 만들어진 언어입니다.

이러한 XPath는 다음과 같은 특징을 가진다.

1. XPath는 XML 문서를 탐색하기 위해 경로 표현식(path expression)을 사용한다.

2. XPath는 수학, 문자열 처리 등을 하기 위한 라이브러리를 내장하고 있다.

3. XPath는 W3C의 표준 권고안인 XSLT에서 가장 중요한 부분 중 하나이다.

위치 경로(location path)

위치 경로(location path)란 XML 문서의 각 노드의 위치를 지정하기 위한 XPath 표현식 이다.

위치 경로는 절대 경로와 상대 경로로 구분할 수 있다.

- 절대 경로는 슬래시(/)로 시작하며, 루트 노드부터 순서대로 탐색해 나간다.

- 상대 경로는 슬래시(/)로 시작하지 않으며, 기준으로 지정되는 노드부터 탐색해 나간다.

필터 표현식(filter expressions)

XPath에서는 특정 노드나 특정 값을 포함하는 노드를 선택하기 위해 필터 표현식(filter expressions)을 사용한다.

Reference 

https://www.w3schools.com/

http://tcpschool.com/

'XML' 카테고리의 다른 글

JSTL XML Tag  (0) 2018.05.31
DTD(Document Type Definition)  (0) 2018.05.31
XML DOM  (0) 2018.05.31
Comments