์ด ๋ฌธ์์ ์๋ณธ์ ์ธ๋ถ ์ํค์์ ๊ฐ์ ธ์์ต๋๋ค.
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๋ก ๋ ๊ฒ์ ๋ณธ ๊ฒฝํ์ด ์์ ๊ฒ์ด๋ค.
์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด 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 ๊ณต์ ๋ฌธ์, ๊ธฐ๋ณธ ์ด๋ก
๋๊ตฌ๋ ์ ์ ์๋ ์ด๋ฌํ ๊ฒ์ ๋ํ์ ์ธ ์๋ก ์ด๊ธฐ์ 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.
๊ทธ๋์ ์์ฆ์ ์์ 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 ๋ฐฉ์์ ์ด๊ณ ๋ซ๋ ํ๊ทธ ๊ตฌ์กฐ, ์ํฐํฐ ์ด์ค์ผ์ดํ(์๋ฅผ ๋ค๋ฉด &๋ฅผ &๋ก ์ ์ด์ผ ํ๋ค๋ ์ง...) ๋ฑ๋ฑ์ด ๋ฉ์น๋ฅผ ํค์ฐ๋ ๋ฐ ์ผ์กฐํ๋ค. ์๋๋๋ค๋ฅผ๊น ๋ฆฌ๋์ค ํ ๋ฅด๋ฐ์ค์ ๊น์์ ๋ฉด์น ๋ชปํ๋ค.
[3] ์ด์ ์ ์ฌํ๊ฒ JSON์ Binary ํํ์ธ BSON๋ ์กด์ฌ.