¹öÀü 2.0 - 2002³â 6¿ù 25ÀÏ¿¡ ¸¶Áö¸·À¸·Î °³Á¤
¾Æ·¡ÀÇ 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*)>
<!ATTLIST library
name CDATA #REQUIRED
type (code | resource) "code"
>
<!ELEMENT export EMPTY>
<!ATTLIST export
name 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> ÅÂ±× »çÀÌ) ³»¿¡¼ ÁöÁ¤µÉ ¼ö ÀÖ½À´Ï´Ù.
fragment¸¦ »ç¿ëÇÏ¿© Ç÷¯±×ÀÎÀÇ ¹üÀ§¸¦ ´Ã¸³´Ï´Ù. ¿¹·Î¼´Â ¸Þ½ÃÁö³ª ·¹ÀÌºí °°Àº µ¥ÀÌÅ͸¦ ´Ù¸¥ ¾ð¾î·Î ÅëÇÕÇÏ´Â °ÍÀÔ´Ï´Ù.
<?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> ¼Ó¼ºÀº ´ÙÀ½°ú °°½À´Ï´Ù.