2009-10-30 14 views
37

से जावाडोक कैसे शामिल है मैं वर्तमान में एक एक्सएमएल स्कीमा के साथ काम कर रहा हूं जिसमें अधिकांश प्रकार और तत्वों पर <xsd:annotation>/<xsd:documentation> है। जब मैं इस एक्सएमएल स्कीमा से जावा बीन्स उत्पन्न करता हूं, तो उन बीन्स के जावाडोक में केवल प्रकार/तत्व की अनुमत सामग्री के बारे में कुछ सामान्य जेनरेट की गई जानकारी होती है।जेनरेट क्लास बनाने के लिए एक्सएमएल स्कीमा प्रलेखन

मैं प्रासंगिक स्थानों में <xsd:documentation> टैग की सामग्री देखना चाहता हूं (उदाहरण के लिए उस टैग की सामग्री को पूर्ण प्रकार के लिए उस जटिल सामग्री का प्रतिनिधित्व करने के लिए उत्पन्न वर्ग के जावाडोक में दिखाना चाहिए)।

क्या यह हासिल करने का कोई तरीका है?

संपादित करें: यह एक्सएमएल स्कीमा का उपयोग डब्ल्यूएसडीएल में जेएक्स-डब्ल्यूएस के साथ किया जाएगा, इसलिए यह टैग भी उचित हो सकता है।

संपादित करें 2: मैंने <jxb:javadoc> पढ़ा है। जो मैं समझता हूं उससे मैं निर्दिष्ट कर सकता हूं कि या तो एक अलग जेएक्सबी बाइंडिंग फ़ाइल में या सीधे एक्सएमएल स्कीमा में। यह लगभग मेरी समस्या को हल करेगा। लेकिन मैं मौजूदा <xsd:documentation> टैग का उपयोग करना चाहता हूं, क्योंकि जावाडोक दस्तावेज का प्राथमिक लक्ष्य नहीं है (यह मुख्य रूप से डेटा संरचना के बारे में जानकारी है और इससे उत्पन्न जावा बीन्स के बारे में नहीं है) और गैर-जेएक्सबी उपकरण को जानकारी तक पहुंचने की अनुमति देने के लिए भी। <jxb:javadoc> और xsd:documentation> दोनों में प्रलेखन प्रदान करना गलत लगता है, क्योंकि मैं किसी भी अच्छे कारण के लिए डेटा (और काम) को डुप्लिकेट कर रहा हूं।

संपादित 3: पास्कल द्वारा जवाब मुझे एहसास हुआ कि मैं पहले से ही आधा एक समाधान है के लिए धन्यवाद: complexType के <xsd:documentation> अपने जावाडोक की शुरुआत करने के लिए लिखा है! समस्या अभी भी है कि केवल कि complexType एस का उपयोग किया जाता है और simpleType एस (जो एक वर्ग में भी परिणाम हो सकता है) और तत्व अभी भी जावाडोक-कम हैं।

+0

एक विकल्प का उपयोग कर रहा है? –

+1

@ पास्कल: धन्यवाद, मैंने जवाब में जवाब दिया है। –

उत्तर

31

को छोड़कर जावा स्रोत में रखने के लिए नियमित रूप से xsd:documentation प्राप्त करने में कभी भी सक्षम नहीं हुआ है और केवल यह एक जटिल प्रकार था। तत्वों, सरल प्रकारों, आदि के लिए प्रलेखन को अनदेखा किया जाता है।

तो, मैं jxb:javadoc का उपयोग कर समाप्त करता हूं। ऐसा करने के लिए, अपने <xsd:schema> तत्व में xmlns:jxb="http://java.sun.com/xml/ns/jaxb" की परिभाषा शामिल करें।

<xsd:complexType> या <xsd: element> या <xsd:attribute> लिए एक बच्चे जोड़ें:

<xsd:annotation><xsd:appinfo><jxb:XXX><jxb:javadoc> 
    This is my comment for a class/property 
</jxb:javadoc></jxb:XXX></xsd:appinfo></xsd:annotation> 

कहाँ XXX या तो "वर्ग" या "संपत्ति" है।

एक पैकेज आप xsd:schema लिए एक बच्चे लिखने के लिए

<xsd:annotation><xsd:appinfo><jxb:schemaBindings><jxb:package name="com.acme"><jxb:javadoc> 
    This is my comment for a package 
</jxb:javadoc></jxb:package></jxb:schemaBindings></xsd:appinfo></xsd:annotation> 

लेखन HTML दस्तावेज़ <![CDATA[ --- ]]>

(संपादित साथ bracketing की आवश्यकता है: एक ओर जहां मेरा उत्तर लेखन, सवाल ओपी तो मैं द्वारा संपादित किया गया है मैं इसे तदनुसार अद्यतन कर रहा हूं)

मेरे मामले में, जावाडोक एकमात्र लक्ष्य था इसलिए jxb:javadoc का उपयोग करने के लिए स्वीकार्य था। लेकिन आपका अपडेट सही समझ में आता है और, वास्तव में, मैं पूरी तरह से आपसे सहमत हूं।अफसोस की बात है, मैंने आपके द्वारा वर्णित स्थिति के लिए कभी भी एक आदर्श समाधान नहीं पाया है (इसलिए मैं इस प्रश्न का बहुत सावधानीपूर्वक पालन करूंगा)। शायद आप xsd:documentation से दस्तावेज़ उत्पन्न करने के लिए xframe जैसे कुछ का उपयोग कर सकते हैं, लेकिन यह सवाल का जवाब नहीं देता है।

+0

एचएम, मुझे एहसास नहीं हुआ कि (कम से कम) 'जटिल टाइप' जावाडोक प्राप्त करें। यह एक छोटा कदम है जो मुझे पसंद है, लेकिन अभी भी सही नहीं है। –

+0

http://glassfish.10926.n7.nabble.com/newbe-how-can-I-generate-javadoc-from-the-chechema-documentation-td59525.html –

10

यह जेएक्सबी संदर्भ कार्यान्वयन के साथ संभव नहीं है। यहां तक ​​कि यदि आप एक्सजेसी प्लगइन लिखने की कोशिश कर रहे थे, तो आप पाएंगे कि प्लगइन एपीआई को स्कीमा परिभाषा का कोई संदर्भ नहीं दिया गया है, इसलिए इस जानकारी को निकालने का कोई तरीका नहीं है।

हमारी एकमात्र उम्मीद यह है कि जेएक्सबी का भविष्य संस्करण स्थिति को हल करता है। open feature request here है।

+0

लिंक को लॉगिन की आवश्यकता है। '' :-( –

2

मुझे निम्न तत्व जावा तत्व वर्गों (एक्सएमएल स्कीमा से उत्पन्न) में जावाडोक हेडर जोड़ने के लिए बहुत अच्छी तरह से काम करते हैं। मैं जैक्स-बी नेमस्पेस में परिभाषित टैग में जावाडॉक घोंसला करता हूं, जो एक्सएमएल स्कीमा एनोटेशन और एपिनोफो टैग के भीतर घोंसला है। ध्यान दें जैक्सबी नेमस्पेस दस्तावेज टैग के प्रकार को परिभाषित करता है; मैं वहां दो का उपयोग करता हूं: कक्षा और संपत्ति टैग। निम्नलिखित नामस्थान में परिभाषित: xmlns: jxb = "http://java.sun.com/xml/ns/jaxb"

1) कक्षा को दस्तावेज करने के लिए, मैं निम्नलिखित अनुक्रम में एक जैक्सबी "वर्ग" टैग का उपयोग करता हूं :

<xs:complexType name="Structure"> 
    <xs:annotation> 
     <xs:appinfo> 
      <jxb:class> 
       <jxb:javadoc> 
       Documentation text goes here. Since parsing the schema 
       into Java involves evaluating the xml, I escape all 
       the tags I use as follows &lt;p&gt; for <p>. 
       </jxb:javadoc> 
      </jxb:class> 
     </xs:appinfo> 
    </xs:annotation> 

    . 
    . 
    . 
    </xs:complexType> 

2) एक तत्व दस्तावेज़ के लिए, मैं "संपत्ति" टैग का उपयोग इस प्रकार है:

 <xs:element name="description" type="rep:NamedString"> 
      <xs:annotation> 
      <xs:appinfo> 
       <jxb:property> 
        <jxb:javadoc> 
         &lt;p&gt;Documentation goes here.&lt;/p&gt; 
        </jxb:javadoc> 
       </jxb:property> 
      </xs:appinfo> 
      </xs:annotation> 
     </xs:element> 

3) मैं टैग के एक ही सेट का उपयोग विशेषताओं दस्तावेज़ के लिए:

 <xs:attribute name="name" type="xs:NCName" use="required"> 
      <xs:annotation> 
      <xs:appinfo> 
       <jxb:property> 
        <jxb:javadoc> 
         &lt;p&gt;Documentation goes here.&lt;/p&gt; 
        </jxb:javadoc> 
       </jxb:property> 
      </xs:appinfo> 
      </xs:annotation> 
     </xs:attribute> 

4) किसी विकल्प को दस्तावेज़ित करने के लिए, मैं संपत्ति जैक्सबी टैग का उपयोग करता हूं, और मैं पसंद को दस्तावेज करता हूं।

<xs:choice maxOccurs="unbounded"> 
      <xs:annotation> 
      <xs:appinfo> 
       <jxb:property> 
        <jxb:javadoc> 
         &lt;p&gt;Documentation goes here.&lt;/p&gt; 
        </jxb:javadoc> 
       </jxb:property> 
      </xs:appinfo> 
      </xs:annotation> 

      <xs:element name="value" type="rep:NamedValue" /> 
      <xs:element name="list" type="rep:NamedList" /> 
      <xs:element name="structure" type="rep:NamedStructure" /> 
     </xs:choice> 

यहां अलग-अलग विकल्पों दस्तावेज़ के लिए विफल हो जाएगा इस टैग के बाद से, प्रयास कर रहा है एक untyped सूची पैदा करता है।

संबंधित मुद्दे