โ ์ฝ๋์ ๋ฏธํ์ ์ค์ค๋ก ํฐ๋ํ ์๋ ์์ง๋ง ๋ค๋ฅธ ์ฌ๋๋ค๋ ์ฝ๊ฒ ๋ฐฐ์ธ ์ ์์ผ๋ฆฌ๋ผ ์ฐฉ๊ฐํ์ง ๋ง๋ผ. โ
- ๊ฐ๋ฐ์ ์๋ด(Programmerโs Proverbs)

XML (EXtensible Markup Language)
XML์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ ๋ฌํ ๋ชฉ์ ์ผ๋ก ๋ง๋ค์ด์ก์ผ๋ฉฐ, ์ ์ฅ๋๋ ๋ฐ์ดํฐ์ ๊ตฌ์กฐ๋ฅผ ๊ธฐ์ ํ๊ธฐ ์ํ ์ธ์ด์ ๋๋ค.
โ
XML ํน์ง
- XML์ ๋ค๋ฅธ ๋ชฉ์ ์ ๋งํฌ์ ์ธ์ด๋ฅผ ๋ง๋๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ค๋ชฉ์ ๋งํฌ์ ์ธ์ด์ ๋๋ค.
- XML์ ๋ค๋ฅธ ์์คํ ๋ผ๋ฆฌ ๋ค์ํ ์ข ๋ฅ์ ๋ฐ์ดํฐ๋ฅผ ์์ฝ๊ฒ ๊ตํํ ์ ์๋๋ก ํด์ค๋๋ค.
- XML์ ์๋ก์ด ํ๊ทธ๋ฅผ ๋ง๋ค์ด ์ถ๊ฐํด๋ ๊ณ์ํด์ ๋์ํ๋ฏ๋ก, ํ์ฅ์ฑ์ด ์ข์ต๋๋ค.
- XML์ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ฃผ์ง ์๊ณ , ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ณ ์ ์ฅํ๋ ๊ฒ๋ง์ ๋ชฉ์ ์ผ๋ก ํฉ๋๋ค.
- XML์ ํ ์คํธ ๋ฐ์ดํฐ ํ์์ ์ธ์ด๋ก ๋ชจ๋ XML ๋ฌธ์๋ ์ ๋์ฝ๋ ๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ง๋๋ค.
โ
XML ๋ชฉ์
์๋ก ํธํ๋์ง ์๋ ๋ฐ์ดํฐ ํ์ ์ ์ฌ์ฉํ๋ ์์คํ ๊ฐ์ ๋ฐ์ดํฐ ๊ตํ์๋ ๋ง์ ์๊ฐ๊ณผ ๋ ธ๋ ฅ์ด ๋ฐ์ํฉ๋๋ค.
๋ํ, ์ด๋ ๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋ณํํ๋ ๊ณผ์ ์์ ๋ฐ์ดํฐ์ ์์ค์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ๋ ์ข ์ข ์์ต๋๋ค.
ํ์ง๋ง XML์ ๋ฐ์ดํฐ๋ฅผ ํ ์คํธ ํ์์ผ๋ก ์ ์ฅํ๋ฏ๋ก, ์ํํธ์จ์ด๋ ํ๋์จ์ด์ ๋ ๋ฆฝ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ ๋ฌํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ XML์ ์ฌ์ฉํ๋ฉด ์๋ก์ด ์ด์์ฒด์ ๋ ํ๋ก๊ทธ๋จ, ๋ธ๋ผ์ฐ์ ๋ฑ์ ์๊ด์์ด ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ณ ์์ฝ๊ฒ ์ ๋ฌํ ์ ์์ต๋๋ค.
โ
XML ํธ๋ฆฌ
XML ๋ฌธ์๋ HTML ๋ฌธ์์ ๋ง์ฐฌ๊ฐ์ง๋ก ํธ๋ฆฌ(tree) ํํ์ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋๋ค.
์ด๋ฌํ XML ํธ๋ฆฌ๋ ํ๋๋ฟ์ธ ๋ฃจํธ(root) ์์๋ถํฐ ์์ํ์ฌ, ๊ฐ๊ฐ์ ์์(child) ์์์ ์ฐจ๋ก๋๋ก ์ฐ๊ฒฐ๋ฉ๋๋ค.

โ
XML ๊ตฌ์กฐ
๊ธฐ๋ณธ์ ์ธ XML ๋ฌธ์๋ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑ๋ฉ๋๋ค.
<?xml version="1.0" encoding="UTF-8"?>
โ<shop city="์์ธ" type="๋งํธ">
<food>
<name>๊ทค</name>
<sort>๊ณผ์ผ</sort>
<cost>3000</cost>
</food>
<food>
<name>์์ถ</name>
<sort>์ผ์ฑ</sort>
<cost>2000</cost>
</food>
</shop>
โXML ๋ฌธ์๋ ๋งจ ์ฒซ์ค์ <xml>ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ XML ๋ฌธ์์์ ๋ช ์ํด์ผ ํฉ๋๋ค.
<?xml version="XML๋ฌธ์๋ฒ์ " encoding="๋ฌธ์์
" standalone="yes|no"?>
<?xml version="1.0" encoding="UTF-8"?>
- version : XML ๋ฌธ์์ ์ฌ์ฉ๋ XML์ ๋ฒ์
- encoding : XML ๋ฌธ์์ ๋ฌธ์์ (character set)์ ๋ช ์ํ๋ฉฐ, ๊ธฐ๋ณธ๊ฐ์ UTF-8
- standalone : XML ๋ฌธ์๊ฐ ์ธ๋ถ DTD(Document Type Definition)์ ๊ฐ์ ์ธ๋ถ ์์ค์ ๋ฐ์ดํฐ์ ์์กดํ๊ณ ์๋ ๋ฌธ์์ธ์ง ์๋์ง๋ฅผ XML ํ์(parser)์ ์๋ ค์ฃผ๋ ์ญํ ์ ํฉ๋๋ค.
์ด ์์ฑ์ ๊ธฐ๋ณธ๊ฐ์ no์ด๋ฉฐ, yes๋ก ์ค์ ํ๋ฉด ์ด ๋ฌธ์๋ฅผ ํ์ฑ(parsing)ํ ๋ ์ฐธ์กฐํด์ผ ํ ์ธ๋ถ ์์ค๊ฐ ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
โ
๊ทธ ๋ค์์๋ XML ๋ฌธ์์ ๋จ ํ๋๋ง์ด ์กด์ฌํ๋ ๋ฃจํธ(root) ์์๋ฅผ ์์ฑํฉ๋๋ค.
์ด ๋ฃจํธ ์์๋ XML ๋ฌธ์์ ์กด์ฌํ๋ ๋ชจ๋ ์์์ ์กฐ์(ancestor) ์์๊ฐ ๋ฉ๋๋ค.
<shop city="์์ธ" type="๋งํธ">
์์ ์์ ์์ ๋ฃจํธ ์์๋ ์์(child) ์์๋ก ๋ ๊ฐ์ <food>์์๋ฅผ ๊ฐ์ง๋๋ค.
<shop city="์์ธ" type="๋งํธ">
<food>
...
</food>
<food>
...
</food>
</shop>
โ
์ฒซ ๋ฒ์งธ <food>์์๋ <name>์์, <sort>์์, <cost>์์์ ์ด ์ธ ๊ฐ์ ์์ ์์๋ฅผ ๊ฐ์ง๋๋ค.
<food>
<name>๊ทค</name>
<sort>๊ณผ์ผ</sort>
<cost>3000</cost>
</food>
์์์ ์ดํด๋ณธ XML ๋ฌธ์๋ ์์ ์์ ํ๋งคํ๋ ์ํ์ ๊ดํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ๋ฌธ์์์ ๋ช ํํ๊ฒ ์ ์ ์์ต๋๋ค.
์ด์ฒ๋ผ XML ๋ฌธ์์์ ์์์ ์ด๋ฆ์ ์ ์ฅํ๊ณ ์๋ ๋ฐ์ดํฐ์ ๋ด์ฉ์ ๋ช ํํ ์๋ ค์ค๋๋ค.
๋ฐ๋ผ์ ์์์ ์ด๋ฆ๋ง์ผ๋ก๋ ๋ฐ์ดํฐ์ ๋ด์ฉ์ ์ง์ํ ์ ์์ต๋๋ค.
โ
XML ๋ฌธ๋ฒ
1. ๋ชจ๋ XML ์์๋ ์ข ๋ฃ ํ๊ทธ๋ฅผ ๊ฐ์ ธ์ผ ํฉ๋๋ค.
2. XML ํ๊ทธ๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํฉ๋๋ค.
HTML์์๋ ํ๊ทธ ์ด๋ฆ์ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์์ต๋๋ค.
ํ์ง๋ง XML์์๋ ํ๊ทธ ์ด๋ฆ์ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ๋ฏ๋ก, ๋์๋ฌธ์๊ฐ ๋ค๋ฅด๋ฉด ๋ค๋ฅธ ์์๋ก ์ธ์ํฉ๋๋ค.
<lecture>์ด ์์๋ lecture ์์์
๋๋ค.</lecture>
<Lecture>์ด ์์๋ Lecture ์์์
๋๋ค.</Lecture>
โ
3. XML ํ๊ทธ์ ์ฌ๋ซ๋ ์์๋ ๋ฐ๋์ ์ง์ผ์ ธ์ผ ํฉ๋๋ค.
์ฌ๋ซ๋ ์์๊ฐ ์ง์ผ์ง๋ค๋ ๊ฒ์ ๋จผ์ ์ด๋ฆฐ ํ๊ทธ๋ ๊ทธ ์์ ๋ชจ๋ ํ๊ทธ๊ฐ ๋ซํ ํ์์ผ ๋ซํ ์ ์๋ค๋ ๋ป์ ๋๋ค.
<p><strong>์ด ๊ตฌ๋ฌธ์ ์ค๋ฅ๋ฅผ ๋ฐ์ํฉ๋๋ค.</p></strong>
<p><strong>์ด ๊ตฌ๋ฌธ์ด ์ ํํ ์์์
๋๋ค.</strong></p>
โ
4. XML์์ ์์ฑ๊ฐ์ ๋ฐ๋์ ๋ฐ์ดํ๋ก ๊ฐ์ธ์ผ ํฉ๋๋ค.
HTML์์๋ ์์ฑ๊ฐ์ ๋ฐ์ดํ๋ก ๊ฐ์ธ์ง ์์๋ ํฐ ๋ฌธ์ ์์ด ๋์ํฉ๋๋ค.
ํ์ง๋ง XML์์๋ ์์ฑ๊ฐ์ ๋ฐ์ดํ๋ก ๊ฐ์ธ์ง ์์ผ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
<student name=ํ๊ธธ๋> /* ์ค๋ฅ๊ฐ ๋ฐ์ํจ. */
<student name="์ด์์ "> /* ์ ์์ ์ผ๋ก ๋์ํจ. */
โ
5. XML์์๋ ๋์ด์ฐ๊ธฐ๋ฅผ ์ธ์ํฉ๋๋ค.
HTML์์๋ ๋์ด์ฐ๊ธฐ๋ฅผ ๋ฐ๋ก ์ธ์ํ์ง ์์ต๋๋ค.
ํ์ง๋ง XML์์๋ ์ฌ๋ฌ ๋ฒ์ ๋์ด์ฐ๊ธฐ๋ฅผ ๊ทธ๋๋ก ์ธ์ํฉ๋๋ค.
โ
XML ์ํฐํฐ(Entity)
XML์์๋ ์์ฝ๋์ด ์๋ ๋ค์ฏ ๊ฐ์ ํน๋ณํ ๊ธฐํธ๊ฐ ์์ต๋๋ค.
์ด๋ ๊ฒ ์์ฝ๋์ด ์๋ ๊ธฐํธ๋ฅผ XML ๋ฌธ์์์ ์ฌ์ฉํ๋ฉด XML ํ์(ํด์ํ๋ ๊ธฐ๊ณ)๋ ๊ทธ๊ฒ์ ์ ํ ๋ค๋ฅธ ์๋ฏธ๋ก ํด์ํฉ๋๋ค.
HTML์์๋ ์๋ง์ ๋ฌธ์์ ๊ธฐํธ๋ฅผ ์ํฐํฐ๋ก ๋ฏธ๋ฆฌ ์ ์ํด ๋๊ณ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
ํ์ง๋ง XML์์ ์ ๊ณตํ๋ ์ํฐํฐ๋ ๋ค์ฏ ๊ฐ๋ฟ์ ๋๋ค.
๋ค์ ํ๋ XML์์ ์์ฝ๋์ด ์๋ ๊ธฐํธ์ ๊ทธ์ ๋ฐ๋ฅธ ์ํฐํฐ๋ฅผ ๋ณด์ฌ์ค๋๋ค.
๊ธฐํธ | ์ํฐํฐ ์ด๋ฆ | 16์ง์ ์ํฐํฐ | ์ค๋ช |
< | < | < | ๋ณด๋ค ์์ |
> | > | > | ๋ณด๋ค ํฐ |
& | & | & | and ๊ธฐํธ |
" | " | " | ํฐ๋ฐ์ดํ |
' | ' | ' | ์์๋ฐ์ดํ |
โ
โ
XML ์์ฑ
XML ์์ฑ์ XML ์์์ ๋ํ ์ถ๊ฐ์ ์ธ ์ ๋ณด๋ฅผ ์ ๊ณตํด์ฃผ๋ฉฐ, ํด๋น ์์์ ํน์ง์ ์ ์ํฉ๋๋ค.
<์์์ด๋ฆ ์์ฑ1="์์ฑ๊ฐ" ์์ฑ2="์์ฑ๊ฐ"... >
โ
์์์ ์์ฑ์ ์ฐจ์ด์
<student>
<name>ํ๊ธธ๋</name>
<year>3</year>
<major>์ปดํจํฐ๊ณตํ</major>
</student>
<student name="ํ๊ธธ๋">
<year>3</year>
<major>์ปดํจํฐ๊ณตํ</major>
</student>
์์ ๋ ์์ ์์ ์ด๋ฆ(name)์ด๋ผ๋ ๋ฐ์ดํฐ๋ฅผ ํ๋๋ XML ์์๋ก, ํ๋๋ XML ์์ฑ์ผ๋ก ํํํ๊ณ ์์ต๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ์ด ๋ ์์ ๋ ์์ ํ ๊ฐ์ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ ๋ณด์ ์ ๋ฌ์ด๋ผ๋ ์ธก๋ฉด์์ ๋ณด๋ฉด XML ์์๋ก ํํํ๋ ๋ฐฉ๋ฒ๊ณผ XML ์์ฑ์ผ๋ก ํํํ๋ ๋ฐฉ๋ฒ์ ํฐ ์ฐจ์ด๋ ์์ต๋๋ค.
ํ์ง๋ง ์์ฑ์ ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ ๊ฐ์ง ์ ์์ผ๋ฉฐ, ์์์ฒ๋ผ ์์ฝ๊ฒ ํ์ฅํ ์ ์๋ค๋ ๋จ์ ์ ๊ฐ์ง๋๋ค.
๋ํ, ์์ฑ์ XML ํธ๋ฆฌ์ ํฌํจ๋์ง ์๊ธฐ ๋๋ฌธ์ ๋ค์ํ ์ฉ๋๋ก ํ์ฉํ ์๊ฐ ์์ต๋๋ค.
# ์ฐธ๊ณ ์๋ฃ
http://www.tcpschool.com/xml/intro
์ด ๊ธ์ด ์ข์ผ์ จ๋ค๋ฉด ๊ตฌ๋ & ์ข์์
์ฌ๋ฌ๋ถ์ ๊ตฌ๋
๊ณผ ์ข์์๋
์ ์์๊ฒ ํฐ ํ์ด ๋ฉ๋๋ค.