ÀÌÀü¿¡´Â ÀϺΠÀÀ¿ëÇÁ·Î±×·¥ÀÇ ÄÁÅØ½ºÆ® ¸Þ´º°¡ ƯÁ¤ ¸Þ´º ¿É¼ÇÀÇ Á¦¿Ü·Î ÀÎÇØ Á¦ÇѵǾú½À´Ï´Ù. ±×·¡¼ ¼±ÅÃµÈ ÀÚ¿ø ¼ö, ½ÇÁ¦ ÆÄÀÏ À̸§, ÀÚ¿ø À¯Çü µî°ú °°Àº ¾Ë·ÁÁø ÁÖº¯ Á¤º¸¸¦ ±â¹ÝÀ¸·Î Çß½À´Ï´Ù. ÀϺÎÀÇ °æ¿ì ÀÚ¿ø ÄÁÅÙÃ÷¿¡ ´ëÇØ Á¦ÇÑµÈ ¾çÀÇ Á¤º¸°¡ ¾Ë·ÁÁ³°í ÀÌ·Î ÀÎÇØ »ç¿ëÇÏÁö ¾Ê´Â ¸Þ´º ¿É¼ÇÀÌ »ó´çÈ÷ ÁÙ¾ú½À´Ï´Ù. Ant ½ºÅ©¸³Æ®¸¦ Æ÷ÇÔÇÏ´Â XML ÆÄÀϰú °°Àº Á¤º¸´Â Á¶Ä¡°¡ XML ÆÄÀÏÀÇ ÇÑ À¯Çü¿¡´Â Àû¿ë °¡´ÉÇÏÁö¸¸ ´Ù¸¥ À¯Çü¿¡´Â Àû¿ëÇÒ ¼ö ¾ø´Â ¿©·¯ »óȲÀÌ ÀÖÀ» ¶§ XML ÆÄÀÏ¿¡¼ À¯¿ëÇÏ°Ô »ç¿ëµÉ ¼ö ÀÖ½À´Ï´Ù. Á¶Ä¡ Ant ½ÇÇà...ÀÌ ÄÁÅØ½ºÆ® ¸Þ´º¿¡¼´Â ³í¸®ÀûÀÌÁö¸¸ Ç÷¯±×ÀÎÀ» Á¤ÀÇÇÏ´Â µ¥ »ç¿ëµÇ´Â XML ÆÄÀÏ¿¡´Â Àû¿ë °¡´ÉÇÑ Á¶Ä¡°¡ ¾Æ´Õ´Ï´Ù.
org.eclipse.core.runtime.contentTypes È®ÀåÁ¡À» Ãß°¡Çϸé Eclipse´Â Ç÷¯±×ÀÎÀÌ Ç÷§Æû ÄÁÅÙÃ÷ À¯Çü īŻ·Î±×¿¡ Á¦°øÇÒ ¼ö ÀÖ´Â 'ÄÁÅÙÃ÷ À¯Çü'À» Á¦°øÇϸç, ´õ ³ª¾Æ°¡¼´Â ÄÁÅÙÃ÷ À¯Çü ¼³¸íÀÚ¶ó´Â Ŭ·¡½ºµµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. °íÀ¯ ÄÁÅÙÃ÷ À¯ÇüÀ» Á¦°øÇÏ´Â °³¹ßÀÚÀÇ °æ¿ì »ç¿ëÀÚ Á¤ÀÇÇÒ ¼ö ÀÖ´Â µÎ °³ÀÇ ³»ÀåÇü ÄÁÅÙÃ÷ À¯Çü ¼³¸íÀÚ¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. Áï, BinarySignatureDescriber(2Áø ÄÁÅÙÃ÷ À¯Çü¿ë) ¹× XMLRootElementContentDescriber(XML ±â¹Ý ÄÁÅÙÃ÷ À¯ÇüÀÇ ÅØ½ºÆ®¿ë)°¡ ÀÖ½À´Ï´Ù. ¶ÇÇÑ Ç÷¯±×ÀÎ Á¦°øÀÚ´Â °íÀ¯ ÄÁÅÙÃ÷ ¼³¸íÀÚ¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº Ç÷§Æû Ç÷¯±×ÀÎ °³¹ßÀÚ ¾È³»¼(ÇÁ·Î±×·¡¸Ó ¾È³»¼ > ·±Å¸ÀÓ °³¿ä > ÄÁÅÙÃ÷ À¯Çü)¸¦ ÂüÁ¶ÇϽʽÿÀ.
ÀÌÁ¦´Â Á¦°øµÈ ÃÖ»óÀ§ ·¹º§ űװ¡ Àְųª ÁÖ¾îÁø DTD¸¦ ÁöÁ¤ÇÏ´Â XML ÆÄÀÏ¿¡ ƯÁ¤ÇÑ ¿ÀºêÁ§Æ® Áö½Ã¹®À» Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù. À̸¦ ¼öÇàÇÏ·Á¸é XMLRootElementContentDescriber ¼³¸íÀÚ Å¬·¡½º ¹× ÃÖ»óÀ§ ·¹º§ ÅÂ±× À̸§ ¶Ç´Â DTD À̸§À» ´ÙÀ½°ú °°ÀÌ Ç¥½ÃÇÏ´Â ¸Å°³º¯¼ö¸¦ »ç¿ëÇÏ¿© È®ÀåÀ» org.eclipse.core.runtime.contentTypes È®ÀåÁ¡À¸·Î Á¤ÀÇÇϽʽÿÀ.
<extension point="org.eclipse.core.runtime.contentTypes"> <content-type id=<id> name=<name> base-type="org.eclipse.core.runtime.xml"> <describer class="org.eclipse.core.runtime.content.XMLRootElementContentDescriber"> <parameter name="element" value=tagValue /> </describer> </content-type> </extension>¶Ç´Â
<extension point="org.eclipse.core.runtime.contentTypes"> <content-type id=<id> name=<name> base-type="org.eclipse.core.runtime.xml"> <describer class="org.eclipse.core.runtime.content.XMLRootElementContentDescriber"> <parameter name="dtd" value=dtdValue /> </describer> </content-type> </extension>
¿©±â¼ tagValue´Â ÀÏÄ¡ÇÏ´Â ÃÖ»óÀ§ ·¹º§ ű×ÀÇ À̸§À» Ç¥½ÃÇϰídtdValue´Â XML ÆÄÀÏ¿¡ Ç¥½ÃµÈ ´ë·Î DTDÀÇ À̸§À» Ç¥½ÃÇÕ´Ï´Ù.
plugin.xml ÆÄÀÏÀÇ ´ÙÀ½ ¿ÀºêÁ§Æ® Áö½Ã¹®À» °í·ÁÇϽʽÿÀ.
<extension point="org.eclipse.core.runtime.contentTypes"> <content-type id="topElementContentType" name="Tests top-level element recognition" base-type="org.eclipse.core.runtime.xml" priority="high"> <describer class="org.eclipse.core.runtime.content.XMLRootElementContentDescriber"> <parameter name="element" value="myTag" /> </describer> </content-type> </extension> <extension point="org.eclipse.core.runtime.contentTypes"> <content-type id="dtdContentType" name="Tests dtd element recognition" base-type="org.eclipse.core.runtime.xml" priority="high"> <describer class="org.eclipse.core.runtime.content.XMLRootElementContentDescriber"> <parameter name="dtd" value="myDTD.xml" /> </describer> </content-type> </extension>
<extension point="org.eclipse.ui.popupMenus"> <objectContribution id="org.eclipse.ui.examples.objectContributions" objectClass="org.eclipse.core.resources.IFile" nameFilter="*.xml"> <visibility> <or> <objectState name="contentTypeId" value="org.eclipse.ui.examples.topElementContentType"/> <objectState name="contentTypeId" value="org.eclipse.ui.examples.dtdContentType"/> </or> </visibility> <action id="org.eclipse.ui.examples.objectContributions.action1" label="%PopupMenus.action" icon="icons/ctool16/openbrwsr.gif" menubarPath="additions" class="org.eclipse.ui.examples.objectContributions.PopupMenuActionDelegate" enablesFor="1"> </action> </objectContribution> </extension>
myTag°¡ ÃÖ»óÀ§ ·¹º§ XML ű׷ΠÆ÷ÇԵǾî Àְųª myDTD.xmlÀ̶ó´Â DTD¸¦ »ç¿ëÇÏ´Â °æ¿ì À̸§ÀÌ *.xml°ú ÀÏÄ¡ÇÏ´Â IFile¿¡¼ action1À» ãÀ» ¼ö ÀÖ½À´Ï´Ù. µû¶ó¼ ´ÙÀ½ XML ÆÄÀϰú ÀÏÄ¡ÇÕ´Ï´Ù.
<?xml version="1.0" encoding="UTF-8"?> <myTag id="org.eclipse.ui.workbench" name="%pluginName" version="3.0.0" provider-name="%providerName" class="org.eclipse.ui.internal.WorkbenchPlugin"> </myTag>
¶Ç´Â
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE Book SYSTEM "myDTD.xml"> <fragment id="org.eclipse.ui.workbench" name="%pluginName" version="3.0.0" provider-name="%providerName" class="org.eclipse.ui.internal.WorkbenchPlugin"> <runtime> <library name="workbench.jar"> <export name="*"/> <packages prefixes="org.eclipse.ui, org.eclipse.jface"/> </library> </runtime> </fragment>
BinarySignatureDescriber´Â ÆÄÀÏ ³»ÀÇ Á¦°øµÈ ¿ÀÇÁ¼Â¿¡¼ ÁöÁ¤µÈ 2Áø 'signature'¸¦ ¹ß°ßÇÏ´Â ÄÁÅÙÃ÷ ¼³¸íÀÚÀÔ´Ï´Ù. ÀÌ ¼³¸íÀÚ´Â "element" ¶Ç´Â "dtd" ´ë½Å¿¡ "signature", "offset" ¹× "required" ¸Å°³º¯¼ö¸¦ »ç¿ëÇÏ´Â °ÍÀ» Á¦¿ÜÇϰí´Â XMLRootElementContentDescriber¿Í µ¿ÀÏÇÑ ¹æ½ÄÀ¸·Î »ç¿ëµË´Ï´Ù. BinarySignatureDescriberÀÇ Javadoc¿¡´Â ÀÌ ÄÁÅÙÃ÷ ¼³¸íÀÚÀÇ Å¬·¡½º »ç¿ë¹ý¿¡ ´ëÇÑ Àüü ¼¼ºÎ»çÇ×ÀÌ ÀÖ½À´Ï´Ù.