상세 컨텐츠

본문 제목

XML이란? XML Tag? XML Element? Xml Attribute?

서랍/기타

by 박복만 2021. 12. 25. 17:28

본문

내가 다니는 회사는 EAI EDI업무를 하는 회사이다. 이러한 회사들의 주업무는 어느 한 곳의 데이터를 다른 곳으로 동기화하는게 주업무인데 옮겨다니는 데이터들의 형식은 다양하다.

데이터들이 옮겨가는 과정에서 형태나 내용들이 변하길 원하는 회사도 있다. 그러면 솔루션을 개발할때 어떤 데이터 형태를 다른 형태로 변형하는 일을 하려면 그 데이터에 대해서 잘알아야 할 필요가 있겠다. 그동안 대략 알고있던 내용들을 오늘은 한번 제대로 정리를 해봐야겠다.

http://www.tcpschool.com/xml/intro

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

여기의 내용을 정리한것입니다.

 

XML 

xml은 데이터를 저장하고 전달할 목적으로 만들어진, 데이터의 구조를 기술하기 위한 언어다.

<?xml version="1.0" encoding="UTF-8"?>

<programming_languages>

    <language>

        <name>HTML</name>

        <category>web</category>

        <developer>W3C</developer>

        <version status="working draft">5.1</version>

        <priority rating="1">high</priority>

    </language>

    <language>

        <name>CSS</name>

        <category>web</category>

        <developer>W3C</developer>

        <version status="stable">3.0</version>

        <priority rating="3">middle</priority>

    </language>

    <language>

        <name korean="자바">Java</name>

        <category>application</category>

        <developer>Oracle</developer>

        <version status="stable">8.91</version>

        <priority rating="2">high</priority>

    </language>

    <language>

        <name korean="파이썬">Python</name>

        <category>application</category>

        <developer>Python</developer>

        <version status="stable">3.52</version>

        <priority rating="4">middle</priority>

    </language>

</programming_languages>

이렇게 생겼다.

 

XML 이란?

XML 은 Extensible Markup Language의 약자이며 1998년에 W3C 표준 권고안에 포함되었다.

XML은 HTML과 매우 비슷한 문자기반의 마크업 언어이다. 이 언어는 사람과 기계가 동시에 읽기 편한 구조로 되어있다.

 

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

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

XML 구조


XML 트리

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

이러한 XML 트리는 하나뿐인 루트 요소부터 시작하여, 각각의 자식요소에 차례대로 연결된다.

그래서 XML Element라고 하는 것은 저 요소 하나하나를 의미한다.

부모 요소는 여러개의 자식 요소를 가질 수 있고 하나의 자식 요소는 단하나의 부모 요소만을 가질 수 있다.

XML Tree의 모든  요소는 자신만의 텍스트나 속성을 가질 수 있다.

 

XML 문서 구조

XML Declare, XML Prolog -> 얘는 XML Element가 아니다!

XML Declare는 XML에 대한 정보를 나타내는 요소이다.

<?xml version="1.0" encoding="UTF-8" standalone="yes|no"??>

XML 문서는 맨 첫줄에 xml 태그를 사용해서 XML문서임을 명시할 수 있다.

  • version : XML 문서에 사용된 XML 버전을 명시한다.
  • encoding : XML 문서의 문자셋을 명시, 기본값 UTF-8
  • standalone : XML 문서가 외부 DTD와 같은 외부소스의 데이터에 의존하고 있는 문서인지 아닌지 XML 파서에게 알려주는 역할

XML Element

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

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

<요소이름> 내용 </요소이름>

아무런 내용도 가지지 않는 빈요소
<요소이름 />

XML Element 이름 작성 규칙

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

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

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

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

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

 XML Attribute

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

<요소이름 속성1="속성값" 속성2="속성값"... />

XML Namespace

XML 네임스페이스는 XML 요소간의 이름에 대한 충돌을 방지해주는 방법을 제공한다.

XML 네임스페이스는 요소의 이름과 속성의 이름을 하나의 그룹으로 묶어주어 이름에 대한 충돌을 해결합니다.

 

XML 에서는 사용자가 XML요소의 이름을 직접 정의하는데 서로다른 XML문서를 통합하려고 할때 같은 이름을 가진 요소로 인해 충돌이 발생할 수 있다.

 

예제1 

<body>

    <h1>html에서의 제목</h1>

    <p>html에서의 단락</p>

</body>

예제2

<body>

    <arm>70</arm>

    <leg>110</leg>

</body>

위의 두 예제에서 <body>요소는 서로 완전히 다른 의미로 사용되었다.

예제1에서는 HTML 문서의 body 태그로 사용되었고 예제2에서는 실제 몸을 의미하는 용도로 사용되었다. 

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

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

<요소이름 xmlns:prefix="URI">

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

prefix 속성값에는 이름 앞에 붙게 되는 접두사를 명시합니다.

<root>
    <a:body xmlns:a="https://www.w3.org/TR/html5/">
        <a:h1>html에서의 제목</a:h1>
        <a:p>html에서의 단락</a:p>
    </a:body>
    <b:body xmlns:b="http://codingsam.com/xml/physical/">
        <b:arm>70</b:arm>
        <b:leg>110</b:leg>
    </b:body>
</root>

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

두번째 <body> 요소의 xmlns속성은 b:라는 접두사를 선언합니다.

 

이렇게 XML 요소에 네임스페이스가 선언되면, 해당 요소의 모든 자식(Child) 요소에도 같은 네임스페이스가 선언된다.

XML 문법

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

XML 에서는 종료태그가 필수로 있어야한다. 생략되면 오류가 발생한다.

빈태그에도 반드시 슬래쉬(/)를 추가해야 오류가 발생하지 않는다.

<h1>XML</h1>
<h1 />

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

<lecture>이 요소는 lecture 요소입니다.</lecture>

<Lecture>이 요소는 Lecture 요소입니다.</Lecture>

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

<student name=홍길동>   // 오류가 발생함.

<student name="이순신"> // 정상적으로 동작함.

4. XML에서는 띄어쓰기를 인식합니다.

코드 : <p>띄   어 쓰    기</p>

HTML : 띄어쓰기

XML  : 띄   어 쓰    기

XML 엔티티

xml에서는 예약되어 있는 다섯 개의 특별한 기호가 있다.

이렇게 예약되어 있는 기호를 XML 문서에서 사용하면 XML파서는 그것을 전혀 다른 의미로 해석한다.

예를 들어서 어떤 Element의 Text에서 < 라는 문자를 사용하려고 하면 XML에서 예약되어있는 문자이기 때문에 XML은 그거를 다른의미로 받아들인다. 그렇기 때문에 <라는 문자대신 &lt;라는 엔티티를 사용하면 <로써 인식할 수 있게끔 하는 것이다.

 

XML 주석

<!-- 주석 내용 -->

XML 문서의 종류

W3C의 XML 표준 권고안은 두가지의 XML 문서를 정의하고 있습니다.

 

1. 문법에 맞는(well-formed) XML 문서

2. 유효한(Valid) XML 문서

 

Well-formed XML 문서

문법에 맞는(well-formed) XML 문서란 XML 문서로서 가져야 하는 최소한의 필수 요건을 충족한 XML 문서를 의미합니다.

따라서 이 문서는 XML의 모든 구문을 허용하지만, DTD(document type definition)나 스키마를 사용하지는 않습니다.

 

문법에 맞는(well-formed) XML 문서가 되기 위한 필수 요건은 다음과 같습니다.

 

1. 루트(root) 요소를 하나만 가져야 합니다.

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

3. 시작 태그와 종료 태그에 사용된 태그 이름이 대소문자까지 완벽하게 일치해야 합니다.

4. 모든 XML 요소의 여닫는 순서가 반드시 정확하게 지켜져야 합니다.

5. 모든 속성의 속성값이 따옴표로 둘러싸여 있어야 합니다.

 

위에서 언급한 필수 요건을 만족하지 못하는 XML 문서는 오류를 발생시킵니다.

HTML 문서와는 달리 XML 문서에서는 오류가 발생하면, 해당 응용 프로그램의 모든 동작을 중지시킵니다.

따라서 모든 XML 문서는 반드시 문법에 맞는(well-formed) XML 문서여야만 합니다.

 

Valid XML 문서

유효한(valid) XML 문서는 문법에 맞는(well-formed) XML 문서를 좀 더 엄격하게 검증한 문서입니다.

따라서 유효한(valid) XML 문서는 모두 문법에 맞는(well-formed) XML 문서입니다.

거기에 추가하여 DTD(document type definition)를 가지고 있으며, 그에 따라 제대로 검증된 문서를 의미합니다.

 

XML에서 사용하는 DTD에는 다음과 같이 두 가지 종류가 있습니다.

 

1. DTD : 일반적인 문서 타입 정의(document type definition)

2. XML 스키마(XSD)

 

 

관련글 더보기

댓글 영역