์๋
ํ์ธ์! ์ค๋ ์ฐ๋ฆฌ๋ XML์ด๋ผ๋ ๋ ๋ค๋ฅธ ๋ฐ์ดํฐ ํ์์ ๋ํด ์์ ๋ณด๊ฒ ์ต๋๋ค. ์ด๊ฒ์ ๋งค์ฐ ์ค์ํ ์ฃผ์ ์
๋๋ค. ์ค์ Java ์ ํ๋ฆฌ์ผ์ด์
์ ์์
ํ ๋ ๊ฑฐ์ ํ์คํ๊ฒ XML ๊ด๋ จ ๋ฌธ์ ์ ์ง๋ฉดํ๊ฒ ๋ฉ๋๋ค. ์ด ํ์์ Java ๊ฐ๋ฐ์ ๊ฑฐ์ ๋ชจ๋ ๊ณณ์์ ์ฌ์ฉ๋ฉ๋๋ค(์ ํํ ๊ทธ ์ด์ ๋ ์๋์์ ํ์ธํ๊ฒ ์ต๋๋ค). ๋ฐ๋ผ์ ๊ฐ์๋ฅผ "๋๊ฐ์ "์ผ๋ก ์ฝ๋ ๊ฒ์ด ์๋๋ผ ๋ชจ๋ ๊ฒ์ ์ฒ ์ ํ๊ฒ ์ดํดํ๋ ๋์์ ์ถ๊ฐ ๋ฌธํ/๋งํฌ๋ฅผ ์ฐ๊ตฌํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์๊ฐ์ ํ์คํ ๋ญ๋น๋์ง ์์ ๊ฒ์
๋๋ค. ์ด์ "๋ฌด์"๊ณผ "์"๋ผ๋ ๊ฐ๋จํ ๊ฒ๋ถํฐ ์์ํ๊ฒ ์ต๋๋ค!
XML์ด๋ ๋ฌด์์
๋๊น?
XML์ eXtensible Markup Language๋ฅผ ์๋ฏธํฉ๋๋ค. ์ฌ๋ฌ๋ถ์ ์ด๋ฏธ ๋งํฌ์
์ธ์ด ์ค ํ๋์ ์ต์ํ ๊ฒ์
๋๋ค. ์น ํ์ด์ง๋ฅผ ๋ง๋๋ ๋ฐ ์ฌ์ฉ๋๋ HTML์ ๋ํด ๋ค์ด๋ณด์
จ์ ๊ฒ์
๋๋ค.
HTML๊ณผ XML์ ๋ชจ์๋ ๋น์ทํฉ๋๋ค.
HTML 1
<h1>title</h1>
<p>paragraph</p>
<p>paragraph</p>
|
XML 1
<headline>title</headline>
<paragraph>paragraph</paragraph>
<paragraph>paragraph</paragraph>
|
HTML 2
<h1>title</h1>
<p>paragraph</p>
<p>paragraph</p>
|
XML2
<chief>title</chief>
<paragraph>paragraph</paragraph>
<paragraph>paragraph</paragraph>
|
์ฆ, XML์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ์ ํ๋ ์ธ์ด์
๋๋ค.
XML์ด ํ์ํ ์ด์ ๋ ๋ฌด์์
๋๊น?
XML์ ์๋ ์ธํฐ๋ท์ ํตํ ๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ์ ์ก์ ๋ณด๋ค ํธ๋ฆฌํ๊ฒ ํ๊ธฐ ์ํด ๊ฐ๋ฐ๋์์ต๋๋ค. ์ด ์์
์ ์ฑ๊ณต์ ์ผ๋ก ๋์ฒํ ์ ์๋ ์ฌ๋ฌ ๊ฐ์ง ์ฅ์ ์ด ์์ต๋๋ค. ์ฒซ์งธ, ์ฌ๋๊ณผ ์ปดํจํฐ ๋ชจ๋ ์ฝ๊ฒ ์ฝ์ ์ ์์ต๋๋ค. ์ด xml ํ์ผ์ด ์ค๋ช
ํ๋ ๋ด์ฉ์ ์ฝ๊ฒ ์ดํดํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.
<?xml version="1.0" encoding="UTF-8"?>
<book>
<title>Harry Potter and the Philosopherโs Stone</title>
<author>J. K. Rowling</author>
<year>1997</year>
</book>
์ปดํจํฐ๋ ์ด ํ์์ ์ฝ๊ฒ ์ดํดํฉ๋๋ค. ๋์งธ, ๋ฐ์ดํฐ๋ ๊ฐ๋จํ ํ
์คํธ ํ์์ผ๋ก ์ ์ฅ๋๋ฏ๋ก ํ ์ปดํจํฐ์์ ๋ค๋ฅธ ์ปดํจํฐ๋ก ์ ์กํ ๋ ํธํ์ฑ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
XML์ ์คํ ๊ฐ๋ฅํ ์ฝ๋๊ฐ ์๋๋ผ ๋ฐ์ดํฐ ์ค๋ช
์ธ์ด๋ผ๋ ์ ์ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค . XML์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ค๋ช
ํ ํ์๋ ์ด ๋ฐ์ดํฐ๋ฅผ ์ ์ก/์์ /์ฒ๋ฆฌํ ์ ์๋ ์ฝ๋(์: Java)๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค.
XML์ ์ด๋ป๊ฒ ์๋ํ๋์?
์ฃผ์ ๊ตฌ์ฑ ์์๋ ํ๊ทธ์
๋๋ค. ๊บพ์ ๊ดํธ ์์ ์๋ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
<book>
</book>
์ฌ๋ ํ๊ทธ์ ๋ซ๋ ํ๊ทธ๊ฐ ์์ต๋๋ค. ๋ซ๋ ๊ฒ์๋ ์ถ๊ฐ ๊ธฐํธ "
/
"๊ฐ ์์ต๋๋ค. ์ด๋ ์์ ์์์ ๋ณผ ์ ์์ต๋๋ค. ๊ฐ ์ฌ๋ ํ๊ทธ์๋ ํด๋นํ๋ ๋ซ๋ ํ๊ทธ๊ฐ ์์ด์ผ ํฉ๋๋ค. ํ์ผ์ ๊ฐ ์์์ ๋ํ ์ค๋ช
์ด ์์๋๊ณ ๋๋๋ ์์น๋ฅผ ๋ณด์ฌ์ค๋๋ค. ํ๊ทธ๋ ์ค์ฒฉ๋ ์ ์์ต๋๋ค!
์ฑ
์์์ <book> ํ๊ทธ์๋
<title> ,
<author> ๋ฐ
<year> ์ 3๊ฐ ํ์ ํ๊ทธ๊ฐ ์์ต๋๋ค . ์ด๋ ํ ์์ค์ผ๋ก ์ ํ๋์ง ์์ต๋๋ค. ํ์ ํ๊ทธ๋ ์์ฒด ํ์ ํ๊ทธ ๋ฑ์ ๊ฐ์ง ์ ์์ต๋๋ค. ์ด ๋์์ธ์ ํ๊ทธ ํธ๋ฆฌ๋ผ๊ณ ํฉ๋๋ค. ์๋์ฐจ ๋๋ฆฌ์ ์ ๋ํ ์ค๋ช
์ด ํฌํจ๋ XML ํ์ผ์ ์๋ฅผ ์ฌ์ฉํ์ฌ ํธ๋ฆฌ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
<?xml version="1.0" encoding="UTF-8"?>
<carstore>
<car category="truck">
<model lang="en">Scania R 770</model>
<year>2005</year>
<price currency="US dollar">200000.00</price>
</car>
<car category="sedan">
<title lang="en">Ford Focus</title>
<year>2012</year>
<price currency="US dollar">20000.00</price>
</car>
<car category="sport">
<title lang="en">Ferrari 360 Spider</title>
<year>2018</year>
<price currency="US dollar">150000.00</price>
</car>
</carstore>
์ฌ๊ธฐ์๋ ์ต์์ ํ๊ทธ์ธ
<carstore> ๊ฐ ์์ต๋๋ค . ๋ฃจํธ ํ๊ทธ๋ผ๊ณ ๋ ํฉ๋๋ค. <carstore>์๋ <car>๋ผ๋ ํ์ ํ๊ทธ๊ฐ ํ๋ ์์ต๋๋ค. <car>์๋ <model>, <year>, <price>๋ผ๋ 3๊ฐ์ ํ์ ํ๊ทธ๋ ์์ต๋๋ค. ๊ฐ ํ๊ทธ์๋ ์์ฑ(์ถ๊ฐ ์ค์ํ ์ ๋ณด)์ด ์์ ์ ์์ต๋๋ค. ์ด ์์์ <model> ํ๊ทธ์๋ ๋ชจ๋ธ ์ด๋ฆ์ด ์์ฑ๋๋ ์ธ์ด์ธ "lang" ์์ฑ์ด ์์ต๋๋ค.
<model lang="en">Scania R 770</model>
์ด๋ ๊ฒ ํ๋ฉด ์ ๋ชฉ์ด ์์ด๋ก ์์ฑ๋์์์ ๋ํ๋ผ ์ ์์ต๋๋ค. <price> ํ๊ทธ์๋ "currency" ์์ฑ์ด ์์ต๋๋ค.
<price currency="US dollar">150000.00</price>
์ด๋ฐ ์์ผ๋ก ์ฐ๋ฆฌ๋ ์๋์ฐจ ๊ฐ๊ฒฉ์ด ๋ฏธ๊ตญ ๋ฌ๋ฌ๋ก ๋์ด ์์์ ๋ํ๋ผ ์ ์์ต๋๋ค. ๋ฐ๋ผ์
XML์๋ "์์ฒด ์ค๋ช
" ๊ตฌ๋ฌธ์ด ์์ต๋๋ค . ๋ฐ์ดํฐ๋ฅผ ์ค๋ช
ํ๋ ๋ฐ ํ์ํ ์ ๋ณด๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. XML ๋ฒ์ ๊ณผ ๋ฐ์ดํฐ๊ฐ ๊ธฐ๋ก๋๋ ์ธ์ฝ๋ฉ์ ๋ํ๋ด๋ ์ค์ ํ์ผ ์์ ๋ถ๋ถ์ ์ถ๊ฐํ ์๋ ์์ต๋๋ค.
" ํ๋กค๋ก๊ทธ " ๋ผ๊ณ ํ๋ฉฐ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
<?xml version="1.0" encoding="UTF-8"?>
์ฐ๋ฆฌ๋ XML ๋ฒ์ 1.0๊ณผ UTF-8 ์ธ์ฝ๋ฉ์ ์ฌ์ฉํฉ๋๋ค. ์ด๋ ํ์๋ ์๋์ง๋ง, ์๋ฅผ ๋ค์ด ํ์ผ์์ ๋ค๋ฅธ ์ธ์ด๋ก ๋ ํ
์คํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ ์ฉํ ์ ์์ต๋๋ค. XML์ด "ํ์ฅ ๊ฐ๋ฅํ ๋งํฌ์
์ธ์ด"๋ฅผ ์๋ฏธํ๋ค๊ณ ์ธ๊ธํ๋๋ฐ "ํ์ฅ ๊ฐ๋ฅ"์ด๋ ๋ฌด์์ ์๋ฏธํฉ๋๊น? ์ด๋ ๊ฐ์ฒด์ ํ์ผ์ ์ ๋ฒ์ ์ ๋ง๋๋ ๋ฐ ์๋ฒฝํ๊ฒ ์ ํฉํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฐ๋ฆฌ๋ ์๋์ฐจ ์ผ๋ฃธ์์ ์คํ ๋ฐ์ด๋ ํ๋งคํ๊ธฐ๋ฅผ ์ํฉ๋๋ค! ๋์์ ํ๋ก๊ทธ๋จ์์๋ <carstore>์ ๋ ๊ฐ์ง ๋ฒ์ (์คํ ๋ฐ์ด๊ฐ ์๋ ๋ฒ์ )๊ณผ ์ ๋ฒ์ ์ ๋ชจ๋ ์ง์ํด์ผ ํฉ๋๋ค. ์ด์ ๋ฒ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
<?xml version="1.0" encoding="UTF-8"?>
<carstore>
<car category="truck">
<model lang="en">Scania R 770</model>
<year>2005</year>
<price currency="US dollar">200000.00</price>
</car>
<car category="sedan">
<title lang="en">Ford Focus</title>
<year>2012</year>
<price currency="US dollar">20000.00</price>
</car>
<car category="sport">
<title lang="en">Ferrari 360 Spider</title>
<year>2018</year>
<price currency="US dollar">150000.00</price>
</car>
</carstore>
์๋กญ๊ฒ ํ์ฅ๋ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
<?xml version="1.0" encoding="UTF-8"?>
<carstore>
<car category="truck">
<model lang="en">Scania R 770</model>
<year>2005</year>
<price currency="US dollar">200000.00</price>
</car>
<car category="sedan">
<title lang="en">Ford Focus</title>
<year>2012</year>
<price currency="US dollar">20000.00</price>
</car>
<car category="sport">
<title lang="en">Ferrari 360 Spider</title>
<year>2018</year>
<price currency="US dollar">150000.00</price>
</car>
<motorcycle>
<title lang="en">Yamaha YZF-R6</title>
<year>2018</year>
<price currency="Russian Ruble">1000000.00</price>
<owner>Vasia</owner>
</motorcycle>
<motorcycle>
<title lang="en">Harley Davidson Sportster 1200</title>
<year>2011</year>
<price currency="Euro">15000.00</price>
<owner>Petia</owner>
</motorcycle>
</carstore>
๊ทธ๋์ ์ฝ๊ณ ๊ฐ๋จํ๊ฒ ์คํ ๋ฐ์ด์ ๋ํ ์ค๋ช
์ ํ์ผ์ ์ถ๊ฐํ์ต๋๋ค. :) ๋์์ ์คํ ๋ฐ์ด์ ๋ํด ์๋์ฐจ์ ๋์ผํ ํ์ ํ๊ทธ๋ฅผ ์ค์ ํ ํ์๋ ์ ํ ์์ต๋๋ค. ์๋์ฐจ์ ๋ฌ๋ฆฌ ์คํ ๋ฐ์ด์๋ <owner> ์์, ์ฆ ์์ ์๊ฐ ์๋ค๋ ์ ์ ์ ์ํ์ธ์. ์ด๋ ์ปดํจํฐ(๋๋ ์ฌ๋)๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ๊ฒ์ ๋ฐฉํดํ์ง ์์ต๋๋ค.
XML๊ณผ HTML์ ์ฐจ์ด์
์ฐ๋ฆฌ๋ ์ด๋ฏธ XML๊ณผ HTML์ด ์ธ๊ด์ ๋งค์ฐ ์ ์ฌํ๋ค๊ณ ๋งํ์ต๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๊ทธ๋ค์ด ์ด๋ป๊ฒ ๋ค๋ฅธ์ง ์๋ ๊ฒ์ด ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ฒซ์งธ, ๊ทธ๋ค์ ๋ค๋ฅธ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
HTML - ์นํ์ด์ง๋ฅผ ๋งํฌ์
ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ์น ์ฌ์ดํธ๋ฅผ ๋ง๋ค์ด์ผ ํ๋ ๊ฒฝ์ฐ HTML์ ์ฌ์ฉํ์ฌ ๋ค์๊ณผ ๊ฐ์ด ์ง์ ํ ์ ์์ต๋๋ค. โ๋ฉ๋ด๋ ์ค๋ฅธ์ชฝ ์๋จ์ ์์ด์ผ ํฉ๋๋ค. ์ด๋ฐ ์ ๋ฐ ๋ฒํผ์ด ์์ด์ผ ํด์.โ ์ฆ, HTML์ ๋ชฉ์ ์ ๋ฐ์ดํฐ๋ฅผ ํ์ํ๋ ๊ฒ์
๋๋ค. XML - ์ธ๊ฐ๊ณผ ์ปดํจํฐ์ ํธ๋ฆฌํ ํ์์ผ๋ก
์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ์ ์กํฉ๋๋ค . ์ด ํ์์๋ ์ด ๋ฐ์ดํฐ๊ฐ ํ์๋๋ ๋ฐฉ๋ฒ์ ๋ํ ์ง์นจ์ด ํฌํจ๋์ด ์์ง ์์ต๋๋ค. ์ด๋ ํ๋ก๊ทธ๋จ ์์ฒด์ ์ฝ๋์ ๋ฐ๋ผ ๋ค๋ฆ
๋๋ค. ๋์งธ, ์ฃผ์ ๊ธฐ์ ์ ์ฐจ์ด๊ฐ ์์ต๋๋ค. HTML ํ๊ทธ๋ ๋ฏธ๋ฆฌ ์ ์๋์ด ์์ต๋๋ค. ์ฆ, ์ ๋ชฉ(์: ํ์ด์ง ์์ ๋ถ๋ถ์ ํฐ ๋น๋ฌธ)์ ๋ง๋ค๋ ค๋ฉด HTML์์ <h1></h1> ํ๊ทธ๋ง ์ฌ์ฉ๋ฉ๋๋ค(๋ ์์ ์ ๋ชฉ์ ๊ฒฝ์ฐ - <h2></h2>, < h3></h3>). ๋ค๋ฅธ ์ ๋ชฉ์ ๊ฐ์ง ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ HTML์์ ์ ๋ชฉ์ ๋ง๋ค ์ ์์ต๋๋ค. XML์ ๋ฏธ๋ฆฌ ์ ์๋ ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค. <header>, <title>, <idontknow2121> ๋ฑ ์ํ๋ ์ด๋ฆ์ ํ๊ทธ์ ์ง์ ํ ์ ์์ต๋๋ค.
๊ฐ๋ฑ ํด๊ฒฐ
XML์ด ์ ๊ณตํ๋ ์์ ๋ก์์ ๋ช ๊ฐ์ง ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํ ์๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋์ผํ ์ํฐํฐ(์: ์๋์ฐจ)๊ฐ ํ๋ก๊ทธ๋จ์์ ๋ค๋ฅธ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๊ธฐ๊ณ๋ฅผ ์ค๋ช
ํ๋ XML ํ์ผ์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ ํ๋ก๊ทธ๋๋จธ๋ค์ ์ฌ์ ์ ์๋ก ๋์ํ์ง ์์์ต๋๋ค. ์ด์ XML์๋ ์ค์ ์๋์ฐจ์ ๋ฐ์ดํฐ ์ธ์๋ ์ฅ๋๊ฐ ๋ชจ๋ธ์ ๋ฐ์ดํฐ๋ ํฌํจ๋ฉ๋๋ค! ๊ฒ๋ค๊ฐ ๊ทธ๋ค์ ๋์ผํ ์์ฑ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ฐ๋ฆฌ ํ๋ก๊ทธ๋จ์ ๋ค์ XML ํ์ผ์ ๋ฐ์ต๋๋ค. ์ฅ๋๊ฐ ๋ชจ๋ธ๊ณผ ์ค์ ์๋์ฐจ๋ฅผ ์ด๋ป๊ฒ ๊ตฌ๋ณํ ์ ์๋์?
<?xml version="1.0" encoding="UTF-8"?>
<carstore>
<car category="truck">
<model lang="en">Scania R 770</model>
<year>2005</year>
<price currency="US dollar">200000.00</price>
</car>
<car category="sedan">
<title lang="en">Ford Focus</title>
<year>2012</year>
<price currency="US dollar">100.00</price>
</car>
</carstore>
์ฌ๊ธฐ์๋ ์ ๋์ฌ์ ๋ค์์คํ์ด์ค๊ฐ ๋์์ด ๋ ๊ฒ์
๋๋ค. ์ฐ๋ฆฌ ํ๋ก๊ทธ๋จ์์ ์ฅ๋๊ฐ ์๋์ฐจ์ ์ค์ ์๋์ฐจ(๊ทธ๋ฆฌ๊ณ ์ผ๋ฐ์ ์ผ๋ก ์ค์ ํ๋กํ ํ์
์ ์ฅ๋๊ฐ)๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํด "์ค์ "์ "์ฅ๋๊ฐ"์ด๋ผ๋ ๋ ๊ฐ์ง ์ ๋์ฌ๋ฅผ ๋์
ํฉ๋๋ค.
<real:car category="truck">
<model lang="en">Scania R 770</model>
<year>2005</year>
<price currency="US dollar">200000.00</price>
</real:car>
<toy:car category="sedan">
<title lang="en">Ford Focus</title>
<year>2012</year>
<price currency="US dollar">100.00</price>
</toy:car>
์ด์ ์ฐ๋ฆฌ ํ๋ก๊ทธ๋จ์ ์ํฐํฐ๋ฅผ ๊ตฌ๋ณํ ์ ์์ต๋๋ค! ์ฅ๋๊ฐ ์ ๋์ฌ๊ฐ ๋ถ์ ๊ฒ์ ๋ฌด์์ด๋ ์ฅ๋๊ฐ์ผ๋ก ๋ถ๋ฅ๋ฉ๋๋ค :) ํ์ง๋ง ์์ง ๋๋์ง ์์์ต๋๋ค. ์ ๋์ฌ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๊ฐ ์ ๋์ฌ๋ฅผ ๋ค์์คํ์ด์ค๋ก ๋ฑ๋กํด์ผ ํฉ๋๋ค. ๊ธ์, ์ฌ์ค "๋ฑ๋ก"์ ๊ฐํ ๋จ์ด์
๋๋ค :) ๊ฐ๊ฐ์ ๋ํด ๊ณ ์ ํ ์ด๋ฆ์ ์๊ฐํ๋ฉด ๋ฉ๋๋ค. ํด๋์ค์ ๋น์ทํฉ๋๋ค. ํด๋์ค์๋ ์งง์ ์ด๋ฆ(
Cat
)๊ณผ ๋ชจ๋ ํจํค์ง์ ์ ์ฒด ์ด๋ฆ(
zoo.animals.Cat
) ์ด ์์ต๋๋ค
. ๊ณ ์ ํ ๋ค์์คํ์ด์ค๋ฅผ ๋ง๋ค๋ ค๋ฉด ์ผ๋ฐ์ ์ผ๋ก URI๊ฐ ์ฌ์ฉ๋ฉ๋๋ค . ๋๋๋ก ์ธํฐ๋ท ์ฃผ์๊ฐ ์ฌ๊ธฐ์์ ๋์ฒด๋๋ฉฐ, ์ฌ๊ธฐ์ ์ด ๋ค์์คํ์ด์ค์ ๊ธฐ๋ฅ๊ณผ ๋ชฉ์ ์ด ์์ธํ ์ค๋ช
๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ด ์ ํจํ ์ธํฐ๋ท ์ฃผ์์ผ ํ์๋ ์์ต๋๋ค. ํ๋ก์ ํธ์์๋ ๋ค์์คํ์ด์ค์ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ์ถ์ ํ๋ ๋ฐ ๋์์ด ๋๋ URI์ ๊ฐ์ ๋ฌธ์์ด์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
<?xml version="1.0" encoding="UTF-8"?>
<carstore xmlns:real="http://testproject.developersgroup1.companyname/department2/namespaces/real"
xmlns:toy="http://testproject.developersgroup1.companyname/department2/namespaces/toy">
<real:car category="truck">
<model lang="en">Scania R 770</model>
<year>2005</year>
<price currency="US dollar">200000.00</price>
</real:car>
<toy:car category="sedan">
<title lang="en">Ford Focus</title>
<year>2012</year>
<price currency="US dollar">100.00</price>
</toy:car>
</carstore>
๋ฌผ๋ก , ์ธํฐ๋ท ์ฃผ์ http://testproject.developersgroup1.companyname/department2/namespaces/real ์๋ ์ฌ์ดํธ๊ฐ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ ์ฉํ ์ ๋ณด๊ฐ ์์ต๋๋ค. "department2" ๋ถ์์ ๊ฐ๋ฐ์ ๊ทธ๋ฃน "developersgroup1"์ด ์์ฑ์ ๋ด๋นํฉ๋๋ค. "์ค์ " ๋ค์์คํ์ด์ค. ์๋ก์ด ์ด๋ฆ์ ์ถ๊ฐํด์ผ ํ๊ฑฐ๋ ์ด๋ฆ๊ณผ์ ์ถฉ๋ ๊ฐ๋ฅ์ฑ์ ๋ํด ๋
ผ์ํด์ผ ํ๋ ๊ฒฝ์ฐ ์ฐ๋ฆฌ๋ ์ด๋๋ก ๊ฐ์ผ ํ ์ง ์๊ณ ์์ต๋๋ค. ๋๋๋ก ์ด ๋ค์์คํ์ด์ค์ ๋ํ ์ค๋ช
์ด ํฌํจ๋ ์ค์ ์ธํฐ๋ท ์ฃผ์๊ฐ ๋ค์์คํ์ด์ค์ ๊ณ ์ ์ด๋ฆ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋๊ธฐ์
์ด๊ณ ํด๋น ํ๋ก์ ํธ๊ฐ ์ ์ธ๊ณ ์๋ฐฑ๋ง ๋ช
์ ์ฌ๋๋ค์ด ์ฌ์ฉํ ๊ฒฝ์ฐ์
๋๋ค.
ํ์ง๋ง ํญ์ ๊ทธ๋ฐ ๊ฒ์ ์๋๋๋ค. Stackoverflow ์ ์ด ๋ฌธ์ ์ ๋ํ ํ ๋ก ์ด ์์ต๋๋ค . ์์น์ ์ผ๋ก URI๋ฅผ ๋ค์์คํ์ด์ค์ ์ด๋ฆ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํ ์๊ตฌ ์ฌํญ์ ์๊ฒฉํ์ง ์์ต๋๋ค. ์์์ ๋ฌธ์์ด์ ์ฌ์ฉํด๋ ๋ฉ๋๋ค. ์ด ์ต์
์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ ์๋ํฉ๋๋ค.
xmlns:real="nvjneasiognipni4435t9i4gpojrmeg"
๊ทธ๋ฌ๋ URI๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ๋ฌ ๊ฐ์ง ์ฅ์ ์ด ์์ต๋๋ค.
์ด์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ฌ๊ธฐ์์ ์ฝ์ ์ ์์ต๋๋ค .
๊ธฐ๋ณธ XML ํ์ค
XML ํ์ค์ xml ํ์ผ์ ์ถ๊ฐ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ํ์ฅ ์งํฉ์
๋๋ค. XML์๋ ๋ง์ ํ์ค์ด ์์ง๋ง ๊ฐ์ฅ ์ค์ํ ํ์ค๋ง ์ดํด๋ณด๊ณ ๊ฐ์ฅ ์ ๋ช
ํ XML ํ์ค ์ค ํ๋์ธ
AJAX๊ฐ ์ด๋ค ์์
์ ์ํํ ์ ์๋์ง ์์๋ณด๊ฒ ์ต๋๋ค. ์นํ์ด์ง๋ฅผ ๋ค์ ๋ก๋ํ์ง ์๊ณ ๋ ์ฝํ
์ธ ๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค! ๋ฉ์ง๋ฐ?
:) ์ด ๊ธฐ์ ์ ์ฌ๊ธฐ ์์ ์ง์ ์ฌ์ฉํด ๋ณผ ์ ์์ต๋๋ค .
XSLT - XML โโํ
์คํธ๋ฅผ ๋ค๋ฅธ ํ์์ผ๋ก ๋ณํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด XSLT๋ฅผ ์ฌ์ฉํ๋ฉด XML์ HTML๋ก ๋ณํํ ์ ์์ต๋๋ค! ์ด๋ฏธ ๋งํ๋ฏ์ด XML์ ๋ชฉ์ ์ ๋ฐ์ดํฐ๋ฅผ ํ์ํ๋ ๊ฒ์ด ์๋๋ผ ๋ฐ์ดํฐ๋ฅผ ์ค๋ช
ํ๋ ๊ฒ์
๋๋ค. ๊ทธ๋ฌ๋ XSLT๋ฅผ ์ฌ์ฉํ๋ฉด ์ด ์ ํ์ ์ฐํํ ์ ์์ต๋๋ค!
๋ค์์ ์๋ ๋ฐฉ์์ ์ง์ ํ์ธํ ์ ์๋ ์์
์์ ๊ฐ ํฌํจ๋ ์๋๋ฐ์ค์
๋๋ค. :)
XML DOM - XML โโํ์ผ์์ ๊ฐ๋ณ ์์๋ฅผ ๊ฐ์ ธ์ค๊ณ , ๋ณ๊ฒฝํ๊ณ , ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ ์ ์์ต๋๋ค. ๋ค์์ ์๋ ๋ฐฉ์์ ๋ํ ์์ ์์
๋๋ค. books.xml ํ์ผ์ด ์์ต๋๋ค:
<bookstore>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="children">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
</bookstore>
๊ทธ ์์ ์ฑ
์ด ๋ ๊ถ ์์ด์. ์ฑ
์๋ ์ ๋ชฉ(<์ ๋ชฉ>)๊ณผ ๊ฐ์ ์์๊ฐ ์์ต๋๋ค. ์ฌ๊ธฐ์๋ JavaScript๋ฅผ ์ฌ์ฉํ์ฌ XML ํ์ผ์์ ๋ชจ๋ ์ฑ
์ ๋ชฉ์ ๊ฐ์ ธ์์ ์ฒซ ๋ฒ์งธ ์ ๋ชฉ์ ์ฝ์์ ์ถ๋ ฅํ ์ ์์ต๋๋ค.
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myFunction(this);
}
};
xhttp.open("GET", "books.xml", true);
xhttp.send();
function myFunction(xml) {
var xmlDoc = xml.responseXML;
document.getElementById("demo").innerHTML =
xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;
}
</script>
</body>
</html>
๋ค์ ํ ๋ฒ ์๋๋ฐ์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ด ์์ ๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง ํ์ธํ๋ ๊ฒ์ด ์ข์ต๋๋ค. DTD
( "๋ฌธ์ ์ ํ ์ ์") - XML โโํ์ผ์ ์ผ๋ถ ์ํฐํฐ์ ๋ํด ํ์ฉ๋๋ ์์ ๋ชฉ๋ก์ ์ ์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ฐ๋ฆฌ๋ ์์ ์น โโ์ฌ์ดํธ์์ ์์
ํ๊ณ ์์ผ๋ฉฐ ๋ชจ๋ ๊ฐ๋ฐ ํ์ book ์์์ ๊ฒฝ์ฐ ์ ๋ชฉ, ์ ์ ๋ฐ ์ฐ๋ ์์ฑ๋ง XML ํ์ผ์ ์ง์ ํด์ผ ํ๋ค๋ ๋ฐ ๋์ํ์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ถ์ฃผ์๋ก๋ถํฐ ์์ ์ ์ด๋ป๊ฒ ๋ณดํธํ ์ ์์ต๋๊น? ์์ฃผ ์ฝ๊ฒ!
<?xml version="1.0"?>
<!DOCTYPE book [
<!ELEMENT book (title,author,year)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT year (#PCDATA)>
]>
<book>
<title>The Lord of The Rings</title>
<author>John R.R. Tolkien</author>
<year>1954</year>
</book>
์ฌ๊ธฐ์๋ <book>์ ๋ํ ์ ํจํ ์์ฑ ๋ชฉ๋ก์ ์ ์ํ์ต๋๋ค. ๊ฑฐ๊ธฐ์ ์ ์์๋ฅผ ์ถ๊ฐํ๋ ค๊ณ ํ๋ฉด ์ฆ์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค!
<book>
<title>The Lord of The Rings</title>
<author>John R.R. Tolkien</author>
<year>1954</year>
<mainhero>Frodo Baggins</mainhero>
</book>
์ค๋ฅ! โ์ฌ๊ธฐ์์๋ ์์ mainhero๊ฐ ํ์ฉ๋์ง ์์ต๋๋ค.โ ๋ค๋ฅธ ๋ง์ XML ํ์ค์ด ์์ต๋๋ค.
๊ฐ๊ฐ์ ๋ํด ์์๋ณด๊ณ WC3 ์น์ฌ์ดํธ ("์ค์ XML ํ์ค" ์น์
) ์์ ์ฝ๋๋ฅผ ๋ ์์ธํ ์์๋ณผ ์ ์์ต๋๋ค . ๊ทธ๋ฆฌ๊ณ ์ผ๋ฐ์ ์ผ๋ก XML์ ๋ํ ์ ๋ณด๊ฐ ํ์ํ๋ฉด ๊ฑฐ๊ธฐ์์ ๊ฑฐ์ ๋ชจ๋ ๊ฒ์ ์ฐพ์ ์ ์์ต๋๋ค :) ์, ์ฐ๋ฆฌ ๊ฐ์๊ฐ ๋๋ฌ์ต๋๋ค. ์ด์ ์์
์ผ๋ก ๋์๊ฐ ์๊ฐ์
๋๋ค! :) ๋ ๋ด์!
GO TO FULL VERSION