์ด ๋ฌธ์„œ์˜ ์›๋ณธ์€ ์™ธ๋ถ€ ์œ„ํ‚ค์—์„œ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.
1. ๊ฐœ์š”2. ์ƒ์„ธ3. Well-formed ๋ฌธ์„œ์™€ ์œ ํšจ XML๋ฌธ์„œ4. XML ํŒŒ์„œ์˜ ์ข…๋ฅ˜5. XML๋กœ ๋œ ์ด์ƒํ•œ ๊ฑฐ ์—„์ฒญ ๋งŽ๋˜๋ฐ?6. ๊ธฐํƒ€

1. ๊ฐœ์š”[ํŽธ์ง‘]

eXtensible Markup Language์˜ ์•ฝ์–ด. W3C์—์„œ ์—ฌ๋Ÿฌ ํŠน์ˆ˜ ๋ชฉ์ ์˜ ๋งˆํฌ์—… ์–ธ์–ด๋ฅผ ๋งŒ๋“œ๋Š” ์šฉ๋„์—์„œ ๊ถŒ์žฅ๋˜๋Š” ๋‹ค๋ชฉ์  ๋งˆํฌ์—… ์–ธ์–ด์ด๋‹ค. ๋งˆํฌ์—… ์–ธ์–ด๋Š” ํƒœ๊ทธ ๋“ฑ์„ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ์˜ ๊ตฌ์กฐ๋ฅผ ๊ธฐ์ˆ ํ•˜๋Š” ์–ธ์–ด์˜ ํ•œ ๊ฐ€์ง€์ด๋‹ค. ๊ฐ€์žฅ ์นœ์ˆ™ํ•˜๊ณ  ํ”ํ•˜๊ฒŒ ์ ‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋งˆํฌ์—… ์–ธ์–ด๋กœ HTML์ด ์žˆ๋‹ค.

2. ์ƒ์„ธ[ํŽธ์ง‘]

1996๋…„ ์ œ์•ˆ๋œ ์–ธ์–ด๋กœ, ๊ธฐ์กด์˜ HTML๊ณผ ๋‹ฌ๋ฆฌ ์›น์ƒ์—์„œ ๊ตฌ์กฐํ™”๋œ ๋ฌธ์„œ๋ฅผ ์ „์†ก๊ฐ€๋Šฅํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ๋‹ค. ์ด๊ฒŒ ๋ฌด์Šจ ๋œป์ด๋ƒ๋ฉด ์˜ˆ๋ฅผ ๋“ค์–ด HTML์—์„œ๋Š” CPU 2.83GHz๋ผ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œ๊ธฐํ•  ๋•Œ ์–ด๋””๋ถ€ํ„ฐ๊ฐ€ ๋ฐ์ดํ„ฐ ๋ช…์ด๊ณ  ์–ด๋””๋ถ€ํ„ฐ๊ฐ€ ์‹ค์ œ ๋ฐ์ดํ„ฐ์ธ์ง€ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋Š” ๋งˆ๋•…ํ•œ ๋ฐฉ๋ฒ•์ด ์—†๋‹ค.

์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด XML์„ ์ด์šฉํ•˜๋ฉด ์–ด๋””๋ถ€ํ„ฐ ์–ด๋””๊นŒ์ง€๊ฐ€ ๋ฐ์ดํ„ฐ ์ด๋ฆ„์ด๊ณ  ์–ด๋””๋ถ€ํ„ฐ ์–ด๋””๊นŒ์ง€๊ฐ€ ์‹ค์ œ ๋ฐ์ดํ„ฐ์ด๋ฉฐ ์–ด๋””๋ถ€ํ„ฐ ์–ด๋””๊นŒ์ง€๊ฐ€ ๋ฐ์ดํ„ฐ ๋‹จ์œ„์ธ์ง€๋„ ํ‘œํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ฆ‰, ๋ฐ์ดํ„ฐ์— ์˜๋ฏธ๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ์ˆ ํ•  ์ˆ˜ ์žˆ๋‹ค. XML์€ ๋ฐ”๋กœ ์ด๋Ÿฌํ•œ ๋ชฉ์ ์œผ๋กœ ํƒ„์ƒํ–ˆ๋‹ค. ์œ„์˜ ์˜ˆ๋ฅผ XML๋กœ ๋ฐ”๊พธ๋ฉด ๋ฐ์ดํ„ฐ ๋ช…์€ <dataname>CPU</dataname>๊ฐ€ ๋˜๊ณ  ๋ฐ์ดํ„ฐ ๊ฐ’์€ <datavalue>2.83</datavalue>์ด ๋œ๋‹ค.

์›๋ž˜ ๋™์ผํ•œ ๋ชฉ์ ์„ ๊ฐ€์ง„ Standard Generalized Markup Language(SGML) ๋ผ๋Š” ๊ฒƒ์ด ์ธํ„ฐ๋„ท ๋“ฑ์žฅ๋ณด๋‹ค ๋น ๋ฅธ 1980๋…„๋Œ€์— ๋“ฑ์žฅํ–ˆ์œผ๋ฉฐ, ์ด๊ฒƒ์˜ Profile(๋ถ€๋ถ„์ง‘ํ•ฉ)์— ์ธํ„ฐ๋„ท ํ™˜๊ฒฝ๊ณผ ์ƒˆ๋กญ๊ฒŒ ๋ณ€ํ™”ํ•ด์˜จ ์ปดํ“จํŒ… ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ํ™•์žฅ์„ ๋”ํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ XML ์ด๋‹ค. XML์€ ๋ฐ”๋กœ SGML์˜ ํŒŒ์ƒํ˜•์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, HTML์€ ์™„์ „ํ•œ ํŒŒ์ƒํ˜•์€ ์•„๋‹ˆ์ง€๋งŒ SGML์˜ ์˜ํ–ฅ์„ ๊ฐ•ํ•˜๊ฒŒ ๋ฐ›์•˜๋‹ค๊ณ  ์ตœ์ดˆ ์ œ์•ˆ์ž์ธ ํŒ€ ๋ฒ„๋„ˆ์Šค๋ฆฌ๊ฐ€ ๋ฐํžŒ ์ ์ด ์žˆ๋‹ค.

์ด๋Ÿฐ XML์˜ ํŠน์ง•์€ ์ˆ˜๋งŽ์€ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์—ฐํ•˜๊ณ  ์ž์œ ๋กญ๊ฒŒ ๊ธฐ์ˆ ํ•˜๋Š” ๋ฐ ์ ์šฉํ•  ์ˆ˜ ์žˆ์–ด์„œ ๋‹ค์–‘ํ•œ ์šฉ๋„๋กœ ์‘์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ธํ„ฐ๋„ท์œผ๋กœ ์—ฐ๊ฒฐ๋œ ์‹œ์Šคํ…œ๋ผ๋ฆฌ ์‰ฝ๊ฒŒ ์‹๋ณ„ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ๊ฒŒ์ž„ ๋ชจ๋“œ ๋“ฑ์„ ์‹œ๋„ํ•ด ๋ดค๋‹ค๋ฉด ์„ค์ •ํŒŒ์ผ์ด XML๋กœ ๋œ ๊ฒƒ์„ ๋ณธ ๊ฒฝํ—˜์ด ์žˆ์„ ๊ฒƒ์ด๋‹ค.

3. Well-formed ๋ฌธ์„œ์™€ ์œ ํšจ XML๋ฌธ์„œ[ํŽธ์ง‘]

  • Well-formed : XML์˜ ๊ธฐ๋ณธ ๋ฌธ๋ฒ•์„ ๋งŒ์กฑํ•˜๋Š” ์ˆ˜์ค€์œผ๋กœ ๋˜์–ด์žˆ๋Š” ๋ฌธ์„œ. ๋ชจ๋“  ๊ตฌ๋ฌธ์„ ํ—ˆ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— XML์ฒ˜๋Ÿผ ๋ณด์ด๊ธฐ๋Š” ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ ๊ตํ™˜์ˆ˜๋‹จ์œผ๋กœ ๋ฐ”๋กœ ์“ฐ๊ธฐ๋Š” ์–ด๋ ต๋‹ค. ํ˜•์‹์ด ์ œ๊ฐ๊ฐ์ด๊ธฐ ๋•Œ๋ฌธ.
  • ์œ ํšจ(Valid) XML ๋ฌธ์„œ : XML ๋ฌธ์„œ์˜ ํ˜•์‹(DTD, XML Schema)๋ฅผ ๋งŒ์กฑํ•˜๋„๋ก ์ž‘์„ฑ๋œ XML ๋ฌธ์„œ. ๋ฌธ์„œ์˜ ํ˜•์‹ ์ •์˜๋Š” XML ๋ฌธ์„œ ์ž์ฒด์— ํฌํ•จ๋˜์—ˆ์„ ์ˆ˜๋„, ๋‹ค๋ฅธ ๋ฌธ์„œ๋กœ ์กด์žฌํ•  ์ˆ˜๋„, ์•„๋‹ˆ๋ฉด ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ์— ์กด์žฌํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๋ฌธ์„œ ํ˜•์‹ ์ •์˜๋Š” ๊ณผ๊ฑฐ์—๋Š” DTD๊ฐ€ ๋งŽ์ด ์‚ฌ์šฉ๋˜์—ˆ์ง€๋งŒ, 2000๋…„๋Œ€ ์ค‘ํ›„๋ฐ˜ ์ดํ›„ XML Schema๋ฅผ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค..

XML ๋ฌธ์„œ ์ž‘์„ฑ ์‹œ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์€ ์˜ˆ์•ฝ ๋ฌธ์ž ์ฒ˜๋ฆฌ์ด๋‹ค. <, >, &๋Š” XML tag ํ‘œ์‹œ์™€ entity๋ฅผ ํ‘œ์‹œํ•˜๋Š” XML ์˜ˆ์•ฝ๋ฌธ์ž๋กœ, ์˜ˆ์•ฝ ๋ฌธ์ž๊ฐ€ ํฌํ•จ๋œ XML ์„ parsing ํ•˜๋Š” ๊ฒฝ์šฐ "not well-formed (invalid token)" Exception์„ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค. XML ์˜ˆ์•ฝ๋ฌธ์ž์™€ ํŠน์ˆ˜๋ฌธ์ž ๋ฆฌ์ŠคํŠธ

XML์„ Python ElementTree๋ฅผ ์‚ฌ์šฉํ•ด์„œ Parsingํ• ๋•Œ ๋ช‡ ๊ฐ€์ง€๋ฅผ ์œ ์˜ํ•ด์•ผ ํ•œ๋‹ค. XML ํŒŒ์ผ์•ˆ์˜ Comment๊ฐ€ ์œ ์ง€๊ฐ€ ์•ˆ๋˜๊ฑฐ๋‚˜ ํ•œ๊ธ€์ด ๊นจ์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์œผ๋‚˜ ์ด๋Š” parser() ์™€ write() ํ•จ์ˆ˜๋ฅผ ์กฐ๊ธˆ ์ˆ˜์ •ํ•˜๋ฉด ๊ฐ€๋Šฅํ•˜๋‹คsample code.

4. XML ํŒŒ์„œ์˜ ์ข…๋ฅ˜[ํŽธ์ง‘]

๋‘˜ ๋‹ค ๋ชจ๋‘ ์‹ค์ œ ๊ตฌํ˜„์ฒด๊ฐ€ ์•„๋‹Œ ์ธํ„ฐํŽ˜์ด์Šค ์ˆ˜์ค€์œผ๋กœ ๋А์Šจํ•˜๊ฒŒ ์ •์˜๋˜์–ด ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด/ํ”Œ๋žซํผ ๋ณ„๋กœ ์‹ค์ œ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์ด ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค. XML์ด ์ดˆ๊ธฐ์— ๋„๋ฆฌ ํผ์ง„ ์ด์œ  ์ค‘ ํ•˜๋‚˜๋Š”, ๊ฑฐ์˜ ์›ฌ๋งŒํ•œ ์–ธ์–ด์—์„œ ๊ธฐ๋ณธ์œผ๋กœ ์ง€์›ํ•˜๋Š” ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š” ๊ธฐ๋ณธ API ๋ณด๋‹ค ํ›จ์”ฌ ๋ณต์žกํ•œ ํ˜•ํƒœ์˜ ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ฐ๋Š”๋ฐ ๋งค์šฐ ํŽธ๋ฆฌํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ง€๊ธˆ์€ ์›น ๊ด€๋ จ ํ•œ์ •์œผ๋กœ JSON์ด ๋” ๋งŽ์ด ์“ฐ์ด๊ณ  ์žˆ๋‹ค.
  • DOM : XML ๋ฌธ์„œ๊ฐ€ ์ „๋ถ€ ๋ฉ”๋ชจ๋ฆฌ๋กœ ์˜ฌ๋ผ๊ฐ€ ๊ฐ์ฒด ๋ชจ๋ธ๋กœ ์ƒ์„ฑ๋œ๋‹ค. W3C์˜ ๊ณต์‹ ํ‘œ์ค€์ด๋ฉฐ, W3C๊ฐ€ ํ‘œ์ค€ํ™”ํ•œ API๋“ค์˜ ๊ธฐ๋ฐ˜์ด๋‹ค. ๋ฌธ์„œ๊ฐ€ ํ†ต์งธ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€ ์กฐ์งํ™”๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์„œ ์š”์†Œ๋ฅผ ์ž„์˜์ ์œผ๋กœ ์ ‘๊ทผํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์ ํ•ฉํ•˜๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Š” ๋ฐ˜๋Œ€๋กœ ๋‹จ์ ์ด ๋˜๊ธฐ๋„ ํ•˜๋Š”๋ฐ, ๋…ผ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ํ†ต์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ ค๋†“๊ณ  ์—ฐ์‚ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— XML ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ํฌ๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ์œผ๋กœ ์ธํ•ด ๊ณ ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.
  • SAX : XML ๋ฌธ์„œ๋ฅผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ API. DOM์— ๋น„ํ•ด ์ €์ˆ˜์ค€์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ํŒŒ์ผ์ด ํด ๋•Œ ์ ํ•ฉํ•˜๋‹ค. XML์˜ ๊ตฌ์กฐ์— ๋”ฐ๋ผ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒ๋˜๋ฉฐ, ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ์ด ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ ๋‚ด์šฉ์„ ์กฐ์งํ•˜๋Š” ๊ธฐ๋Šฅ์€ DOM๋งŒ ๋ชปํ•˜๋‹ค. ์•„๋ฌด๋ž˜๋„ XML ๋ฌธ์„œ๋ฅผ ํ†ต์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์ƒ์— ๋…ผ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ์˜ฌ๋ฆฌ๊ณ  ์ž‘์—…ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์€ ์—ญ์‹œ ์ฝ์–ด์„œ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” XML ๋ฐ์ดํ„ฐ๊ฐ€ ๋งค์šฐ ํด ๋•Œ ์žฅ์ ์œผ๋กœ ์ž‘์šฉํ•œ๋‹ค. ์ผ๋‹จ ์–ด๋–ป๊ฒŒ๋“  ๋‹ค๋ฅธ ๋Œ€์šฉ๋Ÿ‰ ๋น„ํœ˜๋ฐœ์„ฑ ์ €์žฅ๊ณต๊ฐ„(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, NoSQL ๋“ฑ)์— ์ž…๋ ฅํ•˜๋Š”๋ฐ SAX๋ฅผ ์“ฐ๊ณ , ๋ฐ์ดํ„ฐ ์กฐ์ž‘์€ ํ•ด๋‹น ์ €์žฅ๊ณต๊ฐ„์—์„œ ํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋˜ํ•œ SAX ํŒŒ์„œ๋Š” ๋‚ด๊ฒฐํ•จ์„ฑ์„ ๊ฐ–๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด ์ผ๋ถ€ ์†์ƒ๋œ XML๋„ ์ฝ์–ด์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

5. XML๋กœ ๋œ ์ด์ƒํ•œ ๊ฑฐ ์—„์ฒญ ๋งŽ๋˜๋ฐ?[ํŽธ์ง‘]

XML์€ ์–ด๋””๊นŒ์ง€๋‚˜ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๋ฉด์„œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ์ˆ ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ชฉ์  ๋ฌธ์„œ ํ˜•์‹ ํ‘œ์ค€์ด๋‹ค. ์ด๋ฅผ ์›ํ•˜๋Š” ์šฉ๋„์— ๋งž๊ฒŒ DTD, XML Schema๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ํ‘œ์ค€์œผ๋กœ ์ œ์ •ํ•˜๋ฉด XML์— ๊ธฐ๋ฐ˜ํ•œ ํŠน์ˆ˜ ๋ชฉ์ ์šฉ ๋งˆํฌ์—… ์–ธ์–ด๊ฐ€ ๋œ๋‹ค. (๋ฌด๋ฆฌ๊ฐ€ ์žˆ๋Š” ๋น„์œ ์ง€๋งŒ) XML๊ณผ 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 ํ‘œ์ค€ ์„ค์ • ํŒŒ์ผ์ด๋‹ค.

C#์—์„œ๋Š” ํ”„๋กœ๊ทธ๋žจ ์„ค์ •์— ์‚ฌ์šฉํ•˜๋Š” App.config, WPF์—์„œ ์‚ฌ์šฉํ•˜๋Š” Xaml ํŒŒ์ผ์ด ์žˆ๋‹ค.

๊ตฌ๊ธ€๋งต์Šค๋Š” ์ง€๋„ ํŽธ์ง‘ ์ •๋ณด๋ฅผ KML ํŒŒ์ผ์— ์ €์žฅํ•œ๋‹ค. XML์—์„œ ํŒŒ์ƒ๋˜์–ด XML์˜ ๋ฌธ๋ฒ• ๊ทœ์น™์„ ๋”ฐ๋ฅด๋Š” ๊ตฌ๊ธ€์ง€๋„ KML์€, ๊ตฌ๊ธ€๋งต ๋ฐ ๊ธฐํƒ€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์“ฐ์ด๋Š” XML ๊ธฐ๋ฐ˜์˜ ๋งˆํฌ์—… ์–ธ์–ด์˜ ์Šคํ‚ค๋งˆ์ด๋ฉฐ, ์ง€ํ˜• ์ •๋ณด(Annotation)๋ฅผ ๋ชจ๋ธ๋งํ•˜๊ณ  ํ‘œํ˜„ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. KML ๊ณต์‹ ๋ฌธ์„œ, ๊ธฐ๋ณธ ์ด๋ก 

6. ๊ธฐํƒ€[ํŽธ์ง‘]

์›๋ž˜๋Š” ์›น์—์„œ ์‚ฌ์šฉํ•  ๋ชฉ์ ์œผ๋กœ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ, ์›นํ™˜๊ฒฝ์ด ์•„๋‹Œ ์ผ๋ฐ˜ TCP/IP ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์„ ํ•  ๋•Œ์—๋„ ์ ์  ์‚ฌ์šฉ๋นˆ๋„๊ฐ€ ๋Š˜์–ด๋‚˜๊ณ  ์žˆ๋Š” ์ถ”์„ธ์ด๋‹ค. ๋””์ง€ํ„ธ ๊ธฐ๋ฐ˜์˜ ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์„ ํ•  ๋•Œ ์†ก์‹ ์ž์™€ ์ˆ˜์‹ ์ž๊ฐ„์—์„œ๋Š” ์„œ๋กœ ์ฃผ๊ณ ๋ฐ›๋Š” ๋ฐ์ดํ„ฐ ํŒจํ‚ท์„ ๋น„ํŠธ ๋‹จ์œ„๋กœ ์ •ํ™•ํ•˜๊ฒŒ ๋งž์ถฐ์ค˜์•ผ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ์ง€ ์•Š๋Š”๋ฐ, ์ด ๋น„ํŠธ๋‹จ์œ„ ๋ฐ์ดํ„ฐ ํ†ต์‹ ์— ํ•˜๋„ ๋ถˆํ™•์‹ค์„ฑ์ด ๋งŽ์•„์„œ...๊ฐ€์žฅ ํฐ ๋ถˆํ™•์‹ค์„ฑ์€ ์‚ฌ๋žŒ์ด ๋งŒ๋“  ๋ฒ„๊ทธ ๋˜ํ•œ ๋ฐ์ดํ„ฐ ํŒจํ‚ท๋‹จ์œ„ ์ „์†ก์‹œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฐœ๋ฐœ๊ธฐ๋ฐ˜, ๊ตฌ๋™ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ์ด๋Ÿฐ์ €๋Ÿฐ ์ž”์ฒ˜๋ฆฌ๊ฐ€ ๋งŽ์ด ๋“ค์–ด๊ฐ„๋‹ค.[1]

๊ทธ๋ž˜์„œ ์š”์ฆ˜์€ ์•„์˜ˆ XML๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š”๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ตœ์†Œํ•œ ํŒจํ‚ท ์‚ฌ์ด์ฆˆ๊ฐ€ ์•ˆ ๋งž์•„์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฒ„๊ทธ๋Š” ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋ ‡๊ฒŒ ๋งŒ๋“  ํ”„๋กœ๊ทธ๋žจ์€ XML๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ์›นํ™•์žฅ์„ฑ๋„ ๋ค์œผ๋กœ ๊ฐ–๊ฒŒ๋œ๋‹ค.

๋‹ค๋ฅธ ์ปดํ“จํ„ฐ ์‚ฌ์ด์— ์ •๋ณด๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ์›น ์„œ๋น„์Šค๋Š” ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฒฐ๊ณผ๊ฐ€ XML๋กœ ๋ฆฌํ„ด์ด ๋œ๋‹ค. ๊ตฌ๊ธ€๋งต API์˜ ๊ฒฝ์šฐ๋„ XML๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜ ๋งํฌ๋ฅผ ํด๋ฆญํ•˜๋ฉด ๊ตฌ๊ฒฝํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.
๏‡พ๊ตฌ๊ธ€๋งต ์ฟผ๋ฆฌ ํ…Œ์ŠคํŠธ

์ด๋Ÿฌํ•œ ๊ฒƒ์ด ์•„๋‹Œ, ์š”์ฒญ๊ณผ ์‘๋‹ต์„ XML์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ ์ œ์ •๋œ ํ‘œ์ค€์œผ๋กœ XML-RPC์™€ SOAP์ด๋ผ๋Š” ํ”„๋กœํ† ์ฝœ์ด ์กด์žฌํ•œ๋‹ค. ์ฒ˜์Œ์—๋Š” ์ธํ„ฐ๋„ท ์ƒ์—์„œ ์‚ฌ์šฉํ•  ๊ฒƒ์„ ๋ชฉ์ ์œผ๋กœ ๋งŒ๋“ค์—ˆ์ง€๋งŒ, ์šด์šฉํ•˜๋Š” ๋ฐ ์ƒ๊ฐ๋ณด๋‹ค ๊นŒ๋‹ค๋กญ๊ณ  ๋ถ€๋‹ด์ด ๋งŽ์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ง€๊ธˆ์€ ๋ณด์ˆ˜์ ์ธ ๊ธฐ์—… ํ™˜๊ฒฝ์ด ์•„๋‹ˆ๋ฉด ๋ณด๊ธฐ ํž˜๋“ค๋‹ค. ํ˜„๋Œ€ ๊ธฐ์ˆ ์— ์กฐ๊ธˆ์ด๋ผ๋„ ๊ด€์‹ฌ์ด ์žˆ๋Š” ๊ธฐ์—…๋“ค์€ ์ด ๋ฌด๊ฒ๋”” ๋ฌด๊ฑฐ์šด XML-RPC ํ”„๋กœํ† ์ฝœ ๋”ฐ์œ„๋Š” ์ง‘์–ด์น˜์šฐ๊ณ  ํ›จ์”ฌ ๊ฐ€๋ฒผ์šด REST API๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋‘˜์˜ ๊ทผ๋ณธ์ ์ธ ์ฐจ์ด๋ผ๋ฉด XML-RPC๋Š” ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ๋ฐ˜๋“œ์‹œ ์„ฑ๊ณตํ•˜๋„๋ก ์‚ฌ์ „์— ์ค„ ์ˆ˜ ์žˆ๋Š” ์ •๋ณด๋Š” ์‚ฌ์†Œํ•œ ๊ฒƒ๊นŒ์ง€ ๋‹ค ์ค€๋‹ค๋Š” ๊ฐœ๋…์ด๊ณ  REST API๋Š” ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ์ •๋ณด๋งŒ ๋ณด๋‚ด๊ณ  ๋ฐ›๋Š” ์ชฝ์ด ๊ทธ๊ฑธ ์ž˜ ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋ฏฟ๋Š” ๋Œ€์‹  ์‹คํŒจ๋ฅผ ๋‹น์—ฐํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๋Š” ๊ฐœ๋…์ด๋‹ค.

๋‹ค๋งŒ JavaScript์—์„œ๋Š” ์—ฌ๋Ÿฌ ๋ชจ๋กœ ์ทจ๊ธ‰์ด ๋ถˆํŽธํ•˜๊ณ , ์‹ค์ œ ๋ฐ์ดํ„ฐ ์–‘์— ๋น„ํ•ด์„œ ์—„์ฒญ๋‚œ ๋ฉ์น˜๋ฅผ ์ž๋ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์—[2] JSON์ด๋ผ๋Š” ํฌ๋งท์„ ๋”ฐ๋กœ ๋งŒ๋“ค์—ˆ์„ ์ •๋„. ๋‹จ ์ด๊ฒƒ์€ ์›น ๋ธŒ๋ผ์šฐ์ €์™€ ์ง๊ฒฐ๋˜๋Š” ํ™˜๊ฒฝ ํ•œ์ •์ด๋‹ค. ์• ์ดˆ์— JavaScript ์‚ฌ์šฉ ๋นˆ๋„ ์ž์ฒด๊ฐ€ ์›น ๋ธŒ๋ผ์šฐ์ € ์ƒ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๊ฐ€์žฅ ๋งŽ์œผ๋‹ˆ๊นŒ.

๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ์žฅ์ ์ด ์žˆ๋Š” ๋Œ€์‹ , XML์ด๋‚˜ JSON์€ ๊ณตํ†ต๋œ ๋‹จ์ ์ด ์žˆ์œผ๋‹ˆ, ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‘˜ ๋‹ค ๋ฌธ์ž์—ด์— ๊ธฐ๋ฐ˜ํ•œ ๊ฒƒ์ด๊ณ , ์‹ค ๋ฐ์ดํ„ฐ์— ๋น„ํ•ด ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋งŽ์œผ๋ฉฐ, ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ๋“ค์–ด์žˆ๋˜ ๋ฐ์ดํ„ฐ๋ฅผ XML์ด๋‚˜ JSON์œผ๋กœ ๋ณ€ํ™˜(Serialization, Marshalling)ํ•˜์—ฌ ์ „์†กํ•˜๊ณ , ๋‹ค์‹œ ์ด๋ ‡๊ฒŒ ์ „์†ก๋ฐ›์€ XML ์ด๋‚˜ JSON ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ๋ณต์›(Deserialization, Unmarshalling)์‹œํ‚ค๋Š” ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ํฌ๋‹ค. ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์— ๋Œ€ํ•ด์„  ์••์ถ• ์ „์†ก์œผ๋กœ ๊ทน๋ณตํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์–ด์จŒ๋“  ๋ฐ›์€ ๋’ค์—๋Š” ๊ทธ ์••์ถ•์„ ํ’€์–ด์•ผ ํ•˜๋‹ˆ๊นŒ ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ œ๋Š” ํ•ด๊ฒฐ๋˜์ง€ ์•Š๋Š”๋‹ค.

์–ด์ฉŒ๋‹ค ํ•œ ๋ฒˆ ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์šด์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ณ„ ๋ฌธ์ œ๊ฐ€ ์—†์ง€๋งŒ, 1์ดˆ์—๋„ ์ˆ˜์‹ญ ๋ฒˆ ์ด์ƒ ์ด๋Ÿฌํ•œ ์š”์ฒญ์„ ๋ฐ›์•„์„œ ์ฒ˜๋ฆฌํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ๋Œ๋ ค์ฃผ๋Š” ์„œ๋น„์Šค๋ฅผ ์šด์šฉํ•  ๋•Œ์—๋Š” ๊ฝค ๋ฌธ์ œ๊ฐ€ ๋˜๋ฉฐ, IBM ๊ฐ™์€ ๊ณณ์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๋ณ€ํ™˜ ์ž‘์—…์šฉ ์ „์šฉ ๊ฐ€์† ์žฅ๋น„๋ฅผ ์ œ์ž‘ํ•˜์—ฌ ๊ธฐ์—…์šฉ์œผ๋กœ ํŒ๋งคํ•  ์ •๋„์ด๋‹ค. ์–ด๋–ป๊ฒŒ๋“  ์ด๋Ÿฌํ•œ ๋ฌธ์ œ์ ์„ ๊ทน๋ณตํ•ด ๋ณด๊ณ ์ž ์•„์˜ˆ Efficient XML Interchange(EXI)๋ผ๊ณ  ํ•˜๋Š” Binary XML ๊นŒ์ง€ ๋“ฑ์žฅํ–ˆ๋‹ค.[3] ๋ฌผ๋ก  ์ด ์ •๋„๋กœ ๋ฐ์ดํ„ฐ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฌธ์ œ๊ฐ€ ๋˜๋ฉด ์ „์šฉ ๋ฐ”์ด๋„ˆ๋ฆฌ ํฌ๋งท์„ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒŒ ๋ณดํ†ต์ด๋‹ค.

DOI ์ฃผ์†Œ๋ฅผ ๋งŒ๋“ค ๋•Œ์—๋„ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค. ์ทจ๊ธ‰์ด ๋ถˆํŽธํ•˜๊ณ  ๋ถ€์—ฌํ•˜๊ธฐ๊ฐ€ ๋ถ€๋‹ด์Šค๋Ÿฝ๊ธฐ๋Š” ๋งคํ•œ๊ฐ€์ง€.

์ด๊ฒƒ์„ ์‘์šฉํ•ด์„œ ํ”ผ์ฒ˜ํฐ์— ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•œ๊ฒƒ์ด WAP.



[1] ์˜ˆ๋ฅผ ๋“ค์–ด, ์ž๋ฐ”์™€ C++๋กœ ๋งŒ๋“  ํ”„๋กœ๊ทธ๋žจ์ด ํ†ต์‹ ํ•œ๋‹ค๊ณ  ํ•  ๋•Œ ์–‘์ž๊ฐ„ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ์™€ ํ˜•์‹์ด ๋‹ฌ๋ผ์„œ ๊ธ€์ž ๊ทธ๋Œ€๋กœ ํŒจํ‚ท์„ ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ์ชผ๊ฐœ์„œ ์ฃผ๊ณ  ๋ฐ›์•„์•ผ ํ•œ๋‹ค.
[2] XML ์„ ์–ธ ํ—ค๋”, HTML ๋ฐฉ์‹์˜ ์—ด๊ณ  ๋‹ซ๋Š” ํƒœ๊ทธ ๊ตฌ์กฐ, ์—”ํ‹ฐํ‹ฐ ์ด์Šค์ผ€์ดํ•‘(์˜ˆ๋ฅผ ๋“ค๋ฉด &๋ฅผ &amp;๋กœ ์ ์–ด์•ผ ํ•œ๋‹ค๋“ ์ง€...) ๋“ฑ๋“ฑ์ด ๋ฉ์น˜๋ฅผ ํ‚ค์šฐ๋Š” ๋ฐ ์ผ์กฐํ–ˆ๋‹ค. ์•„๋‹ˆ๋‚˜๋‹ค๋ฅผ๊นŒ ๋ฆฌ๋ˆ„์Šค ํ† ๋ฅด๋ฐœ์Šค์˜ ๊นŒ์ž„์„ ๋ฉด์น˜ ๋ชปํ–ˆ๋‹ค.
[3] ์ด์™€ ์œ ์‚ฌํ•˜๊ฒŒ JSON์˜ Binary ํ˜•ํƒœ์ธ BSON๋„ ์กด์žฌ.