2012-03-16 13 views
6

मैं एक एसओएपी webservice पर काम कर रहा हूं जिसमें गणना प्रतिबंधों का उपयोग करके कई इनपुटफील्ड हैं।कुंजी/मूल्य जोड़े के साथ डब्ल्यूएसडीएल गणना प्रतिबंध

ये गणनाएं HTML चयन/विकल्प सेटअप की तरह हैं; मैं उम्मीद करता हूं कि एक निश्चित मूल्य वापस लौटाया जाए लेकिन उस मूल्य के लेबल को डब्लूएसडीएल का उपयोग करके उजागर किया जाना चाहिए।

एक उदाहरण: ग्राहक अपने घर के संबंध में बीमा पॉलिसी जोड़ना चाहता है और इस प्रकार इसमें शामिल इमारत के प्रकार को निर्दिष्ट करने की आवश्यकता है।

<xsd:restriction base="xsd:string"> 
    <xsd:enumeration value="00001" /> 
    <xsd:enumeration value="00002" /> 
    <xsd:enumeration value="00003" /> 
</xsd:restriction> 

हालांकि, क्लाइंट अभी तक समझ में नहीं आता है कि ये मान 1, 2 और 3 क्या हैं। तो, इस तरह कुछ:

<xsd:restriction base="xsd:string"> 
    <xsd:enumeration value="00001" label="Brick and mortar" /> 
    <xsd:enumeration value="00002" label="Straw" /> 
    <xsd:enumeration value="00003" label="Aircastle" /> 
</xsd:restriction> 

उपभोक्ता को इन लेबलों को प्रदर्शित करने के लिए क्लाइंट का उपयोग करने के लिए बहुत अच्छा होगा।

क्या इस निर्माण के लिए कोई मानक डब्लूएसडीएल एनोटेशन/वाक्यविन्यास है?

उत्तर

6

क्या इस निर्माण के लिए कोई मानक डब्लूएसडीएल एनोटेशन/वाक्यविन्यास है?

मुझे डर नहीं है। XML स्कीमा enumeration का उपयोग किसी मान को संभावित मानों के निर्दिष्ट सेट के भीतर रखने के लिए किया जाता है। जब आपका ग्राहक आपको अनुरोध भेजता है, तो प्रतिबंध प्रकार वाले तत्व को केवल 00001, 00002 या 00003 के मूल्य (आपके मामले में) होने की अनुमति होगी या यह मान्य नहीं होगा।

प्रतिबंध केवल मान निर्दिष्ट करता है, आप लेबल जोड़ नहीं सकते हैं। आप सबसे अच्छे <annotation> जोड़ सकते हैं लेकिन यह सिर्फ प्रलेखन होगा। क्लाइंट यूआई में, प्रत्येक ग्राहक की यह जिम्मेदारी होगी कि 00001 वास्तव में "ईंट और मोर्टार" है और 00002 "स्ट्रॉ" आदि है।

यदि आप ऐसा नहीं करना चाहते हैं, और इसके बजाय चाहते हैं भी लेबल वापस जाने के लिए है, तो आप एक से थोड़ा अधिक जटिल वस्तु, हो सकता है कुछ इस तरह की जरूरत है:

<option> 
    <key>00001</key> 
    <label>Brick and mortar</label> 
</option> 

आप एक लेबल प्रदान करते हैं और आप की तरह एक स्कीमा के साथ कुंजी को प्रतिबंधित:

<xsd:simpleType name="ValuesType"> 
    <xsd:restriction base="xsd:string"> 
    <xsd:enumeration value="00001" /> 
    <xsd:enumeration value="00002" /> 
    <xsd:enumeration value="00003" /> 
    </xsd:restriction> 
</xsd:simpleType> 

<xsd:complexType name="OptionType"> 
    <xsd:sequence> 
     <xsd:element name="key" type="ValuesType" /> 
     <xsd:element name="label" type="xsd:string" /> 
    </xsd:sequence> 
</xsd:complexType> 

आप लौट सकते हैं ग्राहकों के विकल्पों की एक सूची और वे इसे इंटरफेस में पेश कर सकते हैं key मूल्य के रूप में label<select> इनपुट में विकल्पों के पाठ के रूप में, अनुरोध पर आप चयनित मूल्य वापस प्राप्त करेंगे (यानी। चयनित key)।

+0

मैं "ValuesTypes" जैसे से पहले "tns:" जोड़कर इसे काम करने में कामयाब रहा। – BMaximus

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