¹öÀü 2.1 - 2003³â 3¿ù 17ÀÏ ÃÖÁ¾ °³Á¤ÆÇ
¾Æ·¡ÀÇ Manifest ¸¶Å©¾÷ Á¤ÀÇ¿¡¼´Â ´Ù¾çÇÑ À̸§ ÁöÁ¤ ÅäÅ« ¹× ID¸¦ »ç¿ëÇÕ´Ï´Ù. ¸ðÈ£¼ºÀ» ¾ø¾Ö±â À§ÇØ ÀÌ·¯ÇÑ À̸§ ÁöÁ¤ ÅäÅ« ¹× ID¿¡´Â ¸î °¡Áö Á¦Ç° ±ÔÄ¢ÀÌ Àû¿ëµË´Ï´Ù(¾Æ·¡ ÅØ½ºÆ® ÂüÁ¶). ÀϹÝÀûÀ¸·Î ¸ðµç ID´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÕ´Ï´Ù.
SimpleToken := sequence of characters from ('a-z','A-Z','0-9') ComposedToken := SimpleToken | (SimpleToken '.' ComposedToken) JavaClassName := ComposedToken PlugInId := ComposedToken PlugInPrereq := PlugInId | 'export' PlugInId ExtensionId := SimpleToken ExtensionPointId := SimpleToken ExtensionPointReference := ExtensionPointID | (PlugInId '.' ExtensionPointId)
ÀÌ ÀýÀÇ ³ª¸ÓÁö ºÎºÐ¿¡¼´Â plugin.xml ÆÄÀÏ ±¸Á¶¸¦ ÀÏ·ÃÀÇ DTD ´ÜÆíÀ¸·Î ¼³¸íÇÕ´Ï´Ù. plugin.dtd ÆÄÀÏ¿¡¼´Â Àüü DTD Á¤ÀǸ¦ º¼ ¼ö ÀÖ½À´Ï´Ù.
<?xml encoding="US-ASCII"?> <!ELEMENT plugin (requires?, runtime?, extension-point*, extension*)> <!ATTLIST plugin name CDATA #REQUIRED id CDATA #REQUIRED version CDATA #REQUIRED provider-name CDATA #IMPLIED class CDATA #IMPLIED >
<plugin> ¿ä¼Ò´Â Manifest º»¹®À» Á¤ÀÇÇÕ´Ï´Ù. ÀÌ ¿ä¼Ò¿¡´Â Ç÷¯±×ÀÎ ·±Å¸ÀÓ¿¡ ´ëÇÑ Á¤ÀÇ, Ç÷¯±×Àο¡ ÀÇÇØ Á¦°øµÇ´Â »õ È®ÀåÁ¡ÀÇ ¼±¾ð»Ó¸¸ ¾Æ´Ï¶ó ±â´ÉÀû È®ÀåÀÇ ±¸¼º(´Ù¸¥ Ç÷¯±×Àο¡¼ Á¤ÀÇÇϰųª ÇØ´ç Ç÷¯±×Àο¡¼ Á¦°øÇÏ´Â È®ÀåÁ¡À¸·Î ±¸¼º)ÀÌ ¼±ÅÃÀûÀ¸·Î Æ÷ÇԵ˴ϴÙ. <plugin> ¼Ó¼ºÀº ´ÙÀ½°ú °°ÀÌ ±¸¼ºµË´Ï´Ù.
XML DTD ±¸¼º ±ÔÄ¢ element*´Â ÇØ´ç ¿ä¼Ò°¡ 0°³ ÀÌ»ó ¹ß»ýÇÔÀ» ÀǹÌÇÕ´Ï´Ù. element?´Â ÇØ´ç ¿ä¼Ò°¡ 0°³ ¶Ç´Â ÇÑ °³ ÀÌ»ó ¹ß»ýÇÔÀ» ÀǹÌÇÕ´Ï´Ù. ±×¸®°í element+(¾Æ·¡ ÂüÁ¶)´Â ÇØ´ç ¿ä¼Ò°¡ ÇÑ °³ ÀÌ»ó ¹ß»ýÇÔÀ» ÀǹÌÇÕ´Ï´Ù. µû¶ó¼, À§ÀÇ <plugin> Á¤ÀÇ¿¡ µû¸£´Â °æ¿ì ¿¹¸¦ µé¾î, ·±Å¸ÀÓ Á¤ÀǸ¸ Æ÷ÇԵǰí È®ÀåÁ¡ ¼±¾ðÀ̳ª È®Àå ±¸¼ºÀº Æ÷ÇÔµÇÁö ¾ÊÀº Ç÷¯±×ÀÎ(¿¹: ´Ù¸¥ Ç÷¯±×ÀÎÀÌ ÀÇÁ¸ÇÏ´Â °øÅë ¶óÀ̺귯¸®)Àº ¿Ã¹Ù¸¨´Ï´Ù. ¸¶Âù°¡Áö·Î, È®Àå ±¸¼º¸¸ Æ÷ÇԵǰí ÀÚüÀÇ ·±Å¸ÀÓÀ̳ª È®ÀåÁ¡Àº Æ÷ÇÔµÇÁö ¾ÊÀº Ç÷¯±×ÀÎ(¿¹: ´Ù¸¥ Ç÷¯±×Àο¡ Á¦°øµÈ Ŭ·¡½º¸¦ ´Ù¸¥ Ç÷¯±×Àο¡ ¼±¾ðµÈ È®ÀåÁ¡À¸·Î ±¸¼º)µµ ¿Ã¹Ù¸¨´Ï´Ù.
ManifestÀÇ <requires> ¼½¼Ç¿¡¼´Â ´Ù¸¥ Ç÷¯±×Àο¡ ´ëÇÑ Á¾¼Ó¼ºÀ» ¼±¾ðÇÕ´Ï´Ù.
<!ELEMENT requires (import+)>
<!ELEMENT import EMPTY>
<!ATTLIST import
plugin CDATA #REQUIRED
version CDATA #IMPLIED
match (perfect | equivalent | compatible | greaterOrEqual) "compatible"
export (true | false) "false"
optional (true | false) "false"
>
°¢ Á¾¼Ó¼ºÀº <import> ¿ä¼Ò¸¦ »ç¿ëÇÏ¿© ÁöÁ¤µË´Ï´Ù. ÀÌ ¿ä¼Ò¿¡´Â ´ÙÀ½ ¼Ó¼ºÀÌ Æ÷ÇԵ˴ϴÙ.
ManifestÀÇ <runtime> ¼½¼Ç¿¡´Â Ç÷¯±×ÀÎ ·±Å¸ÀÓÀ» ±¸¼ºÇÏ´Â Çϳª ÀÌ»óÀÇ ¶óÀ̺귯¸® Á¤Àǰ¡ Æ÷ÇԵ˴ϴ٠ÂüÁ¶µÈ ¶óÀ̺귯¸®´Â Ç÷§Æû ½ÇÇà ¸ÞÄ¿´ÏÁò(Ç÷¯±×ÀΠŬ·¡½º ·Î´õ)¿¡¼ ÇØ´ç Ç÷¯±×Àο¡ ÇÊ¿äÇÑ ¿Ã¹Ù¸¥ Äڵ带 ·ÎµåÇÏ°í ½ÇÇàÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù.
<!ELEMENT runtime (library+)> <!ELEMENT library (export*, packages?)> <!ATTLIST library name CDATA #REQUIRED type (code | resource) "code" > <!ELEMENT export EMPTY> <!ATTLIST export name CDATA #REQUIRED > <!ELEMENT packages EMPTY> <!ATTLIST packages prefixes CDATA #REQUIRED >
<runtime> ¿ä¼Ò¿¡´Â ¼Ó¼ºÀÌ ¾ø½À´Ï´Ù.
<library> ¿ä¼Ò´Â Ç÷¯±×ÀÎ ·±Å¸ÀÓÀ» Á¾ÇÕÀûÀ¸·Î Á¤ÀÇÇÕ´Ï´Ù. Àû¾îµµ ÇϳªÀÇ <library>°¡ ÁöÁ¤µÇ¾î¾ß ÇÕ´Ï´Ù. °¢ <library> ¿ä¼Ò¿¡´Â ´ÙÀ½ ¼Ó¼ºÀÌ ÀÖ½À´Ï´Ù.
°¢ <library> ¿ä¼Ò¿¡¼´Â ³»º¸³»¾ß ÇÏ´Â ¶óÀ̺귯¸® ºÎºÐÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ³»º¸³»±â ±ÔÄ¢Àº ÀÏ·ÃÀÇ ³»º¸³»±â ¸¶½ºÅ©·Î ÁöÁ¤µË´Ï´Ù. ±âº»ÀûÀ¸·Î(³»º¸³»±â ±ÔÄ¢ÀÌ ÁöÁ¤µÇÁö ¾ÊÀ½) ¶óÀ̺귯¸®´Â °³ÀοëÀ¸·Î °£Áֵ˴ϴÙ. <export> ¿ä¼Ò¿¡´Â ´ÙÀ½ ¼Ó¼ºÀÌ ÀÖ½À´Ï´Ù.
Ç÷§ÆûÀÇ ¾ÆÅ°ÅØÃ³´Â ±¸¼º °¡´ÉÇÑ È®ÀåÁ¡ÀÇ °³³äÀ» ±â¹ÝÀ¸·Î ÇÕ´Ï´Ù. Ç÷§Æû ÀÚü¿¡¼´Â Ç÷§Æû ¹× µ¥½ºÅ©Å¾¿¡ ´ëÇÑ È®Àå Ÿ½ºÅ©(¿¹: ¸Þ´º Á¶Ä¡ Ãß°¡, ÀÓº£µåµÈ ÆíÁý±â Á¦°ø)¸¦ ´Ù·ç´Â ÀÏ·ÃÀÇ È®ÀåÁ¡À» ¹Ì¸® Á¤ÀÇÇÕ´Ï´Ù. ¹Ì¸® Á¤ÀÇµÈ È®ÀåÁ¡ ¿Ü¿¡, Á¦°øµÈ °¢ Ç÷¯±×Àο¡¼ Ãß°¡ È®ÀåÁ¡À» ¼±¾ðÇÒ ¼öµµ ÀÖ½À´Ï´Ù. º»ÁúÀûÀ¸·Î Ç÷¯±×ÀÎÀº È®ÀåÁ¡À» ¼±¾ðÇÔÀ¸·Î½á ¿ÜºÎ¿¡¼ Á¦°øµÇ´Â È®Àå°ú ÇÔ²² Ç÷¯±×ÀÎ ±â´ÉÀ» ±¸¼ºÇÏ´Â ±â´ÉÀ» °ø°³ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ÆäÀÌÁö ºô´õ Ç÷¯±×Àο¡¼´Â ºô´õ ÆÈ·¹Æ®¿¡ »õ DTS(Design Time Control)¸¦ Ãß°¡Çϱâ À§ÇÑ È®ÀåÁ¡À» ¼±¾ðÇÒ ¼ö ÀÖ½À´Ï´Ù. µû¶ó¼ ÆäÀÌÁö ºô´õ¿¡¼´Â DTCÀÇ Àǹ̿¡ ´ëÇÑ ¾ÆÅ°ÅØÃ³¸¦ Á¤ÀÇÇϰí È®ÀåÁ¡À¸·Î ±¸¼ºµÈ DTC È®ÀåÀ» ã´Â Äڵ带 ±¸ÇöÇß½À´Ï´Ù.
<!ELEMENT extension-point EMPTY> <!ATTLIST extension-point name CDATA #REQUIRED id CDATA #REQUIRED schema CDATA #IMPLIED >
<extension-point> ¿ä¼Ò¿¡´Â ´ÙÀ½ ¼Ó¼ºÀÌ ÀÖ½À´Ï´Ù.
½ÇÁ¦ È®ÀåÀº <extension> ¼½¼Ç¿¡¼ È®ÀåÁ¡(ÀÌ Ç÷¯±×Àο¡¼ ¹Ì¸® Á¤Àǵǰųª »õ·Î ¼±¾ðµÈ È®ÀåÁ¡)À¸·Î ±¸¼ºµË´Ï´Ù. ±¸¼º Á¤º¸´Â <extension> ÅÂ±×¿Í </extension> ÅÂ±× »çÀÌ¿¡¼ Á¦´ë·Î ±¸¼ºµÈ XML·Î ÁöÁ¤µË´Ï´Ù. Ç÷§Æû¿¡¼´Â Á¦´ë·Î ±¸¼ºµÈ XML¿¡ ÇʼöÀûÀÎ °Í ÀÌ¿ÜÀÇ ±¸¼º ¸¶Å©¾÷¿¡ ´ëÇÑ ½ÇÁ¦ ¾ç½ÄÀ» ÁöÁ¤ÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ ¸¶Å©¾÷Àº È®ÀåÁ¡À» ¼±¾ðÇÑ Ç÷¯±×ÀÎÀÇ °ø±ÞÀÚ¿¡ ÀÇÇØ Á¤Àǵ˴ϴÙ. Ç÷§Æû¿¡¼´Â ±¸¼º ¸¶Å©¾÷À» ½ÇÁ¦·Î ÇØ¼®ÇÏÁö ¾ÊÀ¸¸ç, È®ÀåÁ¡ ³í¸®°¡ ±¸¼ºµÈ ¸ðµç È®ÀåÀ» Á¶È¸ÇÒ ¶§ È®ÀåÁ¡ ó¸®ÀÇ ÀϺηΠ±¸¼º Á¤º¸¸¦ Ç÷¯±×Àο¡ Àü´ÞÇÕ´Ï´Ù.
<!ELEMENT extension ANY> <!ATTLIST extension point CDATA #REQUIRED id CDATA #IMPLIED name CDATA #IMPLIED >
<extension> ¿ä¼Ò¿¡´Â ´ÙÀ½ ¼Ó¼ºÀÌ ÀÖ½À´Ï´Ù.
Áß¿ä: <extension> ¿ä¼ÒÀÇ ÄÁÅÙÃ÷´Â ANY ±ÔÄ¢À» »ç¿ëÇÏ¿© ¼±¾ðµË´Ï´Ù. µû¶ó¼ Á¦´ë·Î ±¸¼ºµÈ XMLÀº È®Àå ±¸¼º ¼½¼Ç(<extension>°ú </extension> ÅÂ±× »çÀÌ) ³»¿¡¼ ÁöÁ¤µÉ ¼ö ÀÖ½À´Ï´Ù.
´ÜÆíÀº Ç÷¯±×ÀÎÀÇ ¹üÀ§¸¦ Áõ°¡½ÃŰ´Â µ¥ »ç¿ëµË´Ï´Ù. ´Ù¸¥ ¾ð¾î¿¡¼ ·¹ÀÌºí ¶Ç´Â ¸Þ½ÃÁö¿Í °°ÀÌ µ¥ÀÌÅ͸¦ ÅëÇÕÇÏ´Â °ÍÀÌ ¿¹°¡<?xml encoding="US-ASCII"?> <!ELEMENT fragment (requires?, runtime?, extension-point*, extension*)> <!ATTLIST fragment name CDATA #REQUIRED id CDATA #REQUIRED version CDATA #REQUIRED provider-name CDATA #IMPLIED plugin-id CDATA #REQUIRED plugin-version CDATA #REQUIRED match (perfect | equivalent | compatible | greaterOrEqual) "compatible" >
°¢ fragment´Â ƯÁ¤ Ç÷¯±×Àΰú ¿¬°üµÇ¾î ÀÖ¾î¾ß ÇÕ´Ï´Ù. ¿¬°üµÈ Ç÷¯±×ÀÎÀº <plugin-id>, <plugin-version> ±×¸®°í ¼±ÅÃÀûÀ¸·Î <match>·Î ½Äº°ÇÕ´Ï´Ù. ¿©±â¼ ÁöÁ¤ÇÑ »çÇ×ÀÌ Çϳª ÀÌ»óÀÇ Ç÷¯±×Àΰú ÀÏÄ¡ÇÒ °æ¿ì °¡Àå ³ôÀº ¹öÀü ¹øÈ£ÀÇ ÀÏÄ¡ÇÏ´Â Ç÷¯±×ÀÎÀÌ »ç¿ëµË´Ï´Ù.
fragmentÀÇ <requires>, <runtime>, <extension-point>, <extension> ±¸¼º¿ä¼Ò´Â ÀÏÄ¡ÇÏ´Â Ç÷¯±×Àο¡ ³í¸®ÀûÀ¸·Î Ãß°¡µË´Ï´Ù.<fragment> ¼Ó¼ºÀº ´ÙÀ½°ú °°½À´Ï´Ù.