<?xml version="1.0" encoding="UTF-8"?>
<page xmlns="http://api.springnote.com">
  <identifier type="integer">1307938</identifier>
  <title>Tabla - &#44036;&#45800;&#54620; &#53468;&#44536; &#44592;&#48152; &#53596;&#54540;&#47551; &#50976;&#54008;&#47532;&#54000; </title>
  <relation_is_part_of type="integer">1307936</relation_is_part_of>
  <date_modified type="datetime">2008-06-06T17:19:02Z</date_modified>
  <uri>http://anarch.springnote.com/pages/1307938</uri>
  <date_created type="datetime">2008-06-06T13:55:00Z</date_created>
  <source>&lt;p&gt;Tabla&#45716; &#44036;&#45800;&#54620; &#53468;&#44536; &#44592;&#48152;&#51032; &#53596;&#54540;&#47551; &#50976;&#54008;&#47532;&#54000;&#51077;&#45768;&#45796;. &amp;nbsp;&#52968;&#53584;&#52768;&#51032; &#53945;&#51221;&#48512;&#48516;&#51012; &#47560;&#53356;&#50629;&#51012; &#51060;&#50857;&#54616;&#50668; &#52968;&#53584;&#52768;&#51032; &#45236;&#50857;&#51012; &#44032;&#44277;&#54616;&#44592; &#50948;&#54644;&#49436; &#51089;&#49457;&#54664;&#50632;&#49845;&#45768;&#45796;. :-)&lt;/p&gt;
&lt;h3&gt;&#44036;&#45800;&#54620; &#50696;&#51228;&lt;/h3&gt;
&lt;ol class="code"&gt;
&lt;li&gt;Tags tags = new Tags();&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;tags.addTag(new NamedTag() {&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; public String execute(ParseTag pt,TagContext tc) {&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; return "hello world!";&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; public String tagName() { return "t:hello"; }&amp;nbsp;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;};&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Parser p = new Parser(tags);&lt;/li&gt;
&lt;li&gt;String result = p.parse("&amp;lt;t:hello /&amp;gt;");&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;gt;&amp;gt; hello world!&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;&#53364;&#47000;&#49828;&#46308;&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;1. Tag - &#53468;&#44536;&#51032; &#51064;&#53552;&#54168;&#51060;&#49828;. &amp;nbsp;&#53468;&#44536;&#51032; &#54665;&#46041;&#51012; &#51221;&#51032;&#54633;&#45768;&#45796;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;2. NamedTag - &#53468;&#44536;(Tag)&#51032; &#51064;&#53552;&#54168;&#51060;&#49828; &#49345;&#49549;. &amp;nbsp;&#53468;&#44536;&#51060;&#47492;(tagName)&#51012; &#46321;&#47197;&#54624;&#49688; &#51080;&#49845;&#45768;&#45796;.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;3. Tags - &#53468;&#44536;&#46308;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;4. TagBinding - &#54028;&#49905;&#46108; &#52968;&#53584;&#52768;(Parse)&#50752; Tag&#51012; &#48148;&#51064;&#46377;(Binding)&#54616;&#45716; &#52293;&#51076;&#51060; &#51080;&#49845;&#45768;&#45796;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;5. TagContext - &#50808;&#48512; &#54872;&#44221;&#51060;&#45208; &#53468;&#44536; &#44036;&#51032; &#47928;&#47589;&#51201;&#51004;&#47196; &#44050;&#51012; &#51204;&#45804;&#54624;&#46412; &#49324;&#50857;&#46121;&#45768;&#45796;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;6. Parse - &#54028;&#49905;&#46108; &#52968;&#53584;&#52768;(Parse)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;7. ParseTag &amp;nbsp;- &#54028;&#49905;&#46108; &#52968;&#53584;&#52768;&#51473; &#53468;&#44536; &#51221;&#48372;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;8. Parser - &#54028;&#49436;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;9. ParseFailureException - &#54028;&#49905; &#49892;&#54056; &#50696;&#50808; &#49345;&#54889;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;10. utils.ParseTagRemover - &#53468;&#44536; &#49884;&#44536;&#45768;&#52376; &#51228;&#44144;&#51088; &#50976;&#54008;&#47532;&#54000;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;&#53468;&#44536; &#51221;&#51032; &#54616;&#44592;&lt;/h3&gt;
&lt;p&gt;&#53468;&#44536;&#47484; &#51221;&#51032;&#54616;&#45716; &#44148; &#47588;&#50864; &#49789;&#49845;&#45768;&#45796;. Tag,NamedTag&#51012; &#44396;&#54788;&#54616;&#47732; &#46121;&#45768;&#45796;.&amp;nbsp;&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;Tag t = new Tag() {&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; public String execute(ParseTag pt,TagContext tc) {&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return pt.getContent();&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; }&lt;/li&gt;
&lt;li&gt;};&lt;/li&gt;
&lt;li&gt;Tags tags = new Tags();&amp;nbsp;&lt;/li&gt;
&lt;li&gt;tags.addTag("t:*",t);&lt;/li&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#50948;&#51032; &#53076;&#46300;&#45716; t:&#51004;&#47196; &#49884;&#51089;&#54616;&#45716; &#47784;&#46304; &#53468;&#44536;&#50640; &#48152;&#51025;&#54616;&#44172; &#46121;&#45768;&#45796;. &#47932;&#47200; &amp;nbsp;ParseTag.getTagName()&#51004;&#47196;&#45716; &#51221;&#54869;&#54620; &#53468;&#44536; &#51060;&#47492;&#51012; &#50619;&#51012;&#49688; &#51080;&#49845;&#45768;&#45796;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;&#54028;&#49905;&#46108; &#52968;&#53584;&#52768;&#51032; &#53468;&#44536;&#51221;&#48372; - ParseTag&lt;/h3&gt;
&lt;p&gt;&#47784;&#46304; &#53468;&#44536;&#45716; ParseTag&#50752; TagContext&#51060;&#46972;&#45716; &#54028;&#46972;&#48120;&#53552; &#44061;&#52404;&#47484; &#50619;&#44172; &#46121;&#45768;&#45796;. ParseTag&#51008; Parser&#44032; &#54028;&#49905;&#54620; &#52968;&#53584;&#52768;&#51473;&#50640; &#54788;&#51116; &#53468;&#44536;&#50640; &#54644;&#45817;&#54616;&#45716; &#50689;&#50669;&#51012; ParseTag&#50640; &#45812;&#50500;&#49436; &#51204;&#45804;&#54616;&#44172; &#46121;&#45768;&#45796;. &amp;nbsp;&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;class NewsDataTag implements NamedTag {&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp;public NewsDataTag(NewsDataService newsDataService) {&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; this.newsDataService = newsDataService;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp;}&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp;public String execute(ParseTag pt,TagContext tc) {&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;String size = pt.getTagAttrMap("size");&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; String category = pt.getTagAttrMap("category");&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; List&amp;lt;NewsData&amp;gt; newsData = newsDataService.findBy(size,category);&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; return newsData.toBuildHtml();&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp;}&lt;/li&gt;
&lt;li&gt;}&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;&#53468;&#44536;&#51032; &#44544;&#47196;&#48268; &#50689;&#50669;? - TagContext&lt;/h3&gt;
&lt;p&gt;&#53468;&#44536;&#50752; &#53468;&#44536;(&#51473;&#52393;&#46108; &#53468;&#44536; &#46321;&#46321;)&#45208; &#53468;&#44536;&#47484; &#49892;&#54665;&#51473;&#51004;&#47196; &#44050;&#51012; &#51204;&#45804;&#54624;&#46412;&#44032; &#51080;&#49845;&#45768;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;tags.add("t:container",new Tag() {&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp;public String execute(ParseTag pt,TagContext tc) {&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; ...&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; for(Item item : items) {&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; tc.addLocalAttribute("itemTitle",item.getTitle());&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; tc.addLocalAttribute("itemUrl",item.getUrl());&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; result.append(pt.getContent());&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; tc.clearLocalAttibutes();&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; return result.toString();&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp;}&amp;nbsp;&lt;/li&gt;
&lt;li&gt;});&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;tags.add("t:itemTitle",new Tag() {&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; public String execute(ParseTag pt,TagContext tc) {&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String itemTitle = (String) tc.getLocalAttribute("itemTitle");&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if(itemTitle != null) {&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return itemTitle;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return pt.getContent();&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;}&lt;/li&gt;
&lt;li&gt;});&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;items: a,b,c&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;lt;t:containter &amp;gt;&amp;lt;t:itemTitle /&amp;gt;,&amp;lt;/t:container&amp;gt; &amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;gt;&amp;gt; a,b,c,&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;&#44592;&#53440;&lt;/h3&gt;
&lt;p&gt;&#47952; &#44536;&#47532; &#51096; &#47564;&#46308;&#50632;&#45796;&#44144; &#44536;&#47088;&#44148; &#50500;&#45768;&#51648;&#47564;. &#44536;&#47532;&#44256; &#47564;&#46304;&#51648; &#47751;&#45804;&#51060; &#51648;&#45208;&#49436; &#44536;&#45797; &#47672;&#47532;&#49549;&#50640; &#45224;&#50500; &#51080;&#45716; &#44163;&#51060; &#48324;&#47336; &#50630;&#44596; &#54616;&#45348;&#50836;. &#51328;&#45908; &#49688;&#51221;&#54624;&#44163;&#51008; &#47566;&#51008; &#46319; &#54633;&#45768;&#45796;&#47564;. :-)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="/pages/1307938/attachments/561764" title="tabla-0.0.2-sources.jar" class="attachment"&gt;tabla-0.0.2-sources.jar&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="/pages/1307938/attachments/561764" title="tabla-0.0.2-sources.jar" class="attachment"&gt;&lt;/a&gt;&lt;a href="/pages/1307938/attachments/561766" title="tabla-0.0.2.jar" class="attachment"&gt;tabla-0.0.2.jar&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
</source>
  <rights>by-nc-nd</rights>
  <creator>http://anarch.myid.net/</creator>
  <contributor_modified>http://anarch.myid.net/</contributor_modified>
  <version type="integer">102</version>
  <tags>blog</tags>
</page>
